余本國 郇晉俠 劉曉峰 高偉濤
(1.中北大學軟件學院 太原 030051)(2.海南醫學院醫學信息學院 ???571199)
隨著計算機科學技術發展,智能產品陸續實現了普通話的或孤立詞,或大量連續語音的識別功能并被廣泛地應用于各個領域中,例如:教育的同聲傳譯、生活的智能家居以及基層公安的警務等。但是要實現大量的方言語音識別,當前還有很多的挑戰目前人機交互已經取得了顯著的成功,例如科大訊飛、百度等公司對各地方言庫的建立、自媒體中對方言的傳播以及藏語等少數民族的方言收錄。目前,最為常見的語音識別模型主要有高斯混合模型-隱馬爾可夫模型(GMM-HMM)和深度神經網絡-隱馬爾可夫模型(DNN-HMM),而針對HMM的開發工具有兩個,即美國約翰·霍普金斯大學開發的Kaldi和英國劍橋大學開發的HTK[1]。
根據國內方言分布情況將31省劃分為九個方言區域[2]。山西地域復雜,雖然,地處華北平原西面的黃土高原上,屬于北方方言區,但是,山西方言屬于“晉語”,中國北方唯一的“非官話”語言。針對山西各地方言建立一個相應的語音庫即研究山西語言的緣起和發展,將這些地方特色語言用庫的形式保存下來,從而方便對當地文化和語言做研究以及更好的溝通交流。同時,建立的方言庫可以應用于本地的教育以及公安局破案等方面。
在《中國語言地圖集》中李榮先生將漢語方言劃分為官話區等十個大區,晉語成為獨立的方言區。山西方言還在使用的最多的是名詞和動詞,其次是形容詞,涵蓋社會各個層面。目前還在使用的部分方言發音如下:
名詞:“胰子”(香皂)、“記性”(記憶力)等;動詞:“圪蹴”(蹲下)、“摳搜”(吝嗇)、“鋤倒”(摔倒)等;形容詞:“擺到”(不知道)等。
2.3.1 研究現狀
方言有著多雜亂的特點,光語音采集就是一個巨量的工程。文獻[3]使用了基于DTW算法的HMM模型,針對于當地孤立詞的識別,但是對于大量的連續語音識別效果不理想。文獻[4]構建了一個深度神經網絡,詞錯誤率下降,但是運算時間和成本較高。
本文選擇傳統的GMM-HMM模型,從方言的語音特征入手,收集山西朔州語音語料,建立和訓練模型,實現朔州的方言語音識別。實驗數據表明,對于小區域差別小的方言地區,GMM-HMM模型識別率較好且方便快捷。
2.3.2 應用
目前,公安的安全領域系統都配備了普通話的語音識別系統,用于平常的警務工作,例如:對犯罪嫌疑人和外來人口的身份以及歸屬地的確認。但是日常交流使用方言,普通話的語音識別對方言識別率較低,人機交互低,對工作的效率影響較大,因此本文研究方言識別用于地方,加快辦案效率和提高人機交互。
普通話的識別系統主要涵蓋如下幾個部分。首先,將原始的信號轉換成為離散信號。其次,預處理離散的信號并提取特征向量。然后,依靠大量的語音語料、標注文件和詞典(Lexicon),訓練各個模型參數,結合特定的模型算法,求得每個模型的參數。最后,在識別階段,使用模式匹配算法,以得到的概率大小判斷語音對應的文本[5]。圖1是普通話語音識別圖。

圖1 普通話語音識別圖
山西方言語音識別,于方言有自身獨特的屬性,在連續的語音識別中,需要做大量的標注工作。本文處理方法是建立一個自適應詞典,將聲韻母與漢字一一對應以達到一個標注的過程。圖2是本系統方言語音識別圖。

圖2 方言語音識別圖
由于所錄制的語音環境不佳等因素,往往伴隨著一些雜音,這些因素對語音識別單位效果產生了很大的影響。因此要對輸入的語音信號首先要進行預處理來消除無用語音的干擾;然后進行數字化,將模擬信號轉化為數字信號以便用計算機來處理[6],最后進行預加重、分幀加窗等操作。
1)預加重。在低頻到高頻的一段范圍內,高頻部分會隨影響跌落。因此,使用信噪比計算和分析頻譜時,升高高頻部分,使信號的平鋪變得平整。其公式為

2)分幀加窗。語音信號具有短時平穩性,為得到短時的語音信號,先將語音信號采樣點量化成一個觀測單位,再乘以漢明窗,以增加幀的左右端連續性。為防止相鄰幀變動過大,讓鄰幀之間有一段堆疊區域,此堆疊區域包含N個取樣點,通常N的值約為采樣點個數的1/3或1/2[7]。
特征參數提取方法主要有以下的三種類型,基于線性預測的倒譜系數(LPCC)分析法,基于Mel系數的Mel頻率倒譜系數(MFCC)分析法和基于現代處理技術的小波變換系數分析法[8]。由于人耳的特殊性,特征參數的選擇取決于是否接近人耳的感知特性[9]。因此,人們提出Mel頻率[10]來反映人耳對語音的感知狀況。又由于MFCC有較強的穩健性,可以在嘈雜的環境下提取到穩定的數據,所以本文選擇使用MFCC提取特征參數。圖3是Mel頻率和線性頻率的關系,從圖中可以看出,它可以將不統一的頻率轉化為統一的頻率,也就是統一的濾波器組。Mel頻率計算公式:

圖3 Mel頻率和線性頻率關系圖

注:f為原始語音信號的頻率。
在語音識別過程中,聲學模型是語音識別系統的重要組成部分,它占據著語音識別大部分的計算開銷,決定著語音識別系統的性能[10]。諸如隱馬爾科夫模型(Hidden Markov Model,HMM)、人工神經網絡(Artificial Neural Network,ANN)等各種方法生成的聲學模型效果不一。HMM已經在傳統的ASR(Automatic Speech Recognition)中使用[11]。根據山西方言情況選擇GMM-HMM作為模型。
HMM是在馬爾可夫鏈上發展形成的,但是實際問題更為復雜,觀察到的事件并不是與狀態一一對應,而是由一組概率分布聯系在一起[12]。
GMM-HMM是一個統計模型,描述了兩個相互依賴的隨機過程,一個可觀察的過程,另一個隱藏的馬爾可夫過程。觀察序列被假設是由每一個隱藏狀態根據混合高斯分布所生成的[13]。一個GMM-HMM模型的參數集合由狀態先驗概率、狀態轉移概率以及狀態相關的混合高斯模型參數三部分組成。
語言模型(language model,LM)廣泛用于機器翻譯、方言識別、語音合成中的自然語言處理。n元語法模型(n-gram)最為常見。在方言語音識別中,可以選擇的基元包括詞(word)、聲韻母(ini?tialfinal)和音素(phone)等。
為了研究和使用隱馬爾可夫模型(HMM)的相關實驗,英國劍橋大學特定開發了HTK(Hidden Morkov Model Toolkit)工具。它廣泛應用于語音合成、方言識別和DNA排序等領域。不過HTK主要用以構造基于HMM的語音識別工具。語音識別技術主要有語音識別單元的選取、模式匹配準則、特征提取技術以及模型訓練這四個方面。語音識別系統主要包含語音特征參數的數據準備模塊、模型訓練模塊、模型分析模塊和語音識別模塊[14]這四個模塊。如圖5所示,它主要有兩個處理階段。第一階段,HTK訓練工具使用訓練語音語料和對應的標注文件來訓練HMM模型集的參數;第二階段,通過使用HTK識別工具來識別未知的語音語料[15]。

圖5 參數內容
本文中的語音識別系統是在Windows10平臺上使用HTK v3.4工具包開發的。以山西朔州為例,使用1000條方言詞句用于模型的訓練。
“一切后續相關ASR的研究,都必須嚴格篩選有序的語音語料入庫”[16]。建立一個語音語料庫必須要做好如下的工作:科學的劃分方言區域、確定錄音人和相關設備、設計發音語料、對錄音進行保真處理、對語音語料進行標注。
5.1.1 科學的劃分區域
朔州方言的語言特性逐漸從歷史、社會以及地理等因素演變而來的。根據《朔州方言志》,朔州分為六區縣。在已知的地域方言中,平魯區話和朔城區話大致相同,將平魯區和朔城區的的統一處理,使得口音劃分更加合理。在對朔州不同口音進行地區錄取,結合所劃區域,錄音人大體分布在朔城區、懷仁縣、右玉縣、山陰縣、應縣這五個區域。由于普通話受到城鎮化的影響,一些重要的方言特殊詞難以聽到,所以錄音人大多選擇口音濃重村鄉的成年人或者青年人。

圖4 HTK處理階段
5.1.2 音語料的設計
在各地方志中,記錄了很多具有地方特色的方言,并給出了一些語言現象的解讀。為了對比研究方言與普通話發音的出入,進一步研究系統的方言,通過查閱《朔州方言志》,發現方言大體有二十個聲母,包括零聲母在內;有三十八個韻母,根據《朔州方言志》中的聲韻母表,將不同發音人的錄音進行篩選和微調,語音語料盡可能多地囊括詞匯,達到數據庫的完整性。
5.1.3 注
在識別過程中,就是使用Viterbi算法在所有搜索樹路徑中找出權值最高的候選路徑[17]。但是方言與普通話在個別字詞會產生音節的混亂,這時候要用標注語音達到搜索目的。
在文獻[18]中,介紹了COCOA((Oxford Con?cordance Program)模式,但COCOA只能用來標注有限的語篇信息;在文獻[19]中,標注閩南話,所以選則了臺灣注音TLPA;清華大學數據集thchs30中標注情況,是采用國際音標(IPA)+聲調標注方法,其中聲調采用數字1、2、3、4、5,代替《漢語拼音方案》中聲調陰平(ˉ),陽平(ˊ),上聲(ˇ),去聲(ˋ),輕聲(不標調)這幾個標調符號。
山西朔州六區縣,同閩南情況差別大,由于山西朔州方言的多樣性,產生了多發音映射關系,參照清華大學數據集標注情況,采取采用拼音+聲調變化相結合的方法進行研究。通過整理發音規律,將標準普通話中的發音音節與方言的音節進行替換,在標準的詞典中加入自適應的朔州方言音節,構成朔州方言的自適應詞典(Lexicon)。表1是普通話和帶有山西朔州方言音節的部分替代關系。

表1 普通話和帶有山西朔州的部分替代關系
在本系統中,采用的特征參數為MFCC(Mel Frequency Cepstral Coefficient),MFCC是Mel倒譜系數。在HTK中,使用HCopy工具,通過把每一個語音文件轉換成MFCC文件的方式將語音特征參數提取出來。在本系統中,各種參數內容如圖6所示。
在模型開始訓練前,初始化模型的參數并不重要。必須在訓練之前根據訓練數據正確初始化HMM模型參數[20]。通過使用HTK提供的訓練工具:HInit/HRest或HCompv,初始化和迭訓練模型,直到收斂。訓練的樣本與迭代次數成正比,樣本越多,迭代次數越多,訓練的模型也就越穩定。
在已有的gram、自適應Lexicon和HMM模型的基礎上,調用HVite識別器進行識別,然后可以將識別后的結果放在MLF文件中。然后,調用HTK提供的HResults,將所有測試語料正確音節標注的參考MLF文件和識別器輸出的MLF文件進行比較,計算出相關參數以及識別率[21]。
為判斷訓練的模型是否具有好得魯棒性和識別率,進行如下測試:分為兩組,一組是理想環境下(實驗室內),一組為噪音環境(實驗室外),14人(7男7女),在朔州方言的語音數據庫中,隨機挑選100條具有地方方言特色的詞句放入模型中,識別率只有53.6%。隨著加大方言的詞句和標注信息放入本方言模型中訓練,實驗結果逐漸上升;HMM模型識別率具有很好的穩定性,但噪音環境與理想環境識別率存在差別。測試結果如表2~表3。

表2 理想環境下測試結果

表3 噪音環境下測試結果
本文將朔州方言語音進行預處理、特征參數提取后,建立了方言詞匯的自適應詞典(Lexicon)和HMM模型,采用HTK對山西當地方言的語音識別進行系統設計與實現。實驗數據表明,男女發音的識別率會有不同,識別的效果也隨數據量的增加而逐漸提高。但是,各地方言口音不同導致訓練的模型識別率不同;HTK中語法gram需要窮舉,更適應于小范圍識別。在未來的工作中,應建立完善的山西方言語言語料庫和完整的訓練模型庫,以實現整個山西方言的語音識別。