tencent cloud

语音识别

实时语音翻译(WebSocket)

下载
聚焦模式
字号
最后更新时间: 2026-10-14 10:45:22

接口描述

本接口服务采用 WebSocket 协议,对实时音频流进行识别翻译,同步返回识别翻译后的结果,达到一边说一边翻译的效果。
在使用该接口前,需要开通语音识别服务,进入 API 密钥管理页面 新建密钥,生成 AppID、SecretID 和 SecretKey,用于 API 调用时生成签名,签名将用来进行接口鉴权。

接口要求

集成实时语音翻译 API 时,需按照以下要求。
内容
说明
语言种类
支持中文、英语等语言的互译。可通过接口参数 source 和 target 设置对应语言类型。
音频属性
采样率:16000Hz
采样精度:16bits
声道:单声道(mono)
音频格式
pcm、wav
请求协议
wss 协议
请求地址
wss://asr.cloud.tencent.com/asr/speech_translate/?{请求参数}
接口鉴权
签名鉴权机制,详情请参见 签名生成。
响应格式
统一采用 JSON 格式。
数据发送
建议每 200ms 发送 200ms 时长(即1:1实时率)的数据包,对应 PCM 大小为:16k 采样率6400字节。
音频发送速率过快超过1:1实时率或者音频数据包之间发送间隔超过6秒,可能导致引擎出错,后台将返回错误并主动断开连接。
并发限制
默认单账号限制并发数为5路,如您有提高并发限制的需求,请提工单 进行咨询。

接口调用流程

接口调用流程分为两个阶段:握手阶段和识别翻译阶段。两阶段后台均返回 text message,内容为 JSON 序列化字符串,以下是格式说明:
字段名
类型
描述
code
Integer
状态码,0代表正常,非0值表示发生错误。
message
String
错误说明,发生错误时显示这个错误发生的具体原因,随着业务发展或体验优化,此文本可能会经常变更或更新。
voice_id
String
音频流全局唯一标识,一个 WebSocket 连接对应一个,用户自己生成(推荐使用 UUID),最长128位。
注意:每次建立 WebSocket 连接都必须重新生成 voice_id,任何情况下中断了翻译或者 WebSocket 连接(如连接失败、正常结束、翻译返回错误码等),voice_id 作废,重新发起翻译必须使用新的 voice_id。
sentence_id
String
当前句唯一 ID。
result
Result
最新语音翻译结果。
final
Integer
该字段返回1时表示音频流全部翻译结束,返回2时表示译文全部合成结束。
其中翻译结果 Result 结构体格式为:
字段名
类型
描述
source
String
源语言类型,如 "zh"、"en"、"zh_en" 等。
zh:中文
en:英文
zh_en:中英混合
ja:日语
ko:韩语
yue:粤语
id:印尼语
th:泰语
ru:俄语
示例值:zh
target
String
目标语言类型,如 "zh"、"en"、"zh_en" 等。
zh:中文
en:英文
zh_en:中英混合
ja:日语
ko:韩语
yue:粤语
id:印尼语
th:泰语
ru:俄语
示例值:en
source_text
String
识别出的源语言文本内容,编码为 UTF-8。
示例值:ASR 语音识别结果
target_text
String
翻译后的目标语言文本内容,编码为 UTF-8。
示例值:ASR speech recognition results
start_time
Integer
当前句子在整个音频流中的起始时间,单位毫秒。
示例值:1000
end_time
Integer
当前句子在整个音频流中的结束时间,单位毫秒。
示例值:3000
sentence_end
Boolean
当前句子是否结束。true 表示句子结束,false 表示句子未结束。
示例值:true

握手阶段

请求格式

