基於訊飛語音API應用開發之——離線詞典構建


  最近實習在做一個跟語音相關的項目,就在度娘上搜索了很多關於語音的API,順藤摸瓜找到了科大訊飛,雖然度娘自家也有語音識別、語義理解這塊,但感覺應該不是很好用,畢竟之前用過百度地圖的API,有問題也找不到人幫忙解決(地圖開發者群里都是潛水的)...不得不說,科大訊飛在語音這塊尤其是中文識別方面做的真心不錯,而且Android還支持離線識別。

  訊飛官方給的文檔內容很詳細,在這我就不贅述了。在開發中,由於一些原因需要用到離線識別這塊,就學習了一下。訊飛離線識別只支持Android系統,使用時需要安裝訊飛語音+,同時還要自己寫離現實別的字典(BNF)。關於BNF的文檔,我會在后面放出下載連接。在這里先給個簡單的BNF樣例:

1 #BNF+IAT 1.0 utf-8;
2 !grammar call;
3 !slot <list>;
4 !start <speech>;
5 <speech>:<list>;
6 <list>:盲人聽書|在線音樂|影音播放|小說;

  當要更新BNF時,確切的說應該是更新某個槽(<slot>)時,可以調用SpeechRecognize的updateLexicon。例如更新以上BNF的槽,用如下代碼即可:

 1     String grammar = "你好\n我好\n大家好\n廣州好迪\n";
 2     mSpeechRecognize.updateLexicon("<list>",grammar,mLexiconListener);
 3     /**
 4     * 初始化詞典更新完成回調接口
 5     */
 6     private LexiconListener mLexiconListener = new LexiconListener() {
 7 
 8         @Override
 9         public void onLexiconUpdated(String grammarId, SpeechError errorCode) {
10             if (errorCode == null) {
11                 Log.d(TAG, "詞典更新成功!Grammar ID:" + grammarId);
12             } else {
13                 Log.d(TAG, "詞典更新失敗!Error Code:" + errorCode.getErrorCode());
14             }
15         }
16 
17     };

  嗯,就是這樣,語法文件其實不難寫,離線詞典動態更新其實也不難。

  相關資源:BNF開發文檔

 

作者:登天路

轉載請說明出處:http://www.cnblogs.com/travellife/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM