语音识别

优质
小牛编辑
314浏览
2023-12-01

1.1. ASR(语音识别) HTTP接口文档

1.1.1. 概述

本文档目的是描述Rokid云ASR(语音识别)Http接口协议,面向想要了解ASR细节,并具有一定开发能力的开发者或用户。

1.1.2. 服务地址

环境地址用途
线上https://mapi.open.rokid.com/rest/asr/requestid对外提供的正式稳定环境

1.1.3. 协议详解

  • 请求认证:在建立http连接时,通过http header authorization 进行权限认证
  • ASR语音识别

1.1.4. HTTP API 接入参考Demo

1.1.5. 协议概述

此协议遵循http协议。协议采用先认证,再使用的方式,步骤如下:

  • 建立 https 连接,注意是 https,在此基础上进行请求认证
  • service 设置为 asr,此连接后续可进行一次语音请求

语音识别

请求
  1. 需要带包含认证信息的 authorization 的 http header 请求认证
  2. 需要带包含asr options信息的 voice-config的http header
  3. 使用 HTTP POST 方式
  4. 其中 Content-Type 为 Content-Type:application/octet-stream
  5. 请求url中的requestid需要自增或者唯一,两个并发请求的requestid相同时可能引发并发错误
  6. 一次完整的语音交互序列包含多个语音数据时,需要发送如下序列的多个 http post 请求:
    1. 第一个请求的 type 设置为 START,并设置好其它参数,此请求可带上语音数据
    2. 后面的多个请求设置 type 为 VOICE,并带上语音数据
    3. 最后一个请求设置 type 为 END 包表示交互结束,此请求可带上语音数据
    4. 以上请求需要使用相同的url,即相同的requestid
  7. 一次完整的语音交互序列只包含一个语音数据时,只需发送一个 http post 请求,其中 type 设置为 ONESHOT,并带上语音数据
  8. 第1点和第2点的authorization和voice-config http header 只需要在 type=START 或者 type=ONESHOT时设置
  9. http header authorization 请看
  10. http header voice-config value值组成如下:
    codec=%s;voice_trigger=%s;engine=%s;need_hotWords=%s
    
    字段说明:
参数类型描述默认值
codecstring语音流的编码,目前支持 PCM,OPU,OPU2,OPUS,AMRWB,AMRNB,PCM8K。
PCM,OPU,OPU2,OPUS,AMRWB 的语音数据格式为单通道,采样率16Khz,16bit;
AMRNB,PCM8K的语音数据格式为单通道,采样率8Khz,16bit;
PCM
voice_triggerstring激活词,即用于唤醒设备的名字,如"若琪";可用 "\" 分隔指定多个,如 "若琪\洛奇"
enginestring语音流引擎,目前支持ZH,KID,ZH-CS。ZH
need_hotWordsbool是否需要热词,保留字段,暂不生效false
  1. http body里面的数据是protobuf 2.0协议的AsrRequest的二进制数据,AsrRequest字段如下是:
参数类型描述默认值
idint32唯一标识,用于跟踪一个完整的请求,处理及响应事件0
typestringSTART、VOICE、END 或 ONESHOT
optionsOptionshttp协议里面不起作用
voicebytes需要识别的语音流
响应
参数类型描述
idint32唯一标识,用于跟踪一个完整的请求,处理及响应事件。
typestring结果类型:INTERMEDIATE、FINISH
asrstringasr实时识别的结果
scoresArray[float]asr实时识别的分数,score[0]=per am score; score[1]=glob am score; score[2]=glob lm score
resultstring结果信息 SUCCESS/ERROR等
asr_phoneticismsstring每个字的拼音结果,json字符串,如“晓”字的拼音为{"phoneticism":"xiao3","word":"晓","type":"CHINESE"}
  1. 包含多个语音数据的语音交互时,仅当是最后一个请求即 type 为 END 的包有以上响应,响应结果是json格式
  2. 只包含一个语音数据的语音交互时,即 type 为 ONESHOT 的请求同样也有以上响应,响应结果是json格式
  3. 其余请求返回为空
  4. http code 除了200以外,还有部分非200的code,取值如下:
code 值涵义
400Bad Request :url格式不对,requestId不对或者为空
405非post方法不可行
413请求体过大,HTTP BODY 最大支持655350;如果超过这个大小,建议用websocket方式进行流式传输
500http协议层错误
  1. http code 为200时,所有请求成功与否由 result 决定:SUCCESS 为成功,其余的为失败,返回值如下:
    • SUCCESS 成功
    • BUSY 云端繁忙/调用受限/欠费
    • UNAUTHENTICATED 验证未通过
    • UNINITIALIZED 没有发START或者ONESHOT包导致SESSION顺序错误
    • INTERNAL 云端内部错误
    • BADREQUEST 网络或者协议导致的错误