握手阶段,客户端主动发起 WebSocket 连接请求,请求 URL 格式为:
wss://asr.cloud.tencent.com/asr/speech_translate/<appid>?{请求参数}
其中 <appid> 需替换为腾讯云注册账号的 AppID,可通过 API 密钥管理页面 获取,{请求参数}格式为:
key1=value2&key2=value2...
参数说明:
参数名称
必填
类型
描述
secretid
是
String
腾讯云注册账号的密钥 SecretID,可通过 API 密钥管理 页面获取。
示例值:*****Qq1zhZMN8dv0******
signature
是
String
接口签名参数
示例值:*****g1JfeBi%2FYnTjyjekxfDA%3D
timestamp
是
Integer
当前 UNIX 时间戳,单位为秒。如果与当前时间相差过大,会引起签名过期错误。
示例值:1745932688
expired
是
Integer
签名的有效期截止时间 UNIX 时间戳,单位为秒。expired 必须大于 timestamp 且 expired - timestamp 小于90天。
示例值:1746019088
nonce
是
Integer
随机正整数。用户需自行生成,最长10位。
示例值:8743357
voice_id
是
String
音频流全局唯一标识,一个 WebSocket 连接对应一个,用户自己生成(推荐使用 UUID),最长128位。
注意:每次建立 WebSocket 连接都必须重新生成 voice_id,任何情况下中断翻译或者 WebSocket 连接(如连接失败、正常结束、翻译返回错误码等),voice_id 作废,重新发起翻译必须使用新的 voice_id
示例值:TBgVFCsxdn3i2DGt
voice_format
是
Integer
语音编码方式。 1:pcm;12:wav
示例值:1
source
是
String
源语言类型。支持的语言类型:
zh:中文
en:英文
zh_en:中英混合
ja:日语
ko:韩语
yue:粤语
id:印尼语
th:泰语
ru:俄语
示例值:zh
target
是
String
目标语言类型。各源语言的目标语言支持列表如下:
zh(中文):zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)、id(印尼语)、th(泰语)
en(英文):zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)、id(印尼语)、th(泰语)
zh_en(中英混合):zh_en(中英混合)、zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)、id(印尼语)、th(泰语)
ja(日语):zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)
ko(韩语):zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)
yue(粤语):zh(中文)、en(英文)、ja(日语)、ko(韩语)、yue(粤语)
id(印尼语):zh(中文)、en(英文)、id(印尼语)
th(泰语):zh(中文)、en(英文)、th(泰语)
ru(俄语):zh(中文)、en(英文)、ru(俄语)
注意:source、target 都传 zh_en,中文自动翻译成英文、英文自动翻译成中文。
示例值:en
trans_model
是
String
翻译模型类型。支持的模型:
hunyuan-translation-lite:轻量版
hunyuan-translation:标准版
示例值:hunyuan-translation-lite
hotword_list
否
String
临时热词表:该参数用于提升识别准确率。
● 单个热词限制:"热词|权重",单个热词不超过30个字符(最多10个汉字),权重[1-11]或者100,如:“腾讯云|5” 或 “ASR|11”。
● 临时热词表限制:多个热词用英文逗号分割,最多支持128个热词,如:“腾讯云|10,语音识别|5,ASR|11”。
注意:
● 热词权重设置为11时,当前热词将升级为超级热词,建议仅将重要且必须生效的热词设置到11,设置过多权重为11的热词将影响整体字准率。
● 热词权重设置为100时,当前热词开启热词增强同音同调替换功能(仅支持 8k_zh,16k_zh),举例:热词配置“蜜制|100”时,与“蜜制”同拼音(mizhi)的“秘制”的识别结果会被强制替换成“蜜制”。因此建议客户根据自己的实际情况开启该功能。建议仅将重要且必须生效的热词设置到100,设置过多权重为100的热词将影响整体字准率。
● 热词不能包含空格,如:ASR 腾讯云
示例值:语音助理|10
filter_dirty
否
Integer
是否过滤脏词(目前仅在源语言为 zh、zh_en 时生效)。默认为0。
0:不过滤脏词;1:过滤脏词;2:将脏词替换为“ * ”
示例值:0
filter_modal
否
Integer
是否过滤语气词(目前仅在源语言为 zh、zh_en 时生效)。默认为0。
0:不过滤语气词;1:部分过滤;2:严格过滤。
示例值:0
filter_punc
否
Integer
是否过滤句末的句号(目前仅在源语言为 zh、zh_en 时生效)。默认为0。
0:不过滤句末的句号;1:过滤句末的句号。
示例值:0
convert_num_mode
否
Integer
是否进行阿拉伯数字智能转换(目前仅在源语言为 zh、zh_en 时生效)。默认值为1。
0:不转换,直接输出中文数字,1:根据场景智能转换为阿拉伯数字,3: 打开数学相关数字转换。
示例值:1
noise_threshold
否
Float
噪音参数阈值,默认为0,取值范围:[-2,2],对于一些音频片段,取值越大,判定为噪音情况越大。取值越小,判定为人声情况越大。
示例值:0
domain
否
Integer
领域专有名称,1:科技领域;2:电影领域;3:歌曲领域
vad_silence_time
否
int
语音断句检测阈值,静音时长超过该阈值会被认为断句。取值范围:500-2000(默认1000),单位 ms,目前仅支持源语言类型:zh、en、zh_en
示例值:1000
max_speak_time
否
int
强制断句功能,取值范围 5000-90000(单位:毫秒),默认值10000。 在连续说话不间断情况下,该参数将实现强制断句(此时结果变成稳态,sentence_end=true)。(目前仅支持源语言类型:zh、en、zh_en)

signature 签名生成

