版权声明:本文为elecdog原创文章,可以转载,但必须在明确位置注明出处!谢谢合作。

关于语音识别,国内已经有比较好的公司推出相关的服务了,比如百度免费的离在线融合语音识别以及讯飞收费的在线和离线语音识别服务。这里不作过多介绍,需要的同学可以直接去官网阅读接入文档。这里要介绍的是一个离线语音识别的开源项目——CMU PocketSpinnx,在安卓开发中的使用。在智能家居 APP 开发中常需要在没法联网的设备识别一些比较简单的命令词,百度的离在线融合语音识别识别率还不错,不过在设备连接局域网的情况下仍然优先使用在线识别,导致识别时间太长或者转换不过来,讯飞离线语音识别没有使用过,因为是收费的,而且对于个人开发者价格也不便宜,相比较之下,PocketSpinnx则是完全离线的语音识别,只要按照要求部署项目,识别率也差强人意。

首先我们可以通过 PocketSpinnx 官网的介绍来了解该离线语音识别项目的工作原理,能够加深对项目使用的理解。下面我们一步一步来把PocketSpinnx的离线语音识别功能引入到我们自己的项目中来。

获取语言模型

首先我们需要把想要识别的命令词编写成命令集,打开 Sublime Text 新建 txt 文件,编码采用 utf-8,每一行写一个命令词,如图所示: