1. 简介
讯飞开放平台提供开发者实时语音转写websocket接口,基于该接口,开发者可实现将连续的音频流内容,实时识别返回对应的文字流内容。
音频格式:采样率为16K,采样深度为16bits的pcm_s16le音频
2. 接口说明
接口调用包括两个阶段:握手阶段和实时通信阶段。
2.1. 握手阶段
接口地址
ws://rtasr.xfyun.cn/v1/ws?{请求参数}
或
wss://rtasr.xfyun.cn/v1/ws?{请求参数}
参数格式
key1=value1&key2=value2…(key和value都需要进行urlencode)
参数说明
参数 | 类型 | 必须 | 说明 | 示例 |
---|---|---|---|---|
appid | string | 是 | 讯飞开放平台应用ID | 595f23df |
ts | string | 是 | 当前时间戳,从1970年1月1日0点0分0秒开始到现在的秒数 | 1512041814 |
signa | string | 是 | 加密数字签名(基于HMACSHA1算法) | IrrzsJeOFk1NGfJHW6SkHUoN9CU= |
2.1.1. signa生成
1.获取baseString,baseString由appid和当前时间戳ts拼接而成,假如appid为595f23df,ts为1512041814,则baseString为
595f23df1512041814
2.对baseString进行MD5,假如baseString为上一步生成的595f23df1512041814,MD5之后则为
0829d4012497c14a30e7e72aeebe565e
3.以apiKey为key对MD5之后的baseString进行HmacSHA1加密,假如apiKey为d9f4aa7ea6d94faca62cd88a28fd5234,MD5之后的baseString为上一步生成的0829d4012497c14a30e7e72aeebe565e,则加密之后signa为
IrrzsJeOFk1NGfJHW6SkHUoN9CU=
备注:
- apiKey:接口密钥,在应用中添加实时语音转写服务时自动生成,调用方注意保管;
- signa的生成公式:HmacSHA1(MD5(appid + ts),api_key),具体的生成方法详见【调用示例】;
2.1.2. 请求示例
ws://rtasr.xfyun.cn/v1/ws?appid=595f23df&ts=1512041814&signa=IrrzsJeOFk1NGfJHW6SkHUoN9CU=
2.1.3. 返回值
结果格式为json,字段说明如下:
参数 | 类型 | 说明 |
---|---|---|
action | string | 结果标识,started:握手,result:结果,error:异常 |
code | string | 结果码(具体见错误码) |
data | string | 结果数据 |
desc | string | 描述 |
sid | string | 会话ID |
其中sid字段主要用于DEBUG追查问题,如果出现问题,可以提供sid帮助确认问题。
成功
{
"action":"started",
"code":"0",
"data":"",
"desc":"success",
"sid":"rta0000000a@ch312c0e3f63609f0900"
}
失败
{
"action":"error",
"code":"10110",
"data":"",
"desc":"invalid authorization|illegal signa",
"sid":"rta0000000b@ch312c0e3f65f09f0900"
}
2.2. 实时通信阶段
握手成功后,进入实时通信阶段,此时客户端的主动操作有两种:上传数据和上传结束标识,被动操作有两种:接收转写结果和错误
2.2.1. 上传数据
在实时转写过程中,客户端不断构造binary message发送到服务端,内容是音频的二进制数据。此操作的频率影响到文字结果展现的实时性。
注意:
1.建议音频流每40ms发送1280字节,发送过快可能导致引擎出错;2.音频发送间隔超时时间为15秒,超时服务端报错并主动断开连接。
2.2.2. 上传结束标志
音频数据上传完成后,客户端需发送一个特殊的binary message到服务端作为结束标识,内容是:
{"end": true}
2.2.3. 接收转写结果
交互过程中,服务端不断返回 text message (转写结果) 到客户端。当所有结果发送完毕后,服务端断开连接,交互结束。
结果示例:
{
"action":"result",
"code":"0",
"data":"{\"cn\":{\"st\":{\"bg\":\"820\",\"ed\":\"0\",\"rt\":[{\"ws\":[{\"cw\":[{\"w\":\"啊\",\"wp\":\"n\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"喂\",\"wp\":\"n\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"!\",\"wp\":\"p\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"你好\",\"wp\":\"n\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"!\",\"wp\":\"p\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"我\",\"wp\":\"n\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"是\",\"wp\":\"n\"}],\"wb\":0,\"we\":0},{\"cw\":[{\"w\":\"上\",\"wp\":\"n\"}],\"wb\":0,\"we\":0}]}],\"type\":\"1\"}},\"seg_id\":5}\n",
"desc":"success",
"sid":"rta0000000e@ch312c0e3f6bcc9f0900"
}
其中data为转写结果的json字符串
data:
{
"cn":{
"st":{
"bg":"820",
"ed":"0",
"rt":[{
"ws":[{
"cw":[{
"w":"啊",
"wp":"n"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"喂",
"wp":"n"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"!",
"wp":"p"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"你好",
"wp":"n"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"!",
"wp":"p"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"我",
"wp":"n"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"是",
"wp":"n"
}],
"wb":0,
"we":0
},{
"cw":[{
"w":"上",
"wp":"n"
}],
"wb":0,
"we":0
}]
}],
"type":"1"
}
},
"seg_id":5
}
转写结果data字段说明如下:
字段 | 含义 | 描述 |
---|---|---|
bg | 句子开始时间 | 中间结果的bg为准确值 |
ed | 句子结束时间 | 中间结果的ed为0 |
w | 词识别结果 | |
wp | 词标识 | n-普通词;s-顺滑词;p-标点 |
wb | 词开始时间 | 中间结果的 wb 为 0 |
we | 词结束时间 | 中间结果的 we 为 0 |
type | 结果类型标识 | 0-最终结果;1-中间结果 |
seg_id | 转写结果序号 | 从0开始 |
2.2.4. 接收错误信息
交互过程中,在服务端出现异常而中断服务时(如会话超时),会将异常信息以 text message 形式返回给客户端并关闭连接。
3. 附录
3.1. 错误码
错误码 | 描述 | 说明 | 处理方式 |
---|---|---|---|
0 | success | 成功 | |
10105 | illegal access | 没有权限 | 检查apiKey,ip,ts等授权参数是否正确 |
10106 | invalid parameter | 无效参数 | 上传必要的参数, 检查参数格式以及编码 |
10107 | illegal parameter | 非法参数值 | 检查参数值是否超过范围或不符合要求 |
10110 | no license | 无授权许可 | 检查参数值是否超过范围或不符合要求 |
10700 | engine error | 引擎错误 | 提供接口返回值,向服务提供商反馈 |
10202 | websocket connect error | websocket连接错误 | 检查网络是否正常 |
10204 | websocket write error | 服务端websocket写错误 | 检查网络是否正常,向服务提供商反馈 |
10205 | websocket read error | 服务端websocket读错误 | 检查网络是否正常,向服务提供商反馈 |
16003 | basic component error | 基础组件异常 | 重试或向服务提供商反馈 |
10800 | over max connect limit | 超过授权的连接数 | 确认连接数是否超过授权的连接数 |
3.2. 调用示例
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间:2019-05-07 07:12:51