張學文,王 林,馮夫健,譚 棉,李學林
(1.貴州民族大學數據科學與信息工程學院;2.貴州省模式識別與智能系統重點實驗室,貴州貴陽 550025)
語音識別技術在漢語、英語和一些常用少數民族語言(藏語、蒙語、維爾吾語)中已有一定研究基礎,但關于低資源、無文字的少數民族語言(苗語、普米語、佤語、白語)的語音識別研究成果較少。在歷史上,苗語只有語言,沒有通用文字,其語言和文化僅通過口授相傳,相關文字資料留存有限,且受其他常用語言的影響,使用苗語交流的人越來越少,導致苗族的語言文化正逐漸走向消亡。為了更好地傳承和保護苗族語言文化,苗語語音語料庫的構建和語音識別逐漸成為相關學者的研究重點。
早期語音識別方法主要基于動態時間規整算法(Dynamic Time Warping,DTW)和隱馬爾可夫模型(Hidden Markov Model,HMM)實現。例如,徐利軍采用DTW算法和放寬起始點的DTW算法對孤立詞語音識別進行研究,發現相較于原始DTW算法,放寬起始點的DTW算法能有效降低噪聲干擾,但語音識別率改善不明顯;易雪蓉等利用HMM 模型對聲調語音模型進行研究,通過改造語音模型和語言模型提高近音字和同音字的識別率,但對輕聲和四聲詞識別效果不理想。
傳統模型在小詞匯識別方面取得了良好效果,但針對大量詞匯、非特定人語音的識別效果有待提升。近年來,深度學習技術在語音識別方面受到廣大研究者的青睞。例如,Sundermeyer等將前饋神經網絡(Feed Forward Deep Neural Network,FDNN)和遞歸神經網絡(Recursive Neural Network,RNN)引入聲學模型中,在法語語音識別任務中,RNN 的效果優于FDNN,但需進一步改進最佳列表的解碼;Naing 等以深度神經網絡—隱馬爾科夫混合模型(DNN-HMM)為網絡框架,設計了一種自動噪聲檢測前端技術對孤立詞進行識別,其在高噪聲條件下的識別率高于梅爾頻率倒譜系數(Mel-Frequency Cepstral Coefficient,MFCC);李云紅等提出一種結合深度玻爾茲曼機(Deep Boltzmann Machine,DBM)的DNN-HMM 語音識別方法,在詞錯率和句錯率方面比傳統DNN-HMM 模型均有所下降;Ashar等將卷積神經網絡(Convolutional Neural Networks,CNN)與MFCC 特征相結合,其對存在背景噪音的說話人識別精度達87.5%,但該方法的計算復雜度較高;Shetty 等將Transformer 框架引入語音識別系統中,其對低資源語言識別任務的識別效果優于RNN 模型;Li 等改進了語音識別系統中的RNN-T 模型,相較于類似尺寸的混合模型,該模型能有效降低識別錯誤率。
在少數民族語言語音識別研究中,韓清華等采用HMM 模型對安多藏語非特定人孤立詞語音識別進行了研究,但僅針對小量詞匯進行了識別,且識別效果有待提高;Pan 等提出一種基于動態貝葉斯網絡(Dynamic Bayesian Network,DBN)的算法對藏語語音進行識別,相較于傳統的HMM 識別算法,該算法提高了抗噪聲的識別能力,但需要設計適合大量詞匯和連續語音識別的DBN 識別模型;Li等對基于機器學習的孤立詞識別算法進行研究,通過提取不同特征向量,在不同分類器下提高了詞語音識別的準確性;Hu 等利用混合單元進行語言建模,通過引入插值LM 提高模型的識別性能,降低對維吾爾族語言語音識別的錯詞率。目前,關于苗語數據收集、發音特點等已有一定研究,但在語音識別方面研究成果較為欠缺。例如,李一如對黔東苗語的比較結構進行了分析;李學林等對貴州省中部苗語音素邊界檢測方法進行了研究,實現了音素邊界的劃分,但需要對音素進行人工標注;楊建菊等基于HMM 對苗語連續語音識別系統進行初步設計和識別測試,但語音識別系統規模較小、復雜度較低。
由于苗語存在文字缺失、地域差異等問題,采用現有語音識別方法難以直接對其進行識別。為此,本文以漢語拼音為媒介標注苗語語音,構建包含常用字詞句的苗語語音語料庫,引入CNN 建立苗語孤立詞匯識別模型;然后以自建苗語語音語料庫的數據作為實驗數據集驗證該模型對同地域和不同地域苗語孤立詞語音識別的有效性,檢驗具有地域差異的苗語孤立詞語音對模型識別效果的影響。
語音語料庫是語音識別研究的基礎。苗語文本語料庫需要借助漢字拼音或國際音標進行語音標注。苗語雖然沒有通用文字,但多數語法結構與漢語相似。因此,苗語語料庫的構建需要參考漢語、英語及其他少數民族語言語料庫的構建方法,語料選取要盡可能覆蓋苗語語言內容,根據苗語的發音特點及語法結構構建相對完備的苗語語音語料庫,為苗語語音識別研究提供數據基礎。
貴州中部苗語是基于聲韻母、聲調組合發音,本文參考貴州大學出版社出版的《苗族語文讀本》中所列苗語聲韻母及聲調標注方法對苗語語料庫進行標注,苗語聲母、韻母、聲調如表1 所示。
Table 1 Initial consonants,vowels and tone of Hmong language表1 苗語聲母、韻母、聲調
本文建立的苗語語音語料庫主要參考小學語文課本、貴州普通話考試測試題以及《苗族語文讀本》內容進行錄制采集,語料應充分展示中部苗語聲母、韻母、聲調的特點。選取具有代表性的字詞句進行錄制,語料庫包含苗語的100個常用字、800個常用詞和100個常用語句。采用單聲道麥克風在安靜環境下進行語音錄制,采樣頻率為44 000Hz,保存格式為WAV。語料庫構建包含苗語語音資源采集、語音數據預處理、語音標注和存儲4個步驟,具體如圖1 所示。
Fig.1 Construction flow of Hmong language corpus圖1 苗語語料庫構建流程
首先提取苗語語音的MFCC,以MFCC 特征作為語音識別網絡的輸入訓練模型,并采用測試數據對模型進行測試。苗語孤立詞的識別流程如圖2 所示。
Fig.2 Identification process of isolated words in Hmong language圖2 苗語孤立詞識別流程
MFCC 是語音識別研究領域常用的語音特征,是在Mel標度頻率域提取出來的倒譜參數,其與頻率的關系可表示為:
f
為頻率,單位為H
z。在cnn-24 文件夾下有一個命名為“get-mfcc.py”的代碼,其功能為提取語音的MFCC 特征參數。MFCC 特征提取的過程為:
(1)讀取語音WAV 文件,獲取語音波形和采樣率;
(2)對波型進行快速傅里葉變換,對特征參數進行歸一化處理,歸一化處理方法表示為:
μ
為原始特征的均值,σ
為標準差。(3)將二維特征參數(600,13)擴充為三維數據(600,13,1),便于輸入CNN 中進行訓練。
苗語孤立詞識別模型由4個卷積層、2個池化層、1個全連接層、1個Softmax 層組成。模型的輸入為提取的MFCC 特征,對輸入特征進行卷積操作后,采用ReLU 激活函數對卷積核的輸出值進行非線性變換,然后進行最大池化操作。全連接層采用的激活函數為ReLU 函數,采用dropout 方法解決訓練模型過擬合問題,即在全連接層后添加dropout 層,參數值分別設為0.25、0.4,學習率設為0.000 1。苗語孤立詞的識別網絡框架如圖3 所示。模型參數設置如表2 所示。
Fig.3 Recognition network frame of isolated words in Hmong language圖3 苗語孤立詞識別網絡框架
Table 2 Model parameter settings表2 模型參數設置
選取苗語語料庫中24個常用苗語孤立詞匯作為實驗數據,分別為爸媽、吃飯、讀書、回家、今天、朋友、起床、睡覺、耳朵、早晚、中午、我們、家里、現在、說話、后面、明天、跑步、眼前、眼睛、走路、昨天。在實驗數據集中創建24個語音文件夾,以漢語拼音的形式命名,將苗語語音存放于對應的漢語拼音文件夾中。文件命名的數字代表漢字拼音的聲調,例如“chifan14”代表“吃飯”這個詞的語音數據,其中“14”代表吃飯兩個字的聲調。苗語語音詞匯對應的漢語拼音標注文件名如表3 所示。
Table 3 Vocabulary checklist表3 詞匯對照
采用write 函數對語音文本進行定義,該函數可將語音樣本生成為.txt 格式。引入random 函數使生成的數據具有隨機性,該函數可將實驗數據集中的數據順序打亂,然后將這些亂序的語音數據按照設定的比例隨機分為訓練、驗證、測試數據集,具體數據量如表4 所示。
Table 4 Amount of training,verification and test data表4 訓練、驗證、測試數據量
采用Adobe Audition 3.0 錄制苗語語音數據。實驗在Windows10的64位系統上進行,處理器為Intel(R)Core(TM)i7-7700 CPU@3.6Hz。以Keras 深度學習框架為基礎,編程語言使用Python3.7。
以詞匯識別準確率為評價指標,當輸入測試數據與輸出對應標簽相符時,則表明該詞匯識別正確,反之識別錯誤。詞匯識別準確率表示為:
M
表示苗語孤立詞識別正確個數,N
表示苗語孤立詞識別總數。為驗證本文模型的有效性和穩定性,選取苗語語料庫中部分常用詞匯作為實驗數據,在24個常用詞匯組成的數據集上設置3 組不同的實驗,通過accuracy 和loss 曲線變化情況判斷模型的識別效果和收斂情況。
首先,采用苗語孤立詞識別模型對同一地域的苗語語音進行識別,結果如圖4 所示。可以看出,對于同一地域的苗語語音,苗語孤立詞識別模型的訓練精度與驗證精度均大于95%,迭代40 次之后模型趨于平穩。該模型能有效識別以漢語拼音標注的苗語孤立詞。
然后,采用苗語孤立詞識別模型對不同地域的苗語語音進行識別,結果如圖5 所示。可以看出,對于不同地域的苗語語音,苗語孤立詞識別模型的訓練精度大于95%,驗證精度小于95%,二者之間存在差距。該模型在訓練和驗證階段的loss 值也存在差距。
Fig.4 Speech recognition effect in the same region圖4 同一地域語音識別效果
Fig.5 Speech recognition effect in different regions圖5 不同地域語音識別效果
最后,采用苗語孤立詞識別模型對同一地域和不同地域融合的苗語語音進行識別,并打亂數據集的原始排序,以驗證該模型識別組合地域語音的穩定性,結果如圖6 所示。可以看出,對于組合地域的苗語語音,苗語孤立詞識別模型的訓練精度和驗證精度比較接近,說明該模型對組合地域苗語語音識別具有穩定性。
Fig.6 Speech recognition effect in combined regions圖6 組合地域語音識別效果
以上3 組實驗的訓練精度和測試精度具體數據如表5所示。可以看出,苗語孤立詞識別模型在同一地域語音上的識別準確率達97%,在不同地域語音上的識別準確率達94%,而將兩個數據集合并為一個數據集訓練該模型時,識別準確率為95%。
Table 5 Comparison of data of 3 groups of experiments表5 3 組實驗數據比較
由以上數據可知,苗語孤立詞識別模型能有效識別采用漢語拼音標注的苗語語音,對同地域苗語語音的識別效果優于不同地域苗語語音,說明該模型會受到地域差異的影響,泛化能力還有待提升。當同一地域與不同地域語音合并為一個數據集訓練模型時,相較于不同地域語音識別,模型的識別效果略有提升,說明模型對組合地域的語音識別效果良好。
針對苗語因無文字而難以直接進行語音識別的問題,本文首先借助漢語拼音對苗語進行語音標注,構建了包含苗語常用字詞句的語音語料庫;然后構建基于CNN 的苗語孤立詞語音識別模型,對同地域、不同地域以及組合地域的苗語進行識別。結果表明,該模型能有效識別出苗語孤立詞語料庫中同地域和不同地域的常用詞。然而,由于該模型受到苗語地域差異的影響,識別效果不夠穩定。未來擬通過對苗語語料庫發音人、錄制內容、錄音設備、錄音格式、存儲方式以及標注方式等進行規范化以完善語料庫構建,利用苗語語音數據的多樣性提高模型的泛化能力。此外,還在此基礎上研究連續語音的自動分割技術,為苗語連續語音識別奠定基礎,最終實現苗語與其他語言的互譯。