1. 对除 signature 之外的所有参数按字典序进行排序,拼接请求 URL (不包含协议部分:wss://)作为签名原文,这里以 appid=125922***,secretid=*****Qq1zhZMN8dv0****** 为例拼接签名原文,则拼接的签名原文为:
asr.cloud.tencent.com/asr/speech_translate/125922***?expired=1673494772&nonce=1673408372&secretid=*****Qq1zhZMN8dv0******&source=zh&target=en&timestamp=1673408372&trans_model=hunyuan-translation-lite&voice_format=1&voice_id=c64385ee-3e5c-4fc5-bbfd-7c71addb35b0
2. 对签名原文使用 SecretKey 进行 HMAC-SHA1 加密,之后再进行 base64 编码。例如对上一步的签名原文, secretkey=*****SkqpeHgqmSz*****,使用 HMAC-SHA1 算法进行加密并做 base64 编码处理:
Base64Encode(HmacSha1("asr.cloud.tencent.com/asr/speech_translate/125922***?expired=1673494772&nonce=1673408372&secretid=*****Qq1zhZMN8dv0******&source=zh&target=en&timestamp=1673408372&trans_model=hunyuan-translation-lite&voice_format=1&voice_id=c64385ee-3e5c-4fc5-bbfd-7c71addb35b0", "*****SkqpeHgqmSz*****"))
得到 signature 签名值为:
G8jDQBRg1JfeBi/YnTjyjekxfDA=
3. 将 signature 值进行 urlencode(必须进行 URL 编码,编码函数必须要支持对+、=等特殊字符的编码,否则将导致鉴权失败偶现)后拼接得到最终请求 URL 为:
wss://asr.cloud.tencent.com/asr/speech_translate/125922****?expired=1673494772&nonce=1673408372&secretid=A*********************************0r&source=zh&target=en&timestamp=1673408372&trans_model=hunyuan-translation-lite&voice_format=1&voice_id=c64385ee-3e5c-4fc5-bbfd-7c71addb35b0&signature=G8jDQBRg1JfeBi%2FYnTjyjekxfDA%3D

请求响应

客户端发起连接请求后,后台建立连接并进行签名校验,校验成功则返回 code 值为0的确认消息表示握手成功;如果校验失败,后台返回 code 为非0值的消息并断开连接。
{"code":0,"message":"success","voice_id":"RnKu9FODFHK5FPpsrN"}

翻译阶段

握手成功之后,进入翻译阶段,客户端上传语音数据并接收翻译结果消息,如果开启语音合成还需要接收二进制音频数据。

上传数据

在翻译过程中,客户端持续上传 binary message 到后台,内容为音频流二进制数据。建议每 200ms 发送 200ms 时长(即1:1实时率)的数据包,对应 PCM 大小为:16k 采样率6400字节。音频发送速率过快超过1:1实时率或者音频数据包之间发送间隔超过6秒,可能导致引擎出错,后台将返回错误并主动断开连接。
音频流上传完成之后,客户端需发送以下内容的 text message,通知后台结束翻译。
{"type": "end"}

接收消息

客户端上传数据的过程中,需要同步接收后台返回的实时翻译结果,结果示例:
{"code":0,"message":"success","voice_id":"RnKu9FODFHK5FPpsrN","sentence_id":"0669d099-ffdf-404e-ad91-5eaff18b20df","result":{"source":"zh","target":"en","source_text":"实时","target_text":"Real time","start_time":0,"end_time":1240,"sentence_end":false}}
{"code":0,"message":"success","voice_id":"RnKu9FODFHK5FPpsrN","sentence_id":"0669d099-ffdf-404e-ad91-5eaff18b20df","result":{"source":"zh","target":"en","source_text":"实时语音翻译","target_text":"Real time voice translation","start_time":0,"end_time":2840,"sentence_end":true}}
后台翻译完所有上传的语音数据之后,最终返回 final 值为1的消息,客户端收到后,需主动断开 WebSocket 连接。
{"code":0,"message":"success","voice_id":"CzhjnqBkv8lk5pRUxhpX","final":1}
翻译过程中如果出现错误,后台返回 code 为非0值的消息并断开连接。
{"code":6008,"message":"客户端超过15秒未发送音频数据。","voice_id":"CzhjnqBkv8lk5pRUxhpX"}

开发者资源

SDK

Tencent Cloud Speech SDK for Go:GitHub
Tencent Cloud Speech SDK for Python:GitHub
Tencent Cloud Speech SDK for Java:GitHub

SDK 调用示例

错误码

数值
说明
6000
音频数据发送过多,请1秒内最多发送3秒音频数据。
注意:实时翻译的效果是"边说边出识别翻译的结果",1秒内发送的音频数据总时长应为1秒。
6001
参数不合法。
6002
鉴权失败。
6003
账号未开通本服务,请在控制台开通服务。
6004
资源包耗尽,请开通后付费或者购买资源包。
6005
账户欠费停止服务,请及时充值。
6006
账号当前调用并发超限。
6007
音频解码失败,请检查上传音频数据格式与调用参数一致。
6008
客户端超过15秒未发送音频数据。
6009
客户端连接断开。
6010
客户端上传未知文本消息。
6011
分片音频数据太大,请按照文档指引调整分片大小。
6012
因机器负载过高、网络抖动等导致失败,请重新发起请求。
注意:该问题通常为偶发,少量出现可忽略,发起新请求即可。
6013
因机器负载过高、网络抖动等导致失败,请重新发起请求。
注意:该问题通常为偶发,少量出现可忽略,发起新请求即可。
7000
因机器负载过高、网络抖动等导致失败,请重新发起请求。
注意:该问题通常为偶发,少量出现可忽略,发起新请求即可。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