腾讯AI语音识别API踩坑记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kangear/article/details/82152877

腾讯AI语音识别API踩坑记录

介绍

以前不习惯“踩坑”这个词,现在也不习惯。不过看大家都在用,我也用一下试试。

腾讯AI语音识别分为三个版本,分别是ECHO流式微信专用流式。前两个比较好理解,为什么还有一个微信专用流式呢?这是因为微信小程序中录音API录制的音频格式只能是压缩过的mp3/ogg格式,而一般语音识别API都只识别一些非压缩格式,比如WAV,PCM等等。所以腾讯另外添加了微信专用流式

一般来讲,像这种第三方API调用都比较简单,把需要传递的参数加上APP_KEY和APP_ID一并给服务器传递过去,就可以得到相应的返回数据。而腾讯AI语音识别API需要额外的接口鉴权,鉴权正确了才会返回正确结果。

接口鉴权

接口鉴权通俗讲就是把所有的参数按照一定顺序排列然后做一个MD5计算,把计算结果当成一个参数传递给服务器,服务器在接收到请求时也会计算一下MD5值,与客户端传递过来的MD5值进行匹配,如果值一致就进一步处理,如果不一致则报鉴权失败的错误{ret: 16388, msg: "sign invalid", data: {…}}

接口鉴权官方介绍里提供了PHP语言的DEMO,如果需要用JS版本的,可以看这里我封装的一个DEMO,该DEMO确认可行的。

对于接口鉴权需要额外补充的是如果调用API时传递了一个参数,且该参数参与了接口鉴权的MD5计算,那么服务器也会报一个sign invalid的错误,原因是服务器在接口鉴权时只会使用会用到的参数,你多传递的参数只有在客户端参与了MD5计算,而服务器上没有使用这个参数进行计算,从而导致计算出的MD5值不一样。多传参数时并不会报错,这是一个小坑。

这里把参数整理方便对比:

echo 流式版 流式版(WeChat AI)
app_id app_id app_id
format format format
rate rate rate
- - bits
- seq seq
- len len
- end end
- speech_id speech_id
speech speech_chunk speech_chunk
- - cont_res
time_stamp time_stamp time_stamp
nonce_str nonce_str nonce_str
sign sign sign

猜你喜欢

转载自blog.csdn.net/kangear/article/details/82152877
今日推荐