资讯 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

实时语音翻译

接口描述

实时语音翻译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(即应用鉴权信息的API 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! 用户没有使用时长

翻译语言列表

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

各语言DEMO

实时语音翻译demo go语言

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

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

实时语音翻译demo js语言

实时语音翻译demo nodejs语言

实时语音翻译demo python2语言

实时语音翻译demo python3语言

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