基於Kaldi的中文在線識別系統


 本文來自公眾號“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大道理”,選擇“關注”公眾號

 

—————————————————————

​     

—————————————————————

 

投稿吧   | 留言吧

 


免責聲明!

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



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