1. 程式人生 > >[轉]Kaldi語音識別

[轉]Kaldi語音識別

位置 系統 tex 文件夾 設備 要去 ogl 詞典 -s

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

Kaldi語音識別
1.聲學建模單元的選擇
1.1對聲學建模單元加入位置信息
2.輸入特征
3.區分性技術
4.多音字如何處理?
5.Noise Robust ASR 
6.Deep Learning[DNN/CNN替換GMM] 7.在手機等資源受限設備 author:Feiteng Email:[email protected] date:2014/08/10 Kaldi訓練腳本針對不同的語料庫,需要重寫數據準備部分,腳本一般放在conf、local文件夾裏; conf放置一些配置文件,如提取mfcc、filterbank等特征參數
的配置,解碼時的一些參數配置 local一般用來放置處理語料庫的數據準備部分腳本
> 中文識別,應該準備:發音詞典、音頻文件對應的文本內容和(文件標註)一個基本可用的語言模型(解碼時使用) 註:一般情況下,在模型訓練階段LM對ASR的參數訓練沒有影響,即不影響GMM、HMM、DNN/CNN的參數值;使用區分度模型訓練會有影響[生成Lattice候選] 1.聲學建模單元的選擇 全音節[是否帶聲調]、聲韻母[是否帶聲調]、音素? > 帶聲調的聲韻母作為建模單元是比較常見的中文識別選擇,也有一些文章指出,使用更細化的phones 集可以有更多的性能提升: 中文連續語音識別系統音素建模單元集的構建——包葉波等 基於發音特征的漢語普通話語音聲學建模——顏永紅等 基於發音特征的漢語聲調建模方法及其在漢語語音識別中的應用——劉文舉等
1.1對聲學建模單元加入位置信息 For instance, wed 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 第一名 這樣做的話,我們在解碼階段需要去除發音詞典中的標識1、2,從而不會在解碼結果中引入多余的1、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

[轉]Kaldi語音識別