本文介绍千问实时语音/音视频翻译模型的能力、支持的模型和接入方式。模型可结合音频与图像输入进行实时翻译,输出目标语种的文本或语音,适用于实时语音交流和视频翻译等场景。
在线体验参见通过函数计算一键部署。
功能特性
- 多语言支持:支持 60 种语言互译,其中 29 种支持音频+文本输出、31 种仅支持文本输出,覆盖中文、英语、法语、德语、俄语、日语、韩语、西班牙语、葡萄牙语、阿拉伯语等主流语种。
- 视觉增强:利用视觉内容提升翻译准确性。模型通过分析画面中的口型、动作和文字,改善在嘈杂环境下或一词多义场景中的翻译效果。
- 2.3 秒时延:实现低至 2.3 秒的同传时延。
- 实时说话人分离:支持在多人交替发言时区分不同说话人及其发言内容,让听众清晰了解“谁说了什么”。
- 无损同传:通过语义单元预测技术,解决跨语言语序问题。实时翻译质量接近离线翻译结果。
- 音色自然:生成音色自然的拟人语音。模型能根据源语音内容,自适应调节语气和情感。
- 配置热词:通过热词提升特定词汇的翻译准确性。
- 声音复刻:支持复刻发言人音色用于翻译播报,让输出听起来像本人说外语。支持实时复刻和使用预先复刻的固定音色。
如何使用
1. 配置连接
连接时通过 model 指定支持的模型。以下连接示例使用 qwen3.8-livetranslate-flash-realtime。
通过 WebSocket 接入时,需要以下配置项:
| 配置项 | 说明 |
|---|---|
| 调用地址 | 华北2(北京)地域:wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime新加坡地域:wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime调用时请将{WorkspaceId}替换为真实的业务空间ID。 |
| 查询参数 | 查询参数为model,需指定为访问的模型名。示例:?model=qwen3.8-livetranslate-flash-realtime |
| 消息头 | 使用 Bearer Token 鉴权:Authorization: Bearer DASHSCOPE_API_KEYDASHSCOPE_API_KEY 是您在百炼上申请的API-KEY。 |
WebSocket 连接 Python示例代码
WebSocket 连接 Python示例代码
2. 配置语种、输出模态与音色
通过 session.update 配置会话:
-
目标语种:通过
session.translation.language配置,例如en表示英语。使用qwen3.8-livetranslate-flash-realtime时,源语种由模型自动识别。使用qwen3.5-livetranslate-flash-realtime时,如需指定源语种,需通过session.input_audio_transcription.language配置;省略时自动识别。 -
输出模态:使用
qwen3.8-livetranslate-flash-realtime时,通过session.output_modalities配置,["text"]为仅文本,["text", "audio"]为文本和音频(默认)。使用qwen3.5-livetranslate-flash-realtime时,输出模态字段为session.modalities,可选值及默认值相同。 -
原文识别:使用
qwen3.8-livetranslate-flash-realtime时,原文识别始终开启,不支持关闭。通过conversation.item.input_audio_transcription.delta接收识别增量,通过conversation.item.input_audio_transcription.completed接收完整结果。使用qwen3.5-livetranslate-flash-realtime时,原文识别默认开启。如需调整,需通过session.input_audio_transcription.model配置:qwen3-asr-flash-realtime表示开启,null表示关闭。识别增量通过conversation.item.input_audio_transcription.text返回,完整结果通过conversation.item.input_audio_transcription.completed返回。 -
音频与音色:使用
qwen3.8-livetranslate-flash-realtime时,默认输入为 16000 Hz PCM,输出为 24000 Hz PCM,默认音色为Tina。可通过 session.created 返回的session.audio.output.voice查看音色。如需保留说话人的音色,参见声音复刻。使用qwen3.5-livetranslate-flash-realtime时,通过session.sample_rate、session.input_audio_format和session.output_audio_format配置音频,通过session.voice配置音色,默认音色同样为Tina。 -
热词:通过
session.translation.corpus.phrases配置固定译法,详见配置热词。建议热词不超过1000个。
3. 输入音频与图片
客户端通过 input_audio_buffer.append 和 input_image_buffer.append 事件发送 Base64 编码的音频和图片数据。音频输入是必需的;图片输入是可选的。
图片可以来自本地文件,或从视频流中实时采集。使用
qwen3.8-livetranslate-flash-realtime 时,默认采用 session.audio.input.turn_detection.type = speaker_detection,持续发送音频后由服务端自动检测语音起止并生成翻译响应,无需逐句手动提交。配置方法及说话人标识的处理见区分发言人。
qwen3.5-livetranslate-flash-realtime:VAD 与 Manual 模式
qwen3.5-livetranslate-flash-realtime:VAD 与 Manual 模式
- VAD 模式(默认):客户端持续发送input_audio_buffer.append事件;服务端检测到语音开始/结束时,分别返回input_audio_buffer.speech_started、input_audio_buffer.speech_stopped事件,并自动提交音频缓冲区、触发翻译。翻译响应基于流式语音同步生成,通常在语音输入过程中就已开始,无需等待语音结束。
- Manual 模式:将
session.turn_detection设为null。客户端发送完一段完整的语音后,主动发送input_audio_buffer.commit事件提交音频缓冲区;服务端返回input_audio_buffer.committed事件确认后,自动开始生成翻译响应,客户端无需再发送其他事件触发响应。提交前若需清空未提交的音频,可发送input_audio_buffer.clear事件。
4. 接收模型响应
使用 qwen3.8-livetranslate-flash-realtime 时,根据输出模态接收响应:
- 仅文本:累加
response.text.delta的delta字段获得译文。 - 文本和音频:累加
response.audio_transcript.delta的delta字段获得译文,并对response.audio.delta的delta字段进行 Base64 解码,获取音频分片。
response.done 表示本次响应结束。事件字段参见服务端事件。
qwen3.5-livetranslate-flash-realtime:响应事件差异
qwen3.5-livetranslate-flash-realtime:响应事件差异
-
输出源语言识别结果
通过
session.input_audio_transcription.model参数配置。设置为qwen3-asr-flash-realtime后,服务端会在翻译的同时返回输入音频的语音识别结果(源语言原文)。 启用后,服务端会返回以下事件:conversation.item.input_audio_transcription.text:流式返回识别结果。conversation.item.input_audio_transcription.completed:识别完成后返回最终结果。conversation.item.input_audio_transcription.failed:识别失败时返回错误信息。
- 仅输出文本 服务端通过response.text.text事件流式返回增量翻译文本(含已确认文本和待确认的预测文本);翻译完成后,通过response.text.done事件返回完整的翻译文本。
-
输出文本+音频
- 文本 通过response.audio_transcript.text事件流式返回增量翻译文本;翻译完成后,通过response.audio_transcript.done事件返回完整的翻译文本。
- 音频 通过response.audio.delta事件返回 Base64 编码的增量音频数据。
5. 结束会话
音频发送完毕后,客户端必须发送 session.finish 事件通知服务端,然后等待服务端返回 session.finished 事件后再关闭 WebSocket 连接。
支持的模型
推荐模型
| 模型名称 | 版本 | 上下文长度 | 最大输入 | 最大输出 |
|---|---|---|---|---|
| (Token数) | ||||
| qwen3.8-livetranslate-flash-realtime | 稳定版 | 53248 | 49152 | 4096 |
qwen3.5-livetranslate-flash-realtime当前能力等同 qwen3.5-livetranslate-flash-realtime-2026-05-19 | 稳定版 | 53248 | 49152 | 4096 |
| qwen3.5-livetranslate-flash-realtime-2026-05-19 | 快照版 | |||
快速开始
实时翻译麦克风输入
-
使用 Python 3.10 或更高版本,安装
pyaudio:安装 WebSocket 依赖:- macOS
- Debian/Ubuntu
- CentOS
- Windows
pip install websocket-client。 -
设置以下环境变量,API Key 和业务空间需属于连接地址所用的地域:
DASHSCOPE_API_KEY: 对应地域和业务空间的 API Key,获取方式见获取 API Key。DASHSCOPE_WORKSPACE_ID: 业务空间 ID,详见业务空间与地域。
-
将下面的代码保存为
livetranslate_client.py,运行python livetranslate_client.py,然后对着麦克风说话。
qwen3.8-livetranslate-flash-realtime,将麦克风输入翻译为英语,实时打印译文并播放译音。输入为 16000 Hz、单声道、16 位 PCM,播放的译音为 24000 Hz、单声道、16 位 PCM。按 Ctrl+C 停止录音后,示例发送 session.finish,继续接收并播放剩余结果,收到 session.finished 后关闭连接。建议使用耳机,避免译音再次进入麦克风。
配置热词
对于需要固定译法或区分同音词的翻译场景,添加热词可以提升翻译准确性。例如:
- 固定译法:阿里云 slogan“计算,为了无法计算的价值。”约定的英文是“Computing, for the value beyond computation.”,需要保留措辞和语序。
- 同音品牌名:Qoder 与普通词 coder 发音相同。如果说的是产品 Qoder,译文需要保留品牌拼写。
| 输入音频内容 | 未配置热词 | 配置热词 |
|---|---|---|
| 计算,为了无法计算的价值。 | Calculate. For values that cannot be calculated. | Computing, for the value beyond computation. |
| Qoder 是面向真实工作的 Agentic 平台。 | Coder is an agentic system designed for real-world work. platform. | Qoder, is an agentic platform designed for real-world work. |
配置方法
热词通过 session.translation.corpus.phrases 配置,以 key-value 形式将源语言词语或短语映射为目标译法。
在快速开始的首次 session.update 请求中,将下列 translation 对象合入现有 session,保留会话已有的输出模态、音色等设置。
session.updated 后,再开始发送 input_audio_buffer.append。
区分发言人
qwen3.8-livetranslate-flash-realtime 可识别不同发言人,通过 speaker_id 标识。根据该标识关联原文和译文后,可以按发言人展示字幕。
在 session.update 中保留默认 speaker_detection,或显式配置如下。threshold 用于区分静音和有效人声,低于阈值的声音会被过滤,不会输入模型。该阈值固定为 0.5。
- 从
input_audio_buffer.speech_started获取speaker_id和item_id,记录原文消息项对应的说话人。 - 从
conversation.item.input_audio_transcription.delta获取同一item_id的原文。 - 从译文的
conversation.item.created获取item.id和事件顶层的previous_item_id,把译文消息项关联到原文消息项。 - 收到译文增量后,通过其
item_id找到原文和说话人,再更新对应字幕。
def receive_translation(): 之前。在该函数内,紧接 event = receive() 调用 handle_speaker_event(event),并将原来的 print(event["delta"], end="", flush=True) 替换为 pass,由下面的片段统一输出字幕。每次原文或译文更新时,片段会打印发言人标识、原文和译文,便于按发言人展示字幕。保留原有音频处理和会话结束逻辑。
利用图像提升翻译准确率
千问实时翻译系列模型支持图像输入,辅助音频翻译,适用于同音异义、低频专有名词识别场景。建议每秒发送不超过2张图片。
将以下示例图片下载到本地:口罩.png面具.png
复用快速开始的麦克风输入和连接配置:
- 安装图像处理依赖:
pip install Pillow。 - 将目标语种
translation.language改为zh,运行示例时对着麦克风说What is mask?。 - 在麦克风示例的
def send_audio():之前加入下面的图像读取代码,并用新的send_audio()替换原函数。片段使用已有的input_stream、stop_recording、ws、send_errors和导入项。
Ctrl+C 停止录音后,示例会请求结束会话并接收剩余结果。
声音复刻
模型支持发言人声音复刻功能,支持使用预先复刻的固定音色,也支持在翻译过程中实时复刻,让翻译播报听起来像本人说外语。适用于跨语言演讲、个人主播、视频翻译等需要保留个人音色的场景。
实时复刻:qwen3.8-livetranslate-flash-realtime 和 qwen3.5-livetranslate-flash-realtime 在翻译过程中从输入音频复刻音色,不额外收取复刻费用;模型调用仍按 Token 用量计费。
提前创建音色:通过声音复刻 API提前创建音色,按 $0.01/个计费,创建失败不计费;免费额度的地域、次数与有效期见该计费说明。使用已创建的音色翻译时,仍按模型调用的 Token 用量计费。
在 session.update 中设置以下参数启用:
-
session.enable_voice_clone:设置为true,启用声音复刻。 -
session.voice_clone_options.frequency:控制声音复刻时机,取值如下:never:使用预先准备的固定音色,不在本次翻译过程中重新提取音色。此时session.voice需设置为用户自己的复刻音色 ID。once:在会话开始时从输入音频提取一次音色,本次会话后续的翻译输出复用这一音色。“一次”指提取次数,并非只生成一次译音。适合单人演讲场景。此时session.voice需设置为default。always:每次生成翻译音频前,从输入音频重新提取音色;发言人变化时,译音的音色也随之变化。适合双人及以上对话场景。此时session.voice需设置为default。
-
session.voice:指定输出音色,取值取决于frequency的设置。- 设置为
default:搭配frequency为once或always使用,复刻输入音频的音色,复刻完成前使用默认音色过渡。 - 设置为用户复刻的音色 ID(如
qwen-translate-vc-xxx-yyy-zzz):搭配frequency为never使用。需提前通过声音复刻API准备音色,target_model需指定为实际使用的翻译模型。
- 设置为
当frequency为once或always时,voice必须设置为default,不可设置为其他预设音色,否则服务端会返回错误。
声音复刻配置示例
使用 qwen3.8-livetranslate-flash-realtime 时,将对应的 session.update 配置替换到快速开始的该模型示例中。
qwen3.5-livetranslate-flash-realtime 时,将示例中的 session.output_modalities 替换为 session.modalities,其余复刻参数相同。连接时需将 model 指定为该模型,并按接收模型响应中的对应说明处理响应事件。通过函数计算一键部署
控制台暂不支持体验。可通过以下方式一键部署:
- 打开我们写好的函数计算模板,填入 API Key, 单击创建并部署默认环境即可在线体验。
-
等待约一分钟,在 环境详情 > 环境信息 中获取访问域名,将访问域名的
http改成https(例如https://qwen-livetranslate-flash-realtime-intl.fcv3.xxx.ap-southeast-1.fc.devsapp.net/),通过该链接与模型交互。
如需开通访问控制权限,请跟随页面指引操作。
通过资源信息-函数资源查看项目源代码。
函数计算与阿里云百炼均为新用户提供免费额度,可以覆盖简单调试所需成本,额度耗尽后按量计费。只有在访问的情况下会产生费用。
交互流程
使用 qwen3.8-livetranslate-flash-realtime 时,默认通过服务端断句生成响应,主要交互环节如下。事件字段详见服务端事件。
阶段 | 客户端操作 | 服务端事件 |
|---|---|---|
创建和配置会话 | 建立连接,发送 |
|
输入音频 |
| 原文通过 |
接收译文与音频 | 持续接收服务端事件 | 译文通过 |
结束会话 |
| 收到 |
qwen3.5-livetranslate-flash-realtime:交互流程
qwen3.5-livetranslate-flash-realtime:交互流程
| 生命周期 | 客户端事件 | 服务端事件 |
|---|---|---|
| 会话初始化 | session.update会话配置 | session.created会话已创建session.updated 会话配置已更新 |
| 用户音频输入 | input_audio_buffer.append添加音频到缓冲区input_image_buffer.append 添加图片到缓冲区input_audio_buffer.commit (仅 Manual 模式)提交音频缓冲区 | VAD 模式:input_audio_buffer.speech_started检测到语音开始input_audio_buffer.speech_stopped 检测到语音结束,服务端自动提交音频缓冲区Manual 模式:input_audio_buffer.committed 客户端发送 input_audio_buffer.commit 后返回,确认音频缓冲区已提交 |
| 服务端音频输出 | 无 | response.created服务端开始生成响应response.output_item.added 响应时有新的输出内容conversation.item.created 对话中创建新的消息项response.content_part.added 新的输出内容添加到assistant messageresponse.text.text 仅文本模态下增量生成的翻译文本response.audio_transcript.text 音频+文本模态下增量生成的译文response.audio.delta 模型增量生成的音频response.text.done 仅文本模态下翻译文本完成response.audio_transcript.done 音频+文本模态下译文生成完成response.audio.done 音频生成完成response.content_part.done Assistant message 的文本或音频内容流式输出完成response.output_item.done Assistant message 的整个输出项流式传输完成response.done 响应完成 |
| 会话结束 | session.finish通知服务端音频发送完毕 | session.finished服务端完成处理,会话结束 |
API 参考
通过 AOQ 接入的流程和示例,请参见AOQ 接入。支持的模型及版本请参见模型与协议支持范围。
- 实时音视频翻译(Qwen-Livetranslate-Realtime)。
- Realtime API 概述(WebRTC 协议说明)
计费说明
-
Qwen3.8-LiveTranslate-Flash-Realtime、Qwen3.5-LiveTranslate-Flash-Realtime
- 音频:输入每秒音频消耗 7 Token,输出每秒音频消耗 12.5 Token。
- 图片:每输入 32*32 像素消耗 0.5 Token。 各模型的 Token 单价请参见模型调用计费。
qwen3.8-livetranslate-flash-realtime 和 qwen3.5-livetranslate-flash-realtime 在翻译过程中从输入音频复刻音色,不额外收取复刻费用;模型调用仍按 Token 用量计费。
提前创建音色:通过声音复刻 API提前创建音色,按 $0.01/个计费,创建失败不计费;免费额度的地域、次数与有效期见该计费说明。使用已创建的音色翻译时,仍按模型调用的 Token 用量计费。
限流说明
模型的限流规则请参见限流。
支持的语种
下表中的语种代码可用于指定源语种与目标语种。
部分目标语种仅支持输出文本,不支持输出音频。
语种代码 | 语种 | 支持的输出模态 |
|---|---|---|
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 | 波斯语 | 音频+文本 |
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 | 乌克兰语 | 文本 |
支持的音色
实时翻译支持的音色与voice参数取值参见音色列表。