[轉]Kaldi語音識別

轉:http://ftli.farbox.com/post/kaldizhong-wen-shi-biepost

 

Kaldi語音識別 1.聲學建模單元的選擇 1.1對聲學建模單元加入位置信息 2.輸入特徵 3.區分性技術 4.多音字如何處理? 5.Noise Robust ASR 
6.Deep Learning[DNN/CNN替換GMM] 7.在手機等資源受限設備 author:Feiteng Email:lifeiteng0422@gmail.com date:2014/08/10 Kaldi訓練腳本針對不一樣的語料庫,須要重寫數據準備部分,腳本通常放在conf、local文件夾裏; conf放置一些配置文件,如提取mfcc、filterbank等特徵參數的配置,解碼時的一些參數配置 local通常用來放置處理語料庫的數據準備部分腳本 > 中文識別,應該準備:發音詞典、音頻文件對應的文本內容和(文件標註)一個基本可用的語言模型(解碼時使用) 注:通常狀況下,在模型訓練階段LM對ASR的參數訓練沒有影響,即不影響GMM、HMM、DNN/CNN的參數值;使用區分度模型訓練會有影響[生成Lattice候選] 1.聲學建模單元的選擇 全音節[是否帶聲調]、聲韻母[是否帶聲調]、音素? > 帶聲調的聲韻母做爲建模單元是比較常見的中文識別選擇,也有一些文章指出,使用更細化的phones 集能夠有更多的性能提高: 中文連續語音識別系統音素建模單元集的構建——包葉波等 基於發音特徵的漢語普通話語音聲學建模——顏永紅等 基於發音特徵的漢語聲調建模方法及其在漢語語音識別中的應用——劉文舉等 1.1對聲學建模單元加入位置信息 For instance, we'd have: AA AA_B AA_E AA_I AA_S for (B)egin, (E)nd, (I)nternal and (S)ingleton and in the case of silence SIL SIL SIL_B SIL_E SIL_I SIL_S 仍然要注意,中英文的差異,中文聲學建模單元可能不含有所有的_B _E _I _S 2.輸入特徵 MFCC、fbank、PLP 使用對角協方差矩陣的GMM因爲忽略了不一樣特徵維度的相關性MFCC更適合用來作特徵 DNN/CNN能夠對更好的利用這些相關性,把MFCC的DCT省略,使用fbank特徵能夠更多地下降WER tips: Deep Learning更可能是實驗性質,解釋多半是迎合實驗現象 甚至直接從語音波形圖上直接提取特徵 IBM-Tara N. Sainath-2014-IMPROVEMENTS TO FILTERBANK AND DELTA LEARNING Tara N. Sainath發表了一系列的CNN on Speech的文章,我以爲質量是CNN on Speech的文章中最好的 中文是帶聲調的語言,聲調不一樣,差異不少,所以能夠在特徵上加入聲調信息 2014-A DNN-BASED ACOUSTIC MODELING OF TONAL LANGUAGE AND ITS APPLICATION TO MANDARIN PRONUNCIATION TRAINING 2014-AUTOMATIC PHONETIC SEGMENTATION IN MANDARIN CHINESE BOUNDARY MODELS, GLOTTAL FEATURES AND TONE Noise Robust feature? LiDeng2013-An Overview of Noise-Robust Automatic Speech Recognition 3.區分性技術 區別特徵提取:LDA、MLLR、SAT、fbMMI 區分度模型訓練:MMI、MPE、MCE、smbr 經驗:並非全部區分性技術都有正面效果 4.多音字如何處理? 假設咱們的文本標註以下: spk001 咱們 的 做品 爲 第一名 發音詞典以下: 的 d e0 的 d e4 的 d i2 爲 w ei2 爲 w ei4 的和爲都是多音字,那麼在模型訓練階段如何根據標註spk001聯合phones的HMM模型呢? 有兩種解決策略: ①惟一化處理:更改文本標註和發音詞典,將多音字惟一化標註 如: 的1 d e0 的2 d e4 爲1 w ei2 爲2 w ei4 spk001 咱們 的1 做品 爲1 第一名 這樣作的話,咱們在解碼階段須要去除發音詞典中的標識一、2,從而不會在解碼結果中引入多餘的一、2 ②自動處理:Kaldi能夠將多種選擇(多音)編入spk001的fst,在Align階段根據音頻特徵選擇phone的標號 這種處理可能不夠精確,ML原本就不能100%準確,這點讓人悲傷; 不過可能語料庫的發音人並不能對全部的多音字都發正確的音, 若是使用①須要校對每個含有多音字的音頻發音,人工大大的; 英語單詞也存在多音字,不過相比中文少得多,可參考:馮志偉-漢語拼音音節的歧義指數 5.Noise Robust ASR 從特徵提取、模型層面把噪聲考慮進去 可參考: 綜述文章:LiDeng2013-An Overview of Noise-Robust Automatic Speech Recognition 6.Deep Learning[DNN/CNN替換GMM] 這一步「須要」先訓練一個HMM+GMM,而後得到wav文件alignment,即每一幀對應的phone->state 這樣咱們就爲DNN準備好 train.data train.label 注:咱們可使用爲GMM提取的特徵,也能夠從新從wav提取特徵,須要注意的是窗口大小、幀移要與alignment匹配; 一般提取fbank特徵做爲DNN的輸入,並且組合當前幀左右相鄰的n幀成 2n+1幀特徵做爲輸入 Dropout、ReLU 關於Dropout我在TIMIT作了不下20組實驗,纔看到WER的降低,更絕大多數文章的描述並不相同; ReLU作了幾組實驗,沒看到更低的WER,有待繼續。 CNN 根據實驗CNN相比DNN會有5%-10%的WER降低卷積層不一樣的實現[FFT vs 矩陣乘積]性能會有差別,這一層計算量略大 Tara N. Sainath發表了一系列的CNN on Speech的文章,我以爲質量是CNN on Speech的文章中最好的 直接HMM+DNN混合訓練 參考:2014-google-GMM-FREE DNN TRAINING 其餘 SVD低秩逼近W矩陣 7.在手機等資源受限設備 參考 雷欣 的兩篇文章,針對數值存儲、模型等作優化,在資源暫用與識別率降低方面作權衡 1.2013-Accurate and Compact Large Vocabulary Speech Recognition on Mobile Devices 2.FINE CONTEXT, LOW-RANK, SOFTPLUS DEEP NEURAL NETWORKS FOR MOBILE SPEECH RECOGNITION
相關文章
相關標籤/搜索