1. 程式人生 > >系統學習NLP(一)--語音的計算機處理綜述

系統學習NLP(一)--語音的計算機處理綜述

從這個月開始,進入NLP方向,《自然語言處理綜論》這本書有將近五章介紹了語音的計算機處理,作為閱讀筆記又不高興手打,所以,參考了這篇部落格(因為內容差不多類似)。略刪改。

另外,本書沒有深度學習部分的應用,因此,這裡只介紹傳統語音識別演算法。主要還是針對ASR的系統介紹。

語音識別技術,廣泛來說是指語意識別和聲紋識別;從狹義上來說指語音語義的理解識別,也稱為自動語音識別(ASR)。其關鍵技術包括選擇識別單元、語音端點檢測、特徵引數提取、聲學模型及語音模型的建立。語音識別技術目前在桌面系統、智慧手機、導航裝置等嵌入式領域均有一定程度的應用。其主要技術難題是識別系統的適應性較差、受背景噪聲影響較大,未來的發展方向應是無限詞彙量連續語音非特定人語音識別系統。

(1)訊號處理及特徵提取模組

    該模組的主要任務是從輸入訊號中提取特徵,供聲學模型處理。同時,它一般也包括了一些訊號處理技術,以儘可能降低環境噪聲、通道、說話人等因素對特徵造成的影響。

(2)統計聲學模型

    典型系統多采用基於一階隱馬爾科夫模型進行建模。(這裡不全對,實際上還有多觀察概率的混合多重高斯模型建模,GMM-HMM)

(3)發音詞典

    發音詞典包含系統所能處理的詞彙集及其發音。發音詞典實際提供了聲學模型建模單元與語言模型建模單元間的對映。

(4)語言模型

    語言模型對系統所針對的語言進行建模。理論上,包括正則語言,上下文無關文法在內的各種語言模型都可以作為語言模型,但目前各種系統普遍採用的還是基於統計的N元文法及其變體。

(5)解碼器

    解碼器是語音識別系統的核心之一,其任務是對輸入的訊號,根據聲學、語言模型及詞典,尋找能夠以最大概率輸出該訊號的詞串,從數學角度可以更加清楚的瞭解上述模組之間的關係。

    當今語音識別技術的主流演算法,主要有基於動態時間規整(DTW)演算法、基於非引數模型的向量量化(VQ)方法、基於引數模型的隱馬爾可夫模型(HMM)的方法、基於人工神經網路(ANN)和支援向量機等語音識別方法.

二、非特定人、大詞彙量、連續語音識別系統

       連續數字語音識別系統經過訓練和識別兩個部分。此訓練可以看作是對 HMM 建立模型的過程。通過對引數重新評估,調整模型的各種引數,得到具有較好魯棒性的模型。對基本模型進行改進和優化,可以有效提高精確度,獲得更好的識別率。識別過程則可以認為是使用現有的 HMM 模型庫、資料字典和語法控制組成識別網路,運用搜索演算法尋找最佳匹配過程。 首先對等待識別的語音訊號進行取樣,然後通過轉換變成電訊號。預處理這 些電訊號,也就是對訊號進行增加預重、幀數分離、檢測端點等操作。處理過後,對語音訊號提煉生成特徵的向量資料。按識別模組中的 HMM 模型和詞典要求組合,形成合詞模型後完成識別,將結果和語言模型進行匹配,淘汰那些不符合語法限制的句子和片語,最後輸出符合規範的識別的過程,就是語音識別的全過程。特徵值、HMM 模 型、語法和資料字典都是影響識別率高低的重要因素。

    語音識別過程通常包括"前段"和"後端"兩部分:“前端”模組 主要的作用是進行端點檢測(去除多餘的靜音和非說話聲)、降噪、 特徵提取等;“後端”模組的作用是利用訓練好的聲學模型和語言模型對使用者說話的特徵向量進行統計模式識別(又稱解碼),得到其包含的文字資訊,此外,後端模組還存在一個自適應的反饋模組,可以對使用者的語音進行自學習,從而對聲學模型和語音模型進行必要的校正,進一步提高識別的準確率。一個完整的非特定人大詞彙量連續語音識別系統可大致分為三部分:語音訊號預處理與特徵提取、聲學模型訓練、語言模型訓練、搜尋演算法與識別。

0.識別單元的選擇

   選擇識別單元是語音識別研究的第一步,分為單詞、音節、音素。

