本文來自公眾號“AI大道理”。
三音子模型詞錯誤率為:36.03%,對比單音素模型詞錯誤率為50.58%。
可見三音素模型識別率已經有了提高。
不管模型識別率怎么樣,先利用三音子模型搭建一個中文在線識別系統看看效果。
本文主要搭建在線語音識別,還有一種離線語音識別,兩者有什么區別呢?
在線語音識別擁有較高的識別率,由於要鏈接網絡,導致響應速度相對較慢。
離線語音由於在本地識別,響應速度快,但是識別率卻相對較低。
1)安裝portaudio
PortAudio是一個免費、跨平台、開源的音頻I/O庫。
PortAudio操作的I/O不是文件,而是音頻設備。
PortAudio的API非常簡單,通過一個一個簡單的回調函數或者阻塞的讀/寫接口來錄制或者播放聲音。
在安裝Kladi的時候,tools文件夾下有安裝portaudio的腳本文件。
在tools文件夾下,執行:
./install_portaudio.sh
安裝好后,cd到src下面,執行:make ext。
2)創建系統目錄
從kaldi的實例voxforge中把online_demo拷貝到thchs30下,和s5同級。
在online_demo下新近online-data和work兩個文件夾。
在online-data下新建audio和models。
audio放要識別的wav,將thchs30-openslr中的test文件夾下的前五個拷貝過來,就是要識別的wav格式的語音了。
同時新建一個trans.txt空文件。
models下新建tri1,把s5/exp/tri1下的final.mdl和35.mdl拷貝過去,把s5/exp下的tri1下的graph_word里面的words.txt和HCLG.fst也拷過去。
3)修改run.sh
注釋掉下載語料的代碼
修改模型類型
修改調用解碼識別程序的參數
識別麥克風語音的代碼:
識別已經錄好的語音代碼:
4)系統運行
cd到online_demo下面,執行./run.sh。
識別結果:
真正結果(標簽):
可見識別結果有一定出入。
cd到online_demo下面,執行./run.sh --test-mode live。
問題:
PortAudio failed to open the default stream
解決:
1)檢查linux系統錄音功能是否可用:arecord -d 10 test.wav。
2)檢查portaudio是否安裝成功。
進入kaldi/tools目錄 cd kaldi/tools
重新安裝 ./install_portaduio.sh
如果之前安裝過一遍,一定要先進入tools/portaudio,然后make clean,否則沒有用。
有些時候一些依賴沒有也會安裝,但是程序不可用,可以進入kaldi/tools/portaudio,然后./configure,通常情況alsa顯示no,通過sudo apt-get install libasound-dev可以解決。
3)檢查online-wav-gmm-decode-faster是否使用第二步編譯出來的庫,通過情況會因為之前編譯過一遍,所以即使portaudio重新編譯了,online-wav-gmm-decode-faster還是沒有鏈接到新的庫,可以使用ldd online-wav-gmm-decode-faster查看。
進入kaldi/src/online和kaldi/src/onlinebin,分別make clean ,make就完美解決。
本文調通了中文語音在線識別系統,包括wav作為輸入的語音識別和麥克風作為輸入的語音識別。
識別的模型使用三音素模型。
該系統會一直進行識別,后期考慮做個喚醒系統。
——————
淺談則止,細致入微AI大道理
掃描下方“AI大道理”,選擇“關注”公眾號
—————————————————————
—————————————————————