Skip to navigation

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 window48K
Weight precision-
Max output tokens4,096
RegionSingapore
Featuresrealtime, speech_to_speech, audio_in, audio_out, multilingual, voice_cloning
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. Not used while voice_clone is once or always. · Allowed: Tina, Serena, Ethan, Cindy
target_languageenumno"en"Language the model translates into. Defaults to en. These languages translate to speech and text. With text output only (modalities [“text”]), 31 more translate to text: yue, el, af, ast, be, bg, bn, bs, ca, ceb, et, gl, gu, hr, hu, jv, kk, kn, ky, lv, mk, ml, mr, pa, ro, sk, sl, sw, tg, az and uk. 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
modalitiesstringno["text", "audio"]Which output types the model returns: [“text”, “audio”] by default, or [“text”] for a text-only translation, which the text-only target languages need.
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
voice_cloneenumno"off"Speaks the translation in the speaker’s own voice. once keeps the voice heard at the start of the session for every reply; always matches the voice again before each reply, so the translation follows whoever is speaking. While this is on, voice is not used. Set it with session.update before you send audio. · Allowed: off, once, always
glossaryobjectno-Preferred translations for specific terms, as an object of source term to translation, for example {“machine learning”: “aprendizaje automático”}. Up to 1,000 terms, each at most 200 characters. Also accepted as translation.corpus.phrases. Set it with session.update before you send audio.

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. With modalities set to [“text”], 31 more target languages translate to text only. Add glossary to set how specific terms are translated. Use a voice this model accepts, or leave the default Tina. To speak the translation in the speaker’s own voice, set voice_clone to once (the voice heard at the start of the session) or always (the voice of whoever is speaking, matched before each reply); cloning adds no charge. 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.