(1)單詞單元:廣泛應用於中小詞彙語音識別系統,但不適合大詞彙系統,原因在於模型庫太龐大,訓練模型任務繁重、模型匹配演算法複雜,難以滿足實時性要求。

(2)音節單元:多見於漢語語音識別,主要因為漢語是單音節結構的語言,而英語是多音節。雖然漢語大約有1300個音節,但若不考了聲調只有約408個無調音節。

(3)音素單元:目前廣泛被應用到大詞彙量語音識別系統中,原因是在於漢語音節僅有宣告和韻母構成,並且宣告和韻母的聲學特性相差很大。

    總結,對大詞彙量語音識別系統來說,通常識別單元越小,則計算量也越小,所需的模型儲存量也小,要求的訓練數量也少,但對應語音段的定位和分割較困難,因此識別模型規則也變得更復雜。

1、預處理模組

       對輸入的原始語音訊號進行處理(輸入的語言訊號首先要進行反混疊濾波、 取樣、 A/D 轉換等過程進行數字化, 之後要進行預處理, 包括預加重、 加窗和 分幀、 端點檢測等。),濾除掉其中的不重要的資訊以及背景噪聲,並進行語音訊號的端點檢測(找出語音訊號的始末)、語音分幀(近似認為在10-30ms內是語音訊號是短時平穩的,將語音訊號分割為一段一段進行分析)以及預加重(提升高頻部分)等處理。

目前主流的語音訊號端點檢測方法:

(1)短時能量En:反應語音振幅或能量隨著事件緩慢變化的規律;

(2)短時平均過零率Zn:對於離散訊號而言,是樣本改變符號的次數,可以粗略分別清音和濁音;

(3)雙門限端點檢測:短時平均能量和過零率兩者結合可以起到區分語音訊號中的靜音與語音資訊的作 用,完成端點檢測。一段完整的語音訊號的可以分為三段:靜音段、過渡段、語音段。 在靜音段,過零率或能量越過了低門限,進入過渡段。在過渡段,過零率或能量都降低至低門限以下,則恢復到靜音態;過零率或能量中的其中一個越過了高門限,則為進入了語音段。在低噪聲情況下,雙門限端點檢測簡單可靠。但在噪聲較大的情況下,該方法失去判斷能力,所以此方法的抗噪能力較差。 

2、聲學特徵提取

       語音訊號是一種典型的時變訊號,然而如果把音訊的參考時間控制在幾十毫 秒以內,則得到一段基本穩定的訊號。去除語音訊號中對於語音識別無用的冗餘資訊,保留能夠反映語音本質特徵的資訊,並用一定的形式表示出來。也就是提取出反映語音訊號特徵的關鍵特徵引數形成特徵向量序列,去掉那些相對無關的資訊如背景噪聲、通道失真等,以便用於後續處理。目前的較常用的提取特徵的方法還是比較多的,不過這些提取方法都是由頻譜衍生出來的。

目前主流的語音訊號特徵提取方法:

(1)線性預測係數(LPCC):很好的模擬語音訊號,語音訊號是由聲帶振動發出的, 聲帶可以不振動也可以有周期的振動,分別對應清音(consonants)和濁音(vowels),每一段聲管則對應一個 LPC 模型的極點。通常極點個數在 12-16 個左右,即可清晰地描述訊號的特徵了。

(2)Mel頻率倒譜系數(MFCC)引數

   人的聽覺系統卻是一種特殊的非線性系 統,它對不同頻率訊號的響應靈敏度有較大區別。 MFCC引數比 LPC 引數更能夠充分利用人耳的感知特性提高系統的識別效能,因其良好的抗噪性和魯棒性而應用廣泛。MFCC的計算首先用FFT將時域訊號轉化成頻域,之後對其對數能量譜用依照Mel刻度分佈的三角濾波器組進行卷積,最後對各個濾波器的輸出構成的向量進行離散餘弦變換DCT,取前N個係數。在sphinx中也是用MFCC特徵的,用幀frames去分割語音波形,每幀大概10ms,然後每幀提取可以代表該幀語音的39個數字,這39個數字也就是該幀語音的MFCC特徵,用特徵向量來表示。

(3)小波分析

