1. 程式人生 > >Android PocketSphinx離線語音識別整合總結

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