有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

1. 回调说明

语音流异步识别通过回调的方式来返回识别结果,用户需要自行搭建可公网访问的 HTTP 或者 HTTPS 服务,并在创建识别任务时,将回调 Url 填写到 CallbackUrl 中。回调时,所有内容会放入 Body 中。Content-Type 为 application/json; charset=UTF-8

2. 回调说明

2.1 Header 参数

参数 类型 描述
CheckSum string 返回结果的签名,如果创建任务时没有传入 SignToken 字段,则 CheckSum 为空。详见 签名生成

2.2 Body 参数(json 格式)

参数 类型 描述
TaskId uint64 语音流异步识别任务的唯一标识,在创建任务时会返回
Result []Sentence 句子/段落级别的识别结果列表
AudioData string 识别结果对应音频数据,base64编码,mp3格式(入参请求 AudioData 需要为 true,该字段才有结果)

Sentence 结构为:

参数 类型 描述
Text string 句子/段落级别文本
StartTime int64 开始时间
EndTime int64 结束时间
VoiceId string 该次识别结果的唯一标识
WordList []Word 词级别的识别结果列表

Word 结构为:

参数 类型 描述
Word string 词级别文本
StartTime int64 开始时间
EndTime int64 结束时间

3. 签名生成

用户创建任务时,如果传入了 SignToken 字段,则回调时会生成一个签名放入 checksum 字段中,用户可用来做签名校验。下面说明签名的生成过程,用户可参考用于校验。

3.1 签名原文生成

签名原文由 用户的 AppID + SignToken + 回调中 BODY 内容 拼接组成,这里以 Appid=1259228442,SignToken=ewef32ee 为例拼接签名原文,如下:

1259228442ewef32ee{"TaskId":100000447,"Result":[{"VoiceId":"1000004470_5ff02063dac60f47a62343b0_1_0_46","Text":"测试","StartTime":17140,"EndTime":17940,"WordList":[]}]}

3.2 签名计算

对签名原文通过 SHA256 算法计算,生成最终签名,以 Python 为例:

import hashlib

sign = hashlib.sha256('1259228442ewef32ee{"TaskId":100000447,"Result":[{"VoiceId":"1000004470_5ff02063dac60f47a62343b0_1_0_46","Text":"测试","StartTime":17140,"EndTime":17940,"WordList":[]}]}').hexdigest()

print(sign)
得到签名为:
550e661c30ceb8fbfc6babb88e7e78aaeae5f908077a2446528023d3e3491f1d

4. 回调 Body 示例

{"TaskId":100000447,"Result":[{"VoiceId":"1000004470_5ff02063dac60f47a62343b0_1_0_46","Text":"测试","StartTime":17140,"EndTime":17940,"WordList":[]}]}

5. 常见问题

5.1 回调周期一般是多久?

如果音频流中存在人声,一般3 - 15秒内会返回该时间段内的语音识别内容。

5.2 过了很久都没有收到回调怎么办?

  • 请确认音频流是否存在,如果存在,请确认是否有数据。
  • 请确认音频流是否一直没有人声出现。