3、聲學模型訓練(模版匹配方法)

      聲學模型的訓練,即為建模過程。聲學模型是識別系統的底層模型,是語音識別系統中最關鍵的部分。聲學模型表示一種語言的發音聲音,可以通過訓練來識別某個特定使用者的語音模式和發音環境的特徵。根據訓練語音庫的特徵引數訓練出聲學模型引數,在識別時可以將待識別的語音的特徵引數同聲學模型進行匹配與比較,得到最佳識別結果。

目前主流的聲學模型訓練方法:

(1)動態時間規整(DTW):現實生活中語音訊號的 隨機性較強,就是同一人說的話,也不太可能說出一句一模一樣的話來。就算字詞都一樣,發音的時間長短也可能不一樣。因此,需要尋找一種變換關係來削除這種時間上的距離偏差,這種結合時間變換關係求特徵序列之間距離的技術演算法 稱為動態時間規整演算法(DTW:DynamicTimeWarping)。動態時間規整(DTW)演算法 的演算法的思想,就是將待識別的語音訊號均勻的升長或縮短,使其與參考模板的長度一致。同時,使語音訊號的時間軸進行不均勻的扭曲和彎折,最終達到與模板的特徵對齊。DTW 是較早的一種模式匹配和模型訓練技術, 它把整個單詞作為識別單元,在訓練階段將詞彙表中每個詞的特徵向量序列作為模板存入模板庫,在識別階段將待識別語音的特徵向量序列依次與庫中的每個模板進行相似度比較,將相似度最高者作為識別結果輸出。DTW 應用動態規劃方法成功解決了語音訊號特徵引數序列比較時時長不等的難題,在小詞彙量、孤立詞語音識別中獲得了良好效能。但因其不適合連續語音大詞彙量語音識別系統, 目前已逐漸被 HMM 和 ANN模型替代。

(2)向量量化(VQ)技術

    向量量化(VectorQuantization)是一種適用於小詞彙量、孤立詞的語音識別的 訊號壓縮方法 。向量量化器的設計其核心思想是:為某一個特定的信源設計一 個優化的碼書,那麼來自同一個資訊源所產生的訊號與該碼書的平均量化失真就應遠遠小於他與其他資訊的訊號與該碼書的平均量化失真,也就是說編碼器本身存在一定的區分能力。 

(3)隱馬爾可夫模型HMM 

     HMM是對語音訊號的時間序列結構建立統計模型,將其看作一個數學上的雙重隨機過程:一個是用具有有限狀態數的Markov鏈來模擬語音訊號統計特性變化的隱含(馬爾可夫模型的內部狀態外界不可見)的隨機過程,另一個是與Markov鏈的每一個狀態相關聯的外界可見的觀測序列(通常就是從各個幀計算而得的聲學特徵)的隨機過程。

    HMM 模型是語音訊號時變特徵的有參表示法。它由相 互關聯的兩個隨機過程共同描述訊號的統計特性,其中一個 是隱蔽的 (不可觀測的) 具有有限狀態的 Markor 鏈, 另一個是 與 Markor 鏈的每一狀態相關聯的觀察向量的隨機過程 (可觀測的) 。HMM 很好的模擬了人得語言過程, 目前應用十分廣泛。目前的主流語音識別系統多采用隱馬爾可夫模型HMM進行聲學模型建模。聲學模型的建模單元,可以是音素,音節,詞等各個層次。對於小詞彙量的語音識別系統,可以直接採用音節進行建模。而對於詞彙量偏大的識別系統,一般選取音素,即聲母,韻母進行建模。識別規模越大,識別單元選取的越小。 

        人的言語過程實際上就是一個雙重隨機過程,語音訊號本身是一個可觀測的時變序列,是由大腦根據語法知識和言語需要(不可觀測的狀態)發出的音素的引數流(發出的聲音)。HMM合理地模仿了這一過程,是較為理想的一種語音模型。用HMM刻畫語音訊號需作出兩個假設,一是內部狀態的轉移只與上一狀態有關,另一是輸出值只與當前狀態(或當前的狀態轉移)有關,這兩個假設大大降低了模型的複雜度。所以 HMM 可以 非常精確地描述語音訊號的產生過程。 

       語音識別中使用HMM通常是用從左向右單向、帶自環、帶跨越的拓撲結構來對識別基元建模,一個音素就是一個三至五狀態的HMM,一個詞就是構成詞的多個音素的HMM序列起來構成的HMM,而連續語音識別的整個模型就是詞和靜音組合起來的HMM。總之 HMM 模型較為完整的表達了語音的聲學模型,採用統計的訓練方法將 上層的語言模型和底層的聲學模型融入統一的語音識別搜尋演算法中,並獲得更好 的效果。

(4)人工神經網路模型(ANN)

     神經網路是由許多被稱為節點的簡單非線性模擬處理要素密集互連配置而成的,是 一種模仿了生物神經元的系統模型。網路通過令每一個節點的輸出與一些其他的節點輸入連線形成,類似於真實神經元的突觸連線。每個神經元表達了一種特定的輸出函式,稱為激勵函式,每兩個神經元之間的連線都包含一個連線強度,也就是作用於通過該連線的訊號的加權值。經過訓練之後的神經網路,具有資訊特徵抽取、知識概括和學習記憶的能力,而模型學習到的資訊或知識則儲存在每個單元節點之間的連線矩陣上。一個神經網路的表現是由節點定義,拓撲結構以及學習演算法這三個特徵組成的集體性質決定的。 

   ANN本質上是一個自適應非線性動力學系統,是由結點互連組成的計算網路, (優點)人工神經網路(ANN) 基本上能夠模擬人類神經的活動原理,具有學習特性、容錯性、並行性、自適應性和魯棒性,是一個自適應非線性動力學系統,且具有較強的分類能力和輸入輸出對映能力。這些能力是 HMM 模型不具備的, 可用於處理一些環境資訊十分複雜, 背景知識不清楚, 推理規則不明確的問題, 允許樣品有較大的缺損、 畸變, 因此對於噪聲環境下非特定人的語音識別問題來說是一種很好的解決方案。(缺點)但由於語音訓練和識別時間太長,實現和應用較難等不利因素,所以到目前為止該方法停留在實驗階段,目前大部分應用神經網路的語音識別系統都採用了 BP 網並取得了較好的識別效果.將 ANN 與 HMM 結合分別利用各自優點進行識別將是今後的一條研究途徑。ANN 具有 較好的區分複雜分類邊界的能力,顯然它十分有助於模式識別。在這些研究中,大部分 

採用基於反向傳播演算法(BP 演算法)的多層感知網路。 

a.BP神經網路:BP 神經網路在訓練的時候,正向傳播之後輸出層沒有得到期望輸出,則採用反向傳 播演算法,提高網路系統對樣本的似然度(Likelihood)。將樣本的實際輸出與期望輸出之間的差值即誤差訊號,並在逐層反向傳播的過程中由誤差反饋不斷調整網路的權值。網路學習效果的提升可以由增加隱藏層層數實現。 在諸多神經網路中,BP 是應用較多的一種,用於語音識別時也具有較好的效果,這 是由於 BP 神經網路具有許多獨特的優點:(1)它可以聯想模式對,將複雜的聲學訊號對映為不同級別的語音學和音韻學的表示;(2)可以通過插值進行歸納,因此相關特徵 

可通過訓練獲取(3)對不同的類,他可以在超平面中形成不相交的區域,很適合捕捉細微的規律;(4)輸入可以是二值或連續值,也可以是聲學屬性或語音特徵的任意組合; (5)對資料的分佈不做先驗假設,對模型使用全域性約束,因此能構造光滑的類邊界, 識別精度好。雖然 BP 神經網路具有強大的計算能力,能夠好的應用於語音識別,但隨著對識別 效能要求的提高,網路本身仍有一些問題逐漸暴露出來,以下方面亟待改進: 

(1)區域性極小值問題; 

(2)增加神經網路的可理解性。人們暫時仍然無法直接理解網路學習儲存在連線矩陣上的知識; 

(3)加快神經網路學習速度。目前大部分神經網路演算法都無法迴避的一個部分就是迭代問題,為了獲得好的學習效果,迭代需要大的計算開銷。 

b.神經網路訓練

    神經網路的學習也稱為訓練,是指通過神經網路所在環境的刺激作用,調整神經網 絡的自由引數。能夠從環境中學習和在學習中獲得系統工作效果提升,是神經網路最有意義的性質。在神經網路中,一般有兩類訓練演算法。 

(1)有監督學習演算法。不但需要訓練用的輸入訊號,同時需要與輸入相對應的表示所需輸出的目標訊號。網路通過計算實際輸出與每組輸入對應的目標輸出之間的差值來調整權值,做出正確反應。 

(2)無監督學習演算法。不要求有目標輸出,演算法提供一個關於網路學習表示方法質量的測量尺度,根據尺度將自由引數最優化,當網路與輸入資料統計規律性一致,就能形成內部表示方法記憶輸入特徵,由此進行類別識別。 

4、語言模型訓練

       語音識別中的語言模型主要解決兩個問題,一是如何使用數學模型來描述語音中詞的語音結構;二是如何結合給定的語言結構和模式識別器形成識別演算法。語言模型是用來計算一個句子出現概率的概率模型。它主要用於決定哪個詞序列的可能性更大,或者在出現了幾個詞的情況下預測下一個即將出現的詞語的內容。換一個說法說,語言模型是用來約束單詞搜尋的。它定義了哪些詞能跟在上一個已經識別的詞的後面(匹配是一個順序的處理過程),這樣就可以為匹配過程排除一些不可能的單詞。語言模型一般指在匹配搜尋時用於字詞和路徑約束的語言規 則,它包括由識別語音命令構成的語法網路或由統計方法構成的語言模型, 語言處理則可以進行語法、 語義分析.

       語言建模能夠有效的結合漢語語法和語義的知識,描述詞之間的內在關係,從而提高識別率,減少搜尋範圍。語言模型分為三個層次:字典知識,語法知識,句法知識。

         對訓練文字資料庫進行語法、語義分析,經過基於統計模型訓練得到語言模型。

目前主流的語言建模方法:

(1)基於規則模型

(2)基於統計模型

    統計語言模型是用概率統計的方法來揭示語言單位內在的統計規律,其中N-Gram模型簡單有效,被廣泛使用。它包含了單詞序列的統計。N-Gram模型基於這樣一種假設,第n個詞的出現只與前面N-1個詞相關,而與其它任何詞都不相關,整句的概率就是各個詞出現概率的乘積(即根據前面N-1個詞彙的歷史來決定下一個詞可能出現的概率)。這些概率可以通過直接從語料中統計N個詞同時出現的次數得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

         Sphinx中是採用二元語法和三元語法的統計語言概率模型,也就是通過前一個或兩個單詞來判定當前單詞出現的概率P(w2| w1),P(w3| w2, w1)。

5、語音解碼和搜尋演算法

       解碼器:即指語音技術中的識別過程。針對輸入的語音訊號,根據己經訓練好的HMM聲學模型、語言模型及字典建立一個識別網路,根據搜尋演算法在該網路(識別網路)中尋找最佳的一條路徑,這個路徑就是能夠以最大概率輸出該語音訊號的詞串,這樣就確定這個語音樣本所包含的文字了。所以解碼操作即指搜尋演算法:是指在解碼端通過搜尋技術尋找最優詞串的方法。連續語音識別中的搜尋,就是尋找一個詞模型序列以描述輸入語音訊號,從而得到詞解碼序列。搜尋所依據的是對公式中的聲學模型打分和語言模型打分。在實際使用中,往往要依據經驗給語言模型加上一個高權重,並設定一個長詞懲罰分數。當今的主流解碼技術都是基於Viterbi搜尋演算法的,Sphinx也是。模型引數得到後可以用 Viterbi 演算法來確定與觀察序列對 應的最佳的狀態序列。建好模型後,在識別階段就是要計算每個模型產生觀察符號序列的輸出概率,輸出概率最大的模型所表示的詞就是我們的識別結果。

    基於動態規劃的Viterbi演算法在每個時間點上的各個狀態,計算解碼狀態序列對觀察序列的後驗概率,保留概率最大的路徑,並在每個節點記錄下相應的狀態資訊以便最後反向獲取詞解碼序列。Viterbi演算法本質上是一種動態規劃演算法,該演算法遍歷HMM狀態網路並保留每一幀語音在某個狀態的最優路徑得分。

    連續語音識別系統的識別結果是一個詞序列。解碼實際上是對詞表的所有詞反覆搜尋。詞表中詞的排列方式會影響搜尋的速度,而詞的排列方式就是字典的表示形式。Sphinx系統中採用音素作為聲學訓練單元,通常字典就用來記錄每個單詞由哪些個音素組成,也可以理解為對每個詞的發音進行標註。

     N-best搜尋和多遍搜尋:為在搜尋中利用各種知識源,通常要進行多遍搜尋,第一遍使用代價低的知識源(如聲學模型、語言模型和音標詞典),產生一個候選列表或詞候選網格,在此基礎上進行使用代價高的知識源(如4階或5階的N-Gram、4階或更高的上下文相關模型)的第二遍搜尋得到最佳路徑。