Android PocketSphinx离线语音识别集成总结

       关于Android的离线语音识别的技术,遍观若干厂家唯有科大讯飞和百度有离线的语音识别功能,但是科大讯飞是收费的,百度的离线语音识别就是关键词唤醒,但是只接受3个自定义的唤醒词,而且必须经过评定3分以上唤醒词才可以成功提交,内容限制和数量限制都是很大的局限,可用性很低,大公司的开源技术全部Pass掉了。这个pocketSphinx经过实践准确率还是很不错的,根本上讲实际操作还是关键词唤醒识别,但是能利用pocketSphinx其自定义的语音模型和声音模型的特性,随心所欲的定制想识别的关键词。

       关于PocketSphinx的学习主要是根据这篇文章来的,集成方面很详细很具体:https://www.jianshu.com/p/4310ae932fdd,照着这个来就可以了,其实对于实际开发来说,中文唤醒词仅仅只需要替换language Model(.lm文件)语言模型,和字典模型(.dic文件) 这两个文件就行了,将想要监听的唤醒词txt根据上面贴出的教程链接,上传到网站并下载压缩包,就得到了这两个文件,但是要注意的是,.dic文件并不是想当然的拼音而已,比如设置这个词,其实是:  设置   sh e zh ib,如果碰到这个词了不按照官方的字典文档,pocketsphinx-0.7\model\lm\zh_CN/mandarin_notone.dic去找实际的拼音的话(压缩包解压完的文件夹名是pocketsphinx-0.7),很可能是不能看到正确是识别效果的。

        最重要的一点:dic文件中文字和拼音之间相隔2个空格,字母之间间隔是一个空格,间距不对很可能也不能如预期所愿。

        自己做了个Demo,里面有4个自定义的唤醒词:“下一个界面”,“下一个页面”,“设置界面”,“设置页面”, 画了2个Layout:红色的下一个界面和白色的设置界面, 当说前两个唤醒词,识别之后跳转到红色的界面,当说后两个唤醒词,识别之后跳转到白色的界面,效果如下:

                                                                    

       

实际操作其实便是中规中矩的集成,集成进PocketSphinx后换成自己的字典模型和语言模型,仅仅替换dic和lm两个文件,然后在按钮的长按监听中打开语音识别引擎,在识别后的回调中关闭引擎并根据内容跳转

public AudioRecordButton(final Context context, AttributeSet attrs) {
		super(context, attrs);
		dialogManager = new AudioRecordDialog(getContext());

		setOnLongClickListener(new OnLongClickListener() {

			@Override
			public boolean onLongClick(View v) {
			    //开启语音识别引擎
                PocketSphinxUtil.get(context).start();
				isReady = true;
				dialogManager.showDialog();
				isSpeaking = true;
				return false;
			}
		});
	}
   @Override
    public void onPartialResults(String b) {
        //一次识别之后,停止语音引擎,下次长按再开启
        PocketSphinxUtil.get(context).stop();
        if(b.contains("下一个界面")||b.contains("下一个页面"))
        {
            Intent intent = new Intent(context,NextActivity.class);
            startActivity(intent);
        }else if(b.contains("设置界面")||b.contains("设置页面"))
        {
            Intent intent = new Intent(context,SettingActivity.class);
            startActivity(intent);
        }
    }

  Demo已上传:https://download.csdn.net/download/crystal_xing/10843721

猜你喜欢

转载自blog.csdn.net/Crystal_xing/article/details/84957466