1. 程式人生 > >&1. kaldi學習之路 之 kaldi中TIMIT例項執行

&1. kaldi學習之路 之 kaldi中TIMIT例項執行

       TIMIT全稱The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus, 是由德州儀器(TI)、麻省理工學院(MIT)和坦福研究院(SRI)合作構建的聲學-音素連續語音語料庫。TIMIT資料集的語音取樣頻率為16kHz,一共包含6300個句子,由來自美國八個主要方言地區的630個人每人說出給定的10個句子,所有的句子都在音素級別(phone level)上進行了手動分割,標記。70%的說話人是男性;大多數說話者是成年白人。 TIMIT的詳細介紹可以參考這篇部落格,我覺得介紹的比較詳細。

TIMIT語音庫有著準確的音素標註,是一個學習用的好例子。在kaldi裡面可以找到其語音識別的範例。

但是由於這個資料庫是商業用的,所以Kaldi裡面並沒有附帶資料。但是資料又可以從網路上找到。

一、下載TIMIT資料集

       1. 網上有很多可以下載資料集的網站,我找到一篇部落格,提供了TIMIT下載路徑。

       2. 下載完了後將timit資料包TIMIT.zip從Windows拷貝到linux的對應資料夾./kaldi-trunk/egs/timit/s5/data中,然後解壓即可。

二、修改資料集的目錄

       找到資料夾./kaldi-trunk/egs/timit/s5中的./run.sh檔案,修改如下兩行

#timit=/export/corpora5/LDC/LDC93S1/timit/TIMIT # @JHU
timit=/mnt/matylda2/data/TIMIT/timit # @BUT
       修改成你的路徑:
#timit=/home/tanfengyun/kaldi-trunk/egs/timit/s5/data/TIMIT # @JHU
timit=/home/tanfengyun/kaldi-trunk/egs/timit/s5/data/TIMIT # @BUT

三、執行

       接下來在終端上切換到./run.sh所在的目錄,我的是./kaldi-trunk/egs/timit/s5,執行sudo ./run.sh

     由於機器配置不夠,導致資源消耗完,執行到了“SGMM2 Training & Decoding”這一步就中止了,後面的”SGMM2”, ”MMI+SGMM2”,”DNN + SGMM2”都沒有執行成功,以後想辦法在伺服器上跑一下。下面輸入以下程式碼:

#!/bin/bash
for x in exp/{mono,tri,sgmm,dnn,combine}*/decode*; do [ -d $x ] && echo $x | grep "${1:-.*}" >/dev/null && grep WER $x/wer_* 2>/dev/null | utils/best_wer.sh; done
for x in exp/{mono,tri,sgmm,dnn,combine}*/decode*; do [ -d $x ] && echo $x | grep "${1:-.*}" >/dev/null && grep Sum $x/score_*/*.sys 2>/dev/null | utils/best_wer.sh; done

       看一下tr3,tr2,tr1單音素的識別詞錯率的部分結果:


Question:

       執行過程並不是一帆風順,出現了“Output of qsub was: sh: 1: qsub: not found”錯誤


       於是,百度解決辦法,發現了這是因為 TIMIT 的這個例子部署在多機器上,我們想要在本地執行所有的任務,需要根據cmd.sh 中的提示修改下配置,即將
cmd.sh提示如下圖:


      提示中說將以下幾行中的"queue.pl"改為“run.pl”。

export train_cmd=queue.pl
export decode_cmd=queue.pl
export cuda_cmd=queue.pl
export mkgraph_cmd=queue.pl

      或者我們註釋掉上圖中所有的配置,新增最下面四行,最後再執行./run.sh即可。