Qwen3.8 LiveTranslate Flash Realtime

Qwen3.8 LiveTranslate Flash Realtime
Alibaba Cloud · Audio Generation
WEBSOCKET /v1/realtime

Simultaneous spoken translation over a WebSocket. Set the target language, then speak; the model replies in that language with text and audio.

At a glance

FieldValue
Model idqwen3-8-livetranslate-flash-realtime
Model release date2026-09-17
Input modalitiesAudio, Text
Output modalitiesAudio, Text
Context window53K
Weight precision-
Max output tokens4,096
RegionSingapore
Featuresrealtime, speech_to_speech, audio_in, audio_out, multilingual
Native inferenceNo
NewYes
Supported endpointsWEBSOCKET /v1/realtime
Alternate model idsqwen3.8-livetranslate-flash-realtime, alibaba/qwen3-8-livetranslate-flash-realtime

Pricing

ChargeSpecRate
Input: audioper 1M audio input tokens$15.00
Inputper 1M prompt tokens$1.10
Outputper 1M generated tokens$40.00
Output: audioper 1M generated audio tokens$60.00

Example request

import asyncio, json, os, base64, websockets
URL = "wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime"
async def main():
async with websockets.connect(
URL,
additional_headers=[("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}")],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
await ws.send(json.dumps({
"type": "session.update",
"session": {
"voice": "Tina",
"translation": {"language": "en"},
"modalities": ["text", "audio"],
},
}))
for chunk in read_microphone_chunks():
await ws.send(json.dumps({
"type": "input_audio_buffer.append",
"audio": base64.b64encode(chunk).decode(),
}))
async for raw in ws:
event = json.loads(raw)
if event["type"] == "response.audio.delta":
... # base64 audio chunk
elif event["type"] == "response.done":
break
asyncio.run(main())

Parameters

ParameterTypeRequiredDefaultDescription
voiceenumno"Tina"Speaking voice for the translated audio. Set it with session.update before the model produces any audio. · Allowed: Tina, Serena, Ethan, Cindy
target_languageenumyes"en"Language the model translates into. Required. Set it with session.update before you send audio. · Allowed: zh, en, ar, de, fr, es, pt, id, it, ko, ru, th, vi, ja, tr, hi, ms, nl, ur, nb, sv, da, he, fi, pl, is, cs, fil, fa
source_languageenumno"auto"Language you are speaking. Leave auto to let the model detect it. · Allowed: auto, zh, en, ar, de, fr, es, pt, id, it, ko, ru, th, vi, ja, tr, hi, ms, nl, ur, nb, sv, da, he, fi, pl, is, cs, fil, fa
modalitiesstringno["text", "audio"]Which output types the model returns for a turn. Drop audio for a text-only translation.
input_audio_formatenumno"pcm"Encoding of the audio you append to the input buffer: base64 16-bit PCM. · Allowed: pcm
output_audio_formatenumno"pcm"Encoding of the audio the model streams back: base64 16-bit PCM. · Allowed: pcm

Notes

Spoken translation over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime, authenticated with the ordinary Authorization Bearer header. Set the target language with session.update before you send audio. Use a voice this model accepts, or leave the default Tina. Audio and text tokens are priced separately, and each completed turn is billed on its own from the usage the model reports.


Machine-readable schema: GET https://api.empiriolabs.ai/v1/models/qwen3-8-livetranslate-flash-realtime.