一揉忘、下載,編譯
從官網(wǎng)下載sphinxbase画舌、pocketsphinx
https://cmusphinx.github.io/wiki/download/
將sphinxbase源碼包解壓縮辕近,直接雙擊sphinxbase.sln打開解決方案欢伏。只需要編譯sphinxbase一個項目就可以了
將pocketsphinx源碼包解壓縮,直接雙擊pocketsphinx.sln打開項目嚣州。要注意讓sphinxbase鲫售、pocketsphinx的項目目錄在一起,這樣pocketsphinx可以引用到sphinxbase的頭文件和庫文件该肴。編譯pocketsphinx_continuous項目情竹。
注意,要將sphinxbase生成的sphinxbase.dll拷貝一份到pocketsphinx的bin\Debug\Win32下面匀哄。因為這個目錄下有一個已經(jīng)編譯好的sphinxbase.dll秦效,但是是用VS2012編譯的,需要依賴MSVCR110D.DLL涎嚼。
二涩笤、生成自己的關(guān)鍵字字庫
新建關(guān)鍵字文件keyword.txt,輸入若干關(guān)鍵詞贤壁,每行一個關(guān)鍵詞侄刽。注意這個關(guān)鍵字文件要求utf-8編碼,無BOM頭鹊汛,\n換行蒲赂,因此最好在Linux下面編輯。用UE等高級編輯器也可以刁憋。
使用在線lm工具
http://www.speech.cs.cmu.edu/tools/lmtool-new.html
將keyword.txt上傳上去滥嘴,會生成一堆.dic .lm .vocab等文件。直接下載.tgz的整合文件至耻,解壓縮若皱,里面有用的只有.dic和.lm文件镊叁。由于lmtool不識別中文,因此.dic文件是空的走触。需要自己手動添加注音
到官網(wǎng)下載普通話的完整hmm模型 zh_broadcastnews_16k_ptm256_8000.tar.bz2 和完整的字典 zh_broadcastnews_utf8.dic
https://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/Mandarin/
參照完整的字典 zh_broadcastnews_utf8.dic晦譬,對lmtool生成的.dic文件進行注音,例如
哈密瓜 h a m i g ua
有些名詞zh_broadcastnews_utf8.dic里面沒有互广,需要自己一個個字拼起來敛腌,例如山竹沒有,但是有山和竹的拼音
北山 b ei sh an
成竹 ch eng zh u
則
山竹 sh an zh u
拼音還是比較好辦的
三惫皱、運行測試
到命令行下像樊,進入pocketsphinx\bin\Debug\Win32目錄。把上面生成的.lm文件和自己編輯的.dic文件拷貝過來旅敷,把zh_broadcastnews_ptm256_8000整個解壓縮后的目錄拷貝過來生棍。運行命令
pocketsphinx_continuous -inmic yes -hmm zh_broadcastnews_ptm256_8000 -lm 1687.lm -dict 1687.dic
由于dict文件是utf-8編碼的,因此pocketsphinx_continuous顯示中文會亂碼媳谁。解決辦法參考
https://blog.csdn.net/itas109/article/details/78999477
recognize_from_microphone()函數(shù)中修改為
hyp = ps_get_hyp(ps, NULL );
if (hyp != NULL) {
std::string str = UTF8_To_string(hyp);
printf("%s\n", str.c_str());
fflush(stdout);
}
四涂滴、問題
在測試中發(fā)現(xiàn),使用zh_broadcastnews_ptm256_8000的模型識別速度很慢晴音,說完話半天才開始識別柔纵。網(wǎng)上其他文章提到使用的模型是tdt_sc_8k。這個tdt_sc_8k是附帶在pocketsphinx-0.8版本之中的段多,最新版的5prealpha中已經(jīng)刪掉了首量,只剩下一個英文的模型。換成tdt_sc_8k模型以后进苍,識別速度快很多了加缘,但是誤識別問題還是比較嚴重的,就是會把一些不相干的語音識別成字典中的詞語觉啊。
參考
https://blog.csdn.net/itas109/article/details/78999477
https://www.cnblogs.com/yin52133/archive/2012/07/12/2588201.html