基于百度人工智能语音识别 REST API 的开源库 libasrutil

转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp

作者联系方式:YU TAO

关键字: baidu asr,automatic speech recognition,百度语音识别,语音识别,翻译,translate, REST API,VAD,Voice Active Detection,http chunk, AI,人工智能

libasrutil 是基于百度人工智能语音识别 REST API 的一个 ASR (automatic speech recognition) 工具库,这里将相关内容做一个记录。

asrutil is a utility for ASR (automatic speech recognition), it is based on baidu asr sample.

github 开源项目地址

https://github.com/mimepp/libasrutil

语音识别引擎

对比了国内若干语音识别的引擎,包括讯飞、百度、思必驰、阿里,最后根据自己的实用需要选择了百度的语音识别。

百度的语音识别没有访问次数限制,速度和识别度也可以,而且百度还有中英等多语言互译翻译引擎,比较满足应用的需要。

因为要使用 C 语言来做嵌入系统上的开发,所以主要参考的是百度的 REST API 的 sample 程序,但其太过简单,需要自己做大量的开发才有好的实用价值。

HTTP chunk

虽然官方没说支持 http chunk 分块发送方式,但实际中可以用此方式来优化数据的发送过程。否则要等数据全部获得后再一次发送出去,等待的周期会过长,影响识别时间。

见 libasrutil/src/tests/ 下含 chunked 的文件名例子,很实用。

如一分钟的语音,可以提前分多段发送出去做语音转换,而不是等一分钟后才去做转换。

VAD (Voice Active Detection)

在实际应用中,发现处理连续的语音无法正确的断句,后来增加了 VAD 功能后,就可以在中间有停顿时作为断句,开始做语音识别,从而缩短了显示识别结果的周期。

这里实现 VAD 的原理就是判断数据是否在正负交替,即穿越水平0轴,说明是有语音数据的。而且这时的数据是有一定的能量的,说明是说话的声音,而不是干扰的噪声。

见 libasrutil/src/asrutil_util.c 中 asrutil_vad_check 部分。

应用例子见 libasrutil/src/tests/ 下含 vad 的文件名,很好很强大。

特别感谢 曾福 的文章 https://zhuanlan.zhihu.com/p/28805254 。

测试文件

在 libasrutil/media_files 下放置了很多测试用的文件,有中文的语音内容,也有英文的语音内容,你可以直接使用,不用再自己去转换为 1ch 16bit 8khz pcm (百度语音识别要求的格式)了。

 

 

你可能感兴趣的:(50.,linux/uclinux,AI,语音识,人工智能)