全部产品
阿里云办公

接口说明

更新时间:2019-01-15 19:30:07

功能介绍

对长时间的语音数据流进行识别,适用于会议演讲、视频直播等长时间不间断识别的场景。

  • 支持音频编码格式:PCM;
  • 支持音频采样率:8000Hz、16000Hz;
  • 支持对返回结果进行设置:是否返回中间识别结果,是否在后处理中添加标点,是否将中文数字转为阿拉伯数字输出。
  • 支持多种语言的识别,可在控制台编辑项目进行模型选择

服务地址

访问类型 说明 URL
外网访问 所有服务器均可使用外网访问URL(SDK中默认设置了外网访问URL,不需用户设置) wss://nls-gateway.cn-shanghai.aliyuncs.com/ws/v1
阿里云上海ECS内网访问 用户使用阿里云上海ECS(即ECS地域为华东2(上海)),可使用内网访问URL ws://nls-gateway.cn-shanghai-internal.aliyuncs.com/ws/v1

交互流程

long-asr

说明:所有服务端的响应都会在返回信息的header包含task_id参数,用于表示本次识别任务的ID,请记录下这个值,如果发生错误,请将task_id和错误信息提交到工单。

0. 鉴权

客户端在与服务端建立WebSocket链接的时候,需要使用Token进行鉴权。Token获取请阅读获取访问令牌一节。

1. start and confirm

客户端发起请求,服务端确认请求有效。其中在请求消息中需要进行参数设置,各参数由SDK中SpeechTranscriber对象的相关set方法设置,各参数含义如下:

参数 类型 是否必需 说明
appkey String 控台创建的项目Appkey
format String 音频编码格式,默认是PCM
sample_rate Integer 音频采样率,默认是16000Hz,请根据音频的采样率在管控台对应项目中配置支持该采样率及场景的模型
enable_intermediate_result Boolean 是否返回中间识别结果,默认是False
enable_punctuation_prediction Boolean 是否在后处理中添加标点,默认是False
enable_inverse_text_normalization Boolean 是否在后处理中执行ITN,设置为true时,中文数字将转为阿拉伯数字输出,默认是False

2. send and recognize

循环发送语音数据,持续接收识别结果:

  • SentenceBegin事件表示服务端检测到了一句话的开始。实时语音识别服务的智能断句功能会判断出一句话的开始与结束,如:
  1. {
  2. "header": {
  3. "message_id": "05450bf69c53413f8d88aed1ee600e93",
  4. "task_id": "640bc797bb684bd69601856513079df5",
  5. "namespace": "SpeechTranscriber",
  6. "name": "SentenceBegin",
  7. "status": 20000000,
  8. "status_message": "GATEWAY|SUCCESS|Success."
  9. },
  10. "payload": {
  11. "index": 1,
  12. "time": 320
  13. }
  14. }

header对象参数说明:

参数 类型 说明
namespace String 消息所属的命名空间
name String 消息名称,SentenceBegin表示一个句子的开始
status Integer 状态码,表示请求是否成功,见服务状态码
status_text String 状态消息
task_id String 任务全局唯一ID,请记录该值,便于排查问题
message_id String 本次消息的ID

payload对象参数说明:

参数 类型 说明
index Integer 句子编号,从1开始递增
time Integer 当前已处理的音频时长,单位是毫秒
  • TranscriptionResultChanged事件表示识别结果发生了变化。仅当enable_intermediate_result=true时会返回此消息,且多次返回,即一句话的中间识别结果,如:
  1. {
  2. "header": {
  3. "message_id": "05450bf69c53413f8d88aed1ee600e93",
  4. "task_id": "640bc797bb684bd69601856513079df5",
  5. "namespace": "SpeechTranscriber",
  6. "name": "TranscriptionResultChanged",
  7. "status": 20000000,
  8. "status_message": "GATEWAY|SUCCESS|Success."
  9. },
  10. "payload": {
  11. "index": 1,
  12. "time": 1800,
  13. "result": "今年双十一",
  14. "confidence":1.0
  15. }
  16. }

header对象参数同上述表格说明,name为TranscriptionResultChanged表示句子的中间识别结果。payload对象参数说明:

参数 类型 说明
index Integer 句子编号,从1开始递增
time Integer 当前已处理的音频时长,单位是毫秒
result String 当前句子的识别结果
confidence Double 当前句子识别结果的置信度,取值范围[0.0, 1.0],值越大表示置信度越高
  • SentenceEnd事件表示服务端检测到了一句话的结束,并附带返回该句话的识别结果,如:
  1. {
  2. "header": {
  3. "message_id": "05450bf69c53413f8d88aed1ee600e93",
  4. "task_id": "640bc797bb684bd69601856513079df5",
  5. "namespace": "SpeechTranscriber",
  6. "name": "SentenceEnd",
  7. "status": 20000000,
  8. "status_message": "GATEWAY|SUCCESS|Success."
  9. },
  10. "payload": {
  11. "index": 1,
  12. "time": 3260,
  13. "begin_time": 1800,
  14. "result": "今年双十一我要买电视",
  15. "confidence": 1.0
  16. }
  17. }

header对象参数同上述表格说明,name为SentenceEnd表示识别到句子的结束。payload对象参数说明:

参数 类型 说明
index Integer 句子编号,从1开始递增
time Integer 当前已处理的音频时长,单位是毫秒
begin_time Integer 当前句子对应的SentenceBegin事件的时间,单位是毫秒
result String 当前的识别结果
confidence Double 当前句子识别结果的置信度,取值范围[0.0, 1.0],值越大表示置信度越高

3. stop and complete

通知服务端语音数据发送完成,服务端识别结束后通知客户端识别完毕

服务状态码

在服务的每一次响应中,都包含status字段,即服务状态码,状态码各种取值含义如下:

通用错误:

错误码 原因 解决办法
40000001 身份认证失败 检查使用的令牌是否正确,是否过期
40000002 无效的消息 检查发送的消息是否符合要求
40000003 令牌过期或无效的参数 首先检查使用的令牌是否过期,然后检查参数值设置是否合理
40000004 空闲超时 确认是否长时间没有发送数据到服务端
40000005 请求数量过多 检查是否超过了并发连接数或者每秒钟请求数
40000000 默认的客户端错误码 查看错误消息或提交工单
50000000 默认的服务端错误 如果偶现可以忽略,重复出现请提交工单
50000001 内部GRPC调用错误 如果偶现可以忽略,重复出现请提交工单

网关错误:

错误码 原因 解决办法
40010001 不支持的接口 使用了不支持的接口,如果使用SDK请提交工单
40010002 不支持的指令 使用了不支持的指令,如果使用SDK请提交工单
40010003 无效的指令 指令格式错误,如果使用SDK请提交工单
40010004 客户端提前断开连接 检查是否在请求正常完成之前关闭了连接
40010005 任务状态错误 发送了当前任务状态不能处理的指令

Meta错误:

错误码 原因 解决办法
40020105 应用不存在 检查应用appKey是否正确,是否与令牌归属同一个账号

实时语音识别:

错误码 原因 解决办法
41040201 客户端10s内停止发送数据 检查网络问题,或者检查业务中是否存在不发数据的情况
41040202 客户端发送数据过快,服务器资源已经耗尽 检测客户端发包是否过快,是否按照1:1的实时率来发包
41040203 客户端发送音频格式不正确 请将音频数据的格式转换为SDK目前支持的音频格式来发包
41040204 客户端调用方法异常 客户端应该先调用发送请求接口,在发送请求完毕后再调用其他接口
41040205 客户端设置MAXSILENCE_PARAM方法异常 参数MAXSILENCE_PARAM的范围在[200-2000]
51040101 服务端内部错误 未知错误
51040102 保留参数 ASR_SERVICE_UNAVAILABLE
51040103 实时语音识别服务不可用 需要查看实时语音识别服务是否有任务堆积等导致任务提交失败
51040104 请求实时语音识别服务超时 具体需要排查实时语音识别日志
51040105 调用实时语音识别服务失败 检查实时语音识别服务是否启动,端口是否正常开启
51040106 实时语音识别服务负载均衡失败,未获取到实时语音识别服务的IP地址 检查VPC中的实时语音识别服务机器是否有异常