开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术
AR与VR
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
信息服务
智能园区

实时语音翻译

接口描述

实时语音翻译api采用websocket协议的连接方式,能够将音频流实时识别为文字,支持智能断句,实时输出带有标点的语音识别结果和翻译结果,支持45个语种的识别和相互翻译。

接口限制

  • 目前支持45个语言的互译,见语言列表
  • 音频参数要求:目前只支持pcm格式的原始音频数据

    • 采样率:8kHz、16kHz、44.1kHz
    • 位深:16bits
    • 单声道
    • 小端序

接入方式

  • 接口协议WebSocket
  • 请求URL:wss://aip.baidubce.com/ws/realtime_speech_trans

主要流程

实时语音翻译API基于WebSocket协议进行全双工的流式消息发送和接受。实现逻辑如下:

  1. 建立WebSocket连接,并发送开始报文
  2. 发送实时音频流报文
  3. 接收实时翻译结果报文、TTS播报报文
  4. 发送结束报文并关闭WebSocket连接 流程图-202210261356.png

报文格式

方向 报文类型 WebSocket opcode WebSocket消息体序列化协议
客户端请求报文 开始报文 text json
实时音频报文 binary 无。音频原始二进制数据
结束报文 text json
服务端响应报文


确认开始报文 text json
实时翻译结果报文 text json
TTS播报报文 binary 实时语音翻译二进制响应报文序列化协议(见下)
确认结束报文 text json

实时语音翻译二进制响应报文序列化协议

该协议仅在头部加了1个字节,作用是区分业务二进制响应报文的类型。第一个字节之后是payload数据。格式如下:

0字节      1字节
+---------+----------------+
|  type   |    payload     +
+---------+----------------+
type取值 报文类型
0x01 TTS播报报文

请求说明

建立连接并发送开始报文

向服务地址建立WebSocket连接,连接开始后,需要首先发送开始报文。

请求报文格式

  • WebSocket opcodetext
  • WebSocket消息体序列化协议:json
字段名 类型 是否必填 字段说明
type string 必填,固定值 START
from string 必填 源语言,具体参考语言列表
to string 必填 目标语言,具体参考语言列表
app_id string 必填 用户app id
app_key string 必填 用户app key
sampling_rate int 必填 采样率:8000、16000、44100
return_target_tts bool 选填 是否返回翻译结果的TTS播报结果
  • false:不返回(默认)
  • true:返回
tts_speaker string 选填 tts播报人声选项,当前目标语言是英语时支持配置:
  • man:男声
  • woman:女声
user_sn string 选填 用户输入sn
  • 开始报文示例:
{
    "type": "START",
    "from": "zh",
    "to": "en",
    "app_id": "xxx",
    "app_key": "yyy",
    "sampling_rate": 16000
}

响应报文格式

  • WebSocket opcodetext
  • WebSocket消息体序列化协议:json
字段名 类型 说明
code int 错误码(具体见错误码说明)
msg string 错误信息
data object 请求结果,当且仅当code==0存在
data.status string 固定值STA:开始报文校验成功

若服务端接受,服务端会返回确认开始报文:

  • 确认开始报文
{
    "code": 0,
    "msg": "Success",
    "data": {
        "status": "STA"
    }
}

若服务端拒绝,会返回错误报文,并立刻断开和客户端的连接:

  • 错误报文
{
    "code": 10001,
    "msg": "invalid request param"
}

发送实时音频流报文

报文格式

  • WebSocket opcodebinary
  • WebSocket消息体:音频流的二进制数据

注意:

  • 服务端不处理在开始报文响应之前收到的音频流。
  • 建议每40ms发送一次音频包,即在采样率为16000Hz+位深16bits时,音频包的大小为 40ms 16000Hz 16bits = 1280 bytes。如果发送频率太高,则可能识别失败;如果发送频率太低,则会降低业务系统的实时性。
  • 若服务端超过30秒没有收到任何报文,服务端会报错并主动断开连接

接受实时翻译结果报文

