实时语音识别 - zmeet-ai/AI-Cloud GitHub Wiki
实时语音识别
接口描述
本接口服务采用 websocket 协议,对实时音频流进行识别,同步返回识别结果,达到“边说边出文字”的效果。
在使用该接口前,需要 开通语音识别服务,并进入 API 密钥管理页面 新建密钥,生成 AppID、AppSecret,用于 API 调用时生成签名,签名将用来进行接口鉴权。
接口要求
内容 | 说明 |
---|---|
支持行业 | 法院,教育, 金融, 医疗, 科技, 运营商,政府, 电商,军事,企业,生活, 汽车 |
音频属性 | 采样率:16000Hz或8000Hz 采样精度:16bits 声道:单声道(mono) |
音频格式 | pcm、wav |
请求协议 | wss 协议 |
请求地址 | wss://asr.cloud.abcpen.com/asr/v2/ws? {请求参数} |
接口鉴权 | 签名鉴权机制,详见 签名生成 |
响应格式 | 统一采用 JSON 格式 |
数据发送 | 建议每40ms 发送40ms 时长(即1:1实时率)的数据包,对应 pcm 大小为:8k 采样率640字节,16k 采样率1280字节 音频发送速率过快超过1:1实时率或者音频数据包之间发送间隔超过6秒,可能导致引擎出错,后台将返回错误并主动断开连接 |
并发限制 | 默认单账号限制并发数为200路,如您有提高并发限制的需求,请 前往购买。 |
接口调用流程
接口调用流程分为两个阶段:握手阶段和识别阶段。两阶段后台均返回 text message,内容为 json 序列化字符串。
握手阶段
握手阶段,客户端主动发起 websocket 连接请求,请求 URL 格式为:
wss://asr.cloud.abcpen.com/v1/asr/ws?{请求参数}
{请求参数}格式为
key1=value2&key2=value2...
输入参数
参数说明:
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
lang | string | 否 | 实时语音转写语种,不传自动感知 | 语种类型:中文、中英混合识别:cn;英文:en |
punc | string | 否 | 标点过滤控制,默认返回标点,punc=0会过滤结果中的标点 | 1 |
speaker_number | string | 否 | 发音人个数,可选值:0-10,0表示盲分 | 默认:2(适用通话时两个人对话的场景) |
trans_mode | int | 否 | 开启翻译模块 , 1表示打开,0表示关闭 | 1 |
target_lang | string | 否 | 目标翻译语种:控制把源语言转换成什么类型的语言;语种类型 | trans_mode为1条件下,target_lang有效。 默认为英文“en"。 |
pd | string | 否 | 垂直领域 | 设置示例:pd="edu" 参数pd为非必须设置,不设置参数默认为通用 |
audio_sample_rate | string | 否 | 音频采样率,有"8000", "16000",分别代表采样率是8K和16K,默认是“16000” | “16000” |
asr_type | string | 否 | 识别结果输出类型,0,输出逐字和逐句结果;1,逐句输出;2,逐字输出。如输入错误或不输出,默认为0 | “0” |
输出结果
字段 | 类型 | 说明 |
---|---|---|
action | string | 结果标识,started:握手,result:结果,error:异常 |
code | string | 错误码 |
data | Data | 识别结果详情 |
desc | string | 描述 |
sid | string | 会话Id |
asr | string | 识别结果文本 UTF8 |
其中识别结果 Data 结构体格式为:
字段 | 类型 | 说明 |
---|---|---|
type | string | 1 一段话开始识别 识别中(会出现多次1返回) , 0 一句话识别结束 为静态结果。识别结果都是为 1-0 对应识别中 到识别结束的一段话 |
bg | string | 一段话开始的时间 单位 ms |
ed | string | 一段话结束的时间 单位ms 再type=1的时候 此值结果为0 当type=1 的时候 ed为准确值 |
w | string | 识别的结果 编码为 UTF8 |
translate | string | 开启实时翻译的时候 会对应此值 查看翻译结构 |
ws | array | 当前一段话的词列表,查看ws结构 |
seg_id | string | 每次返回的序号,递增 从0开始 |
请求示例
握手阶段
请求连接
wss://asr.cloud.abcpen.cn/v1/asr/ws?trans_mode=0&audio_sample_rate=16000
返回结果
{"action":"started","code":"0","data":{},"desc":"success","sid":"0","asr":"","translate":{}}
客户端发起连接请求后,后台建立连接进并进行签名校验,校验成功则返回 code 值为0的确认消息表示握手成功;如果校验失败,后台返回 code 为非0值的消息并断开连接
识别阶段
握手成功之后,进入识别阶段,客户端上传语音数据并接收识别结果消息。
上传数据
在识别过程中,客户端持续上传 binary message 到后台,内容为音频流二进制数据。建议每40ms 发送40ms 时长(即1:1实时率)的数据包,对应 pcm 大小为:8k 采样率640字节,16k 采样率1280字节。音频发送速率过快超过1:1实时率或者音频数据包之间发送间隔超过6秒,可能导致引擎出错,后台将返回错误并主动断开连接。
音频流上传完成之后,客户端需发送以下内容的 text message,通知后台结束识别。
{"end" : true}
接收消息
一句话识别中 消息如下:
{"action":"result","code":"0","data":{"cn":{"st":{"bg":"109100","ed":"109660","type":"1","rt":[{"w":"床前","ws":[{"wb":"109100","we":"109260","cw":[{"w":"床","wp":1}]},{"wb":"109660","we":"109820","cw":[{"w":"前","wp":1}]}]}]}},"seg_id":13},"desc":"success","sid":"50982041-bbfe-41f9-a176-94333661f522","asr":"床前","translate":{}}
一句话识别完成 消息如下:
{"action":"result","code":"0","data":{"cn":{"st":{"bg":"109100","ed":"111340","type":"0","rt":[{"w":"床前明月光","ws":[{"wb":"109100","we":"109260","cw":[{"w":"床","wp":1}]},{"wb":"109660","we":"109820","cw":[{"w":"前","wp":1}]},{"wb":"110388","we":"110547","cw":[{"w":"明","wp":1}]},{"wb":"110836","we":"110996","cw":[{"w":"月","wp":1}]},{"wb":"111340","we":"111500","cw":[{"w":"光","wp":1}]}]}]}},"seg_id":15},"desc":"success","sid":"50982041-bbfe-41f9-a176-94333661f522","asr":"床前明月光","translate":{}}
开启翻译后效果如下
一句话识别中 识别中的时候 翻译不会执行需要等待一句话识别完成后才会返回翻译结果 消息如下:
{"action":"result","code":"0","data":{"cn":{"st":{"bg":"2923","ed":"3147","type":"1","rt":[{"w":"床前","ws":[{"wb":"2923","we":"3083","cw":[{"w":"床","wp":1}]},{"wb":"3147","we":"3307","cw":[{"w":"前","wp":1}]}]}]}},"seg_id":2},"desc":"success","sid":"6b13b081-730e-48bb-8261-bfd25b4e30de","asr":"床前","translate":{}}
翻译结果translate
中包含语言信息 和 对应识别结果
{"action":"result","code":"0","data":{"cn":{"st":{"bg":"2923","ed":"3876","type":"0","rt":[{"w":"床前明月光","translate":{"english":"The moon before the bed."},"ws":[{"wb":"2923","we":"3083","cw":[{"w":"床","wp":1}]},{"wb":"3147","we":"3307","cw":[{"w":"前","wp":1}]},{"wb":"3372","we":"3532","cw":[{"w":"明","wp":1}]},{"wb":"3596","we":"3756","cw":[{"w":"月","wp":1}]},{"wb":"3876","we":"4036","cw":[{"w":"光","wp":1}]}]}]}},"seg_id":3},"desc":"success","sid":"6b13b081-730e-48bb-8261-bfd25b4e30de","asr":"床前明月光","translate":{"english":"The moon before the bed."}}
领域列表
名称 | 编码 |
---|---|
法院 | court |
教育 | edu |
金融 | finance |
医疗 | medical |
科技 | tech |
运营商 | isp |
政府 | gov |
电商 | ecom |
军事 | mil |
企业 | com |
生活 | life |
汽车 | car |
语种类型
名称 | 编码 |
---|---|
中国 | cn |
英语 | en |
德国 | de |
西班牙 | es |
俄语 | ru |
韩国 | kr |
法语 | fr |
日本 | jp |
葡萄牙 | pt |
土耳其 | tr |
加泰罗尼亚语 | cat |
荷兰 | nl |
阿拉伯语 | ara |
瑞典 | swe |
意大利 | it |
印度尼西亚 | id |
印度语 | hi |
芬兰语 | fin |
越南语 | vie |
希伯来语 | heb |
乌克兰 | ukr |
希腊 | el |
马来语 | may |
捷克 | cs |
罗马尼亚语 | rom |
丹麦语 | dan |
匈牙利 | hu |
挪威语 | nno |
泰国 | th |
乌尔都语 | urd |
克罗地亚语 | hrv |
保加利亚 | bul |
立陶宛 | lit |
拉丁语 | lat |
毛利 | mao |
马来语 | may |
威尔士 | wel |
斯洛伐克语 | sk |
泰卢固语 | tel |
波斯 | per |
拉脱维亚语 | lav |
孟加拉语 | ben |
塞尔维亚 | srp |
阿塞拜疆 | aze |
斯洛文尼亚 | slo |
卡纳达语 | kan |
爱沙尼亚 | est |
马其顿 | mac |
巴斯克语 | baq |
冰岛 | ice |
亚美尼亚 | arm |
尼泊尔语 | nep |
波斯尼亚 | bos |
阿尔巴尼亚 | alb |
斯瓦希里语 | swa |
加利西亚 | glg |
马拉地语 | mar |
旁遮普语 | pan |
索马里 | som |
南非 | afr |
奥克西坦 | oci |
格鲁吉亚 | geo |
白俄罗斯 | bel |
塔吉克语 | tgk |
阿姆哈拉语 | amh |
老挝 | lao |
缅甸 | bur |
错误码
错误码 | 描述 | 说明 | 处理方式 |
---|---|---|---|
0 | success | 成功 | |
-1 | in progress | 识别中 | 请继续重试 |
-2 | audio encode error | 音频编码错误 | 请编码成正确的格式,再提交请求 |
10105 | illegal access | 没有权限 | 检查apiKey,ip,ts等授权参数是否正确 |
10106 | invalid parameter | 无效参数 | 上传必要的参数, 检查参数格式以及编码 |
10107 | illegal parameter | 非法参数值 | 检查参数值是否超过范围或不符合要求 |
10110 | no license | 无授权许可 | 检查参数值是否超过范围或不符合要求 |
10700 | engine error | 引擎错误 | 提供接口返回值,向服务提供商反馈 |
10701 | Audio encode error, only support pcm, aac, mpeg2, opus and flac | 音频编码错误 | 支持pcm, aac, mpeg2, opus 和 flac这几种编码,请选择其中一种 |
10702 | Audio sample error, only support 8000、16000、44100 and 48000 Hz | 音频采样率错误 | 支持 8000、16000、44100 和 48000 Hz,请选择其中一种 |
10202 | websocket connect error | websocket连接错误 | 检查网络是否正常 |
10204 | websocket write error | 服务端websocket写错误 | 检查网络是否正常,向服务提供商反馈 |
10205 | websocket read error | 服务端websocket读错误 | 检查网络是否正常,向服务提供商反馈 |
16003 | basic component error | 基础组件异常 | 重试或向服务提供商反馈 |
10800 | over max connect limit | 超过授权的连接数 | 确认连接数是否超过授权的连接数 |