
通过WebSocket进行同步口语翻译。设置目标语言,然后说话;模型用该语言回复文本和音频。
通过WebSocket进行同步口语翻译。设置目标语言,然后说话;模型用该语言回复文本和音频。
会话通过套接字的 session.update 事件配置,而不是请求参数。发送音频前先设置目标语言。术语表决定了具体术语的翻译方式,voice_clone 用说话者的声音说出翻译。文本和音频令牌按不同的费率计费。
也称为 Alibaba Cloud Qwen3.8 LiveTranslate Flash Realtime
qwen3-8-livetranslate-flash-realtime/v1/realtimeqwen3.8-livetranslate-flash-realtimealibaba/qwen3-8-livetranslate-flash-realtime来自 EmpirioLabs 目录的实时按量计费价格。只为实际用量付费,没有月度最低消费。
Qwen3.8 LiveTranslate Flash Realtime 通过 wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime 的 WebSocket 做实时口语翻译,而不是通过 HTTP 端点。使用模型 id qwen3-8-livetranslate-flash-realtime 连接,并在握手时将 EmpirioLabs API 密钥作为 Authorization: Bearer 请求头发送。发送音频前先用 session.update 设置目标语言。音频以 base64 编码的 16 位 PCM 双向传输。 浏览器无法为 WebSocket 设置请求头,请从你的服务器发起该连接,再通过你自己的 socket 把音频转发给浏览器。 在EmpirioLabs 控制台获取 API 密钥。
import asyncio, json, os, websockets
async def main():
async with websockets.connect(
"wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime",
additional_headers=[
("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}"),
],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
import base64
await ws.send(json.dumps({
"type": "session.update",
"session": {
"voice": "Tina",
"translation": {"language": "en"},
"modalities": ["text", "audio"],
},
}))
# 16-bit PCM microphone audio, base64 encoded, in small chunks.
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, append to your playback buffer
elif event["type"] in ("response.audio_transcript.text", "response.text.text"):
print(event.get("text") or "")
elif event["type"] == "response.done":
break
asyncio.run(main())EmpirioLabs 上 Qwen3.8 LiveTranslate Flash Realtime API 支持的请求参数。省略字段时使用默认值。
| 参数 | 类型 | 默认值 | 范围 / 值 | 描述 |
|---|---|---|---|---|
| voice | enum | Tina | Tina, Serena, Ethan, Cindy | 翻译音频的语音。在模型产生任何音频之前,先用 session.update 设置。voice_clone一次性或一直使用时不使用。 |
| target_language | enum | en | zh, en, ar, de, fr, es, pt, id, it, ko, ru, th, vi, ja, tr, h... | 模型翻译成的语言。默认为英文。这些语言翻译成语音和文本。仅输出文本(语态[“文本”)时,还有31种语言翻译成文本: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和uk。发送音频前请用session... |
| modalities | string | ["text","audio"] | - | 模型默认返回的输出类型是:[“文本”、“音频”],或[“文本”]用于纯文本翻译,而纯文本的目标语言需要这。 |
| input_audio_format | enum | pcm | pcm | 你附加到输入缓冲区的音频编码:base64 16位 PCM。 |
| output_audio_format | enum | pcm | pcm | 该型号回流的音频编码:base64 16位 PCM。 |
| voice_clone | enum | off | off, once, always | 用说话者自己的声音说出翻译。once保持会话开始时听到的声音,每次回复都听到;每次回复前都会匹配语音,使翻译跟随发言者。开启时,语音不会被使用。在发送音频前,先用session.update设置。 |
| glossary | object | - | - | 针对特定术语的首选翻译,作为源词到翻译的对象,例如 {“机器学习”: “aprendizaje automático”}。最多 1,000 个术语,每个最多 200 个字符。也可作为 translation.corpus.phrases 格式。发送音频前请用 session.update 设置。 |
通过 wss@api.empiriolabs.ai/v1/realtime?model=qwen3-8-livetranslate-flash-realtime 的 WebSocket 进行口语翻译,并用普通授权承载者头进行认证。发送音频前,请用 session.update 设置目标语言。将模态设置为 [“text”],另外 31 种目标语言仅翻译成文本。添加词汇表以设置特定术语的翻译方式。使用该模型接受的语音,或保留默认的 Tina。要用说话者自己的声音进行翻译,请将 voice_clone 设置为一次(会话开始时听到的声音)或始终(每次回复前匹配的发言者的声音);克隆不增加任何费用。音频和文本代币分开定价,每个完成回合的使用量均根据模型报告的使用情况单独计费。
在 EmpirioLabs,Qwen3.8 LiveTranslate Flash Realtime 按量计费:输入:音频 $15.00 每 1M 音频输入令牌; 输入 $1.10 每100万个提示词标记; 输出 $40.00 每100万个生成代币; 输出:音频 $60.00 每1M生成的音频标记。本页的实时价格表始终与 API 的实际计费一致。
Qwen3.8 LiveTranslate Flash Realtime 支持 48K token 的上下文窗口,每次响应最多 4,096 个输出 token。
Qwen3.8 LiveTranslate Flash Realtime 通过 api.empiriolabs.ai 上的 WEBSOCKET /v1/realtime 提供,使用标准的 Bearer 令牌认证。
打开EmpirioLabs Playground并点击 Start session,即可在浏览器中试用。Qwen3.8 LiveTranslate Flash Realtime 运行在 WebSocket 上,而不是一次请求一次响应,因此接入时请从实时语音快速入门开始。用 EmpirioLabs API 密钥和模型 id qwen3-8-livetranslate-flash-realtime 从你的服务器连接,然后双向流式传输音频。
创建 EmpirioLabs 账户,然后在控制台的 API Keys生成密钥。计费使用按量付费的额度,只为实际发出的请求付费。