报文格式:

  • WebSocket opcodetext
  • WebSocket消息体序列化协议:json
字段名 类型 说明
code int 错误码(具体见错误码说明)
msg string 错误信息
data object 请求结果,当且仅当code==0存在
data.status string 状态标识
  • TRN:翻译结果
  • END:整个会话结束
data.result object
data.result.type string 结果类型:
  • MID:中间结果
  • FIN:最终结果
data.result.asr string 一句话的中间识别结果
data.result.asr_trans string 中间翻译结果
data.result.sentence string 一句话的最终识别结果
data.result.sentence_trans string 最终翻译结果

正常情况

  • 一句话的翻译中间结果
{
    "code": 0,
    "msg": "Success",
    "data": {
        "status": "TRN",
        "result": {
            "type": "MID",
            "asr": "今天",
            "asr_trans": "Today",
            "sentence": "",
            "sentence_trans": ""
        }
    }
}
  • 一句话的翻译最终结果
{
    "code": 0,
    "msg": "Success",
    "data": {
        "status": "TRN",
        "result": {
            "type": "FIN",
            "asr": "明天",
            "asr_trans": "",
            "sentence": "今天天气不错,",
            "sentence_trans": "It's a nice day today,"
        }
    }
}

异常情况

有些错误并不会断开连接,并且不会不影响业务继续使用,请参考错误码说明。

  • 错误报文
{
    "code": 10001,
    "msg": "invalid request param"
}

接受TTS播报报文

如果开始报文中设置了return_target_tts==1时,则会返回TTS播报报文;否则不返回该报文。 报文格式:

  • WebSocket opcodebinary
  • WebSocket消息体序列化协议:实时语音翻译二进制响应报文,type=0x01,payload是TTS音频二进制,以mp3格式编码。

即:

  • WebSocket消息体
0字节      1字节
+---------+---------------------+
|  0x01   | mp3格式的TTS二进制数据 +
+---------+---------------------+

发送结束报文并关闭连接

请求报文格式

  • WebSocket opcodetext
  • WebSocket消息体序列化协议:json
字段名 字段类型 是否必填 字段说明
type string 必填,固定值 FINISH
{
    "type": "FINISH"
}

响应报文格式

  • WebSocket opcodetext
  • WebSocket消息体序列化协议:json
字段名 类型 说明
code int 错误码(具体见错误码说明)
msg string 错误信息
data object 请求结果,当且仅当code==0存在
data.status string 状态标识END

若服务端接受,服务端会返回确认结束报文:

  • 确认报文结束
{
    "code": 0,
    "msg": "Success",
    "data": {
        "status": "END"
    }
}

若服务端拒绝,会返回错误报文。

  • 错误报文
{
    "code": 10001,
    "msg": "invalid request param"
}

错误码说明

