1. 简介

讯飞开放平台提供开发者实时语音转写websocket接口,基于该接口,开发者可实现将连续的音频流内容,实时识别返回对应的文字流内容。

音频格式:采样率为16K,采样深度为16bits的pcm_s16le音频

2. 接口说明

接口调用包括两个阶段:握手阶段和实时通信阶段。

2.1. 握手阶段

接口地址

  1. ws://rtasr.xfyun.cn/v1/ws?{请求参数}
  2. wss://rtasr.xfyun.cn/v1/ws?{请求参数}

参数格式

  1. key1=value1&key2=value2…(keyvalue都需要进行urlencode

参数说明

参数类型必须说明示例
appidstring讯飞开放平台应用ID595f23df
tsstring当前时间戳,从1970年1月1日0点0分0秒开始到现在的秒数1512041814
signastring加密数字签名(基于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. 请求示例

  1. ws://rtasr.xfyun.cn/v1/ws?appid=595f23df&ts=1512041814&signa=IrrzsJeOFk1NGfJHW6SkHUoN9CU=

2.1.3. 返回值

结果格式为json,字段说明如下:

参数类型说明
actionstring结果标识,started:握手,result:结果,error:异常
codestring结果码(具体见错误码)
datastring结果数据
descstring描述
sidstring会话ID

其中sid字段主要用于DEBUG追查问题,如果出现问题,可以提供sid帮助确认问题。


成功


  1. {
  2. "action":"started",
  3. "code":"0",
  4. "data":"",
  5. "desc":"success",
  6. "sid":"rta0000000a@ch312c0e3f63609f0900"
  7. }

失败


  1. {
  2. "action":"error",
  3. "code":"10110",
  4. "data":"",
  5. "desc":"invalid authorization|illegal signa",
  6. "sid":"rta0000000b@ch312c0e3f65f09f0900"
  7. }

2.2. 实时通信阶段

握手成功后,进入实时通信阶段,此时客户端的主动操作有两种:上传数据和上传结束标识,被动操作有两种:接收转写结果和错误

2.2.1. 上传数据

在实时转写过程中,客户端不断构造binary message发送到服务端,内容是音频的二进制数据。此操作的频率影响到文字结果展现的实时性。

注意:

1.建议音频流每40ms发送1280字节,发送过快可能导致引擎出错;2.音频发送间隔超时时间为15秒,超时服务端报错并主动断开连接。

2.2.2. 上传结束标志

音频数据上传完成后,客户端需发送一个特殊的binary message到服务端作为结束标识,内容是:

  1. {"end": true}

2.2.3. 接收转写结果

交互过程中,服务端不断返回 text message (转写结果) 到客户端。当所有结果发送完毕后,服务端断开连接,交互结束。

结果示例:

  1. {
  2. "action":"result",
  3. "code":"0",
  4. "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",
  5. "desc":"success",
  6. "sid":"rta0000000e@ch312c0e3f6bcc9f0900"
  7. }

其中data为转写结果的json字符串

  1. data
  2. {
  3. "cn":{
  4. "st":{
  5. "bg":"820",
  6. "ed":"0",
  7. "rt":[{
  8. "ws":[{
  9. "cw":[{
  10. "w":"啊",
  11. "wp":"n"
  12. }],
  13. "wb":0,
  14. "we":0
  15. },{
  16. "cw":[{
  17. "w":"喂",
  18. "wp":"n"
  19. }],
  20. "wb":0,
  21. "we":0
  22. },{
  23. "cw":[{
  24. "w":"!",
  25. "wp":"p"
  26. }],
  27. "wb":0,
  28. "we":0
  29. },{
  30. "cw":[{
  31. "w":"你好",
  32. "wp":"n"
  33. }],
  34. "wb":0,
  35. "we":0
  36. },{
  37. "cw":[{
  38. "w":"!",
  39. "wp":"p"
  40. }],
  41. "wb":0,
  42. "we":0
  43. },{
  44. "cw":[{
  45. "w":"我",
  46. "wp":"n"
  47. }],
  48. "wb":0,
  49. "we":0
  50. },{
  51. "cw":[{
  52. "w":"是",
  53. "wp":"n"
  54. }],
  55. "wb":0,
  56. "we":0
  57. },{
  58. "cw":[{
  59. "w":"上",
  60. "wp":"n"
  61. }],
  62. "wb":0,
  63. "we":0
  64. }]
  65. }],
  66. "type":"1"
  67. }
  68. },
  69. "seg_id":5
  70. }

转写结果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. 错误码

错误码描述说明处理方式
0success成功
10105illegal access没有权限检查apiKey,ip,ts等授权参数是否正确
10106invalid parameter无效参数上传必要的参数, 检查参数格式以及编码
10107illegal parameter非法参数值检查参数值是否超过范围或不符合要求
10110no license无授权许可检查参数值是否超过范围或不符合要求
10700engine error引擎错误提供接口返回值,向服务提供商反馈
10202websocket connect errorwebsocket连接错误检查网络是否正常
10204websocket write error服务端websocket写错误检查网络是否正常,向服务提供商反馈
10205websocket read error服务端websocket读错误检查网络是否正常,向服务提供商反馈
16003basic component error基础组件异常重试或向服务提供商反馈
10800over max connect limit超过授权的连接数确认连接数是否超过授权的连接数

3.2. 调用示例

实时语音转写demo go语言

实时语音转写demo python语言

实时语音转写demo java语言

Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间:2019-05-07 07:12:51