错误码 错误信息 解决方案
0 成功
10000 服务器未知错误 记录报错信息反馈服务方
10001 参数错误 检查报文格式
10008 并发超限 请降低并发数
20302 语言方向不支持 检查开始报文参数(fromto
20303 重复发送开始报文 不要重复发送开始报文
20311 语音识别失败 记录报错信息反馈服务方。这一句报错,不影响后续识别
20312 文本翻译失败 记录报错信息反馈服务方。这一句报错,不影响后续翻译
20313 获取TTS失败 记录报错信息反馈服务方,这一句报错,不影响后续TTS合成
20314 超时未收到报文 服务端超过30秒没有收到报文
20315 翻译结果为空 反馈给服务方。这一句报错,不影响后续翻译
20316 无效音频 请检查音频并重试
31003 app id and app key do not match 用户appid和appkey不匹配,信息校验失败
31004 input parameter format error 用户输入参数解析出错
31005 resolve user parameters 用户输入参数解析出错
31006 type format error 记用户输入帧类型出错(type字段)
31007 frame type error 用户输入帧格式出错,可能是为校验成功,但是发送了数据帧
31008 user connect had close 用户连接断开,但是仍在发送帧
41000 inner server error! 内部服务错误
41001 inner server error! 内部服务错误
41002 inner server error! 内部服务错误
41015 Open api concurrency limit reached! 用户并发数超限
41017 Open api usage limit reached! 用户没有使用时长

语言列表

编号 名称 代码 编号 名称 代码 编号 名称 代码
1 中文(普通话) zh 21 罗马尼亚语 rom 41 塞尔维亚语(拉丁文) srp
2 英语 en 22 瑞典语 swe 42 斯瓦希里语(坦桑尼亚) swa
3 粤语 yue 23 匈牙利语 hu 43 土耳其语 tr
4 日语 jp 24 越南语 vie 44 乌克兰语 ukr
5 韩语 kor 25 印度尼西亚语 id 45 亚美尼亚语 arm
6 法语 fra 26 加泰罗尼亚语 cat
7 西班牙语 spa 27 希伯来语 heb
8 泰语 th 28 印地语 hi
9 阿拉伯语(巴林) ara 29 马来语 may
10 俄语 ru 30 挪威语 nor
11 葡萄牙语 pt 31 冰岛语 ice
12 德语 de 32 菲律宾语 fil
13 意大利语 it 33 高棉语 hkm
14 希腊语 el 34 克罗地亚语 hrv
15 荷兰语 nl 35 拉脱维亚语 lav
16 波兰语 pl 36 孟加拉语 ben
17 保加利亚语 bul 37 尼泊尔语 nep
18 丹麦语 dan 38 南非荷兰语 afr
19 芬兰语 fin 39 斯洛伐克语 sk
20 捷克语 cs 40 僧伽罗语 sin

TTS语音合成语言列表

编号 语言名称 语言标签 默认播报人声 可选播报人声(tts_speaker参数)
1 中文 zh 男声 -
2 英文 en 女声
  • 男声:man
  • 女声:woman
3 粤语 yue 女声 -
4 日语 jp 女声 -
5 泰语 th 女声 -
6 韩语 kor 女声 -
7 德语 de 女声 -
8 西班牙语 spa 女声 -
9 法语 fra 女声 -
10 葡萄牙语 pt 女声 -
11 俄语 ru 女声 -
12 越南语 vie 男声 -
13 阿拉伯语 ara 男声 -
14 南非何兰语 afr 女声 -
15 亚美尼亚语 arm 男声 -
16 印度尼西亚语 id 男声 -
17 马来语 may 男声 -
18 孟加拉语 ben 女声 -
19 加泰罗尼亚语 cat 女声 -
20 捷克语 cs 男声 -
21 丹麦语 dan 女声 -
22 罗克地亚语 hrv 男声 -
23 冰岛语 ice 女声 -
24 意大利语 it 女声 -
25 拉脱维亚语 lav 女声 -
26 匈牙利语 hu 男声 -
27 何兰语 nl 女声 -
28 尼泊尔语 nep 男声 -
29 挪威语 nor 女声 -
30 波兰语 pl 女声 -
31 罗马尼亚语 rom 男声 -
32 僧伽罗语 sin 男声 -
33 斯洛伐克语 sk 男声 -
34 斯洛文尼亚语 slo 男声 -
35 斯瓦希里语 swa 男声 -
36 芬兰语 fen 女声 -
37 瑞典语 swe 女声 -
38 土耳其语 tr 女声 -
39 希腊语 el 男声 -
40 保加利亚语 bul 男声 -
41 塞尔维亚语 srp 男声 -
42 乌克兰语 ukr 女声 -
43 希伯来语 heb 男声 -
44 波斯语 per 男声 -
45 印地语 hi 女声 -

各语言DEMO

实时语音翻译demo go语言

实时语音翻译demo java-ws语言

实时语音翻译demo java-wss语言

实时语音翻译demo js语言

实时语音翻译demo nodejs语言

实时语音翻译demo python2语言

实时语音翻译demo python3语言

上一篇
语音翻译
下一篇
产品价格