語音識別系統結構

轉載: 語音識別系統結構——鳥瞰算法

語音識別概述

語音識別是指將語音信號轉換爲文字的過程。如今通行的語音識別系統框架如圖:語音識別基本框架
信號處理模塊將根據人耳的聽覺感知特色,抽取語音中最重要的特徵,將語音信號轉換爲特徵矢量序列。現行語音識別系統中經常使用的聲學特徵有線性預測編碼(Linear Predictive Coding,LPC),梅爾頻率倒譜系數(Mel-frequency Cepstrum Coefficients,MFCC),梅爾標度濾波器組(Mel-scale Filter Bank,FBank)等。 
解碼器(Decoder)根據聲學模型和語言模型,將輸入的語音特徵矢量序列轉化爲字符序列。 
聲學模型是對聲學、語音學、環境的變量,以及說話人性別、口音的差別等的知識表示。語言模型則是對一組字序列構成的知識表示。網絡

模型的訓練

現代的語音識別系統中聲學模型和語言模型主要利用大量語料進行統計分析,進而建模獲得。數據結構

聲學模型

語音識別中的聲學模型充分利用了聲學、語音學、環境特性以及說話人性別口音等信息,對語音進行建模。目前的語音識別系統每每採用隱含馬爾科夫模型(Hidden Markov Model,HMM)建模,表示某一語音特徵矢量序列對某一狀態序列的後驗機率。隱含馬爾科夫模型是一種機率圖模型,能夠用來表示序列之間的相關關係,經常被用來對時序數據建模。 
隱含馬爾科夫模型是一種帶權有向圖,圖上每個節點稱爲狀態。每一時刻,隱含馬爾科夫模型都有必定機率從一個狀態跳轉到另外一個狀態,並有必定機率發射一個觀測符號,跳轉的機率用邊上的權重表示,如圖所示, S0 和 S1 表示狀態, a 和 b 是可能發射的觀測符號。 
隱含馬爾科夫模型假定,每一次狀態的轉移,只和前一個狀態有關,而與以前以後的其它狀態無關,即馬爾科夫假設;在每個狀態下發射的符號,只與當前狀態有關,與其它狀態和其它符號沒有關係,即獨立輸出假設。 
隱含馬爾科夫模型通常用三元組 λ=(A,B,π) 表示,其中 A 爲狀態轉移機率矩陣,表示在某一狀態下轉移到另外一狀態的機率;B 爲符號機率矩陣,表示在某一狀態下發射某一符號的機率;π 爲初始狀態機率矢量,表示初始時處在某一狀態的機率。 
隱含馬爾科夫模型示意圖 
隱含馬爾科夫模型能夠產生兩個隨機的序列,一個是狀態序列,一個是觀測符號序列,因此是一個雙重隨機過程,但外界只能觀測到觀測符號序列,不能觀測到狀態序列。能夠利用維特比算法(Viterbi Algorithm)找出在給定觀測符號序列的條件下,發生機率最大的狀態序列。對於某一觀測符號序列的機率,能夠經過前向後向算法(Forward-Backward Algorithm)高效地求得。每個狀態的轉移機率和觀測符號發射機率能夠經過鮑姆—韋爾奇算法(Baum-Welch Algorithm)計算獲得。 
語音識別中通常使用隱含馬爾科夫模型對聲學單元和語音特徵序列之間的關係建模。通常來講,聲學單元級別較小,其數量就少,但對上下文的敏感性則會大。大詞彙量連續語音識別系統中通常採用子詞(Sub-word)做爲聲學單元,如在英語中採用音素,漢語中採用聲韻母等。 
聲學模型中隱含馬爾科夫模型的拓撲結構通常採用從左向右的三狀態結構,每個狀態上都有一個指向自身的弧,如圖所示,表示利用三狀態模型對音素 / t / 的建模 。 
對音素 / t /的建模
因爲連續語音中具備協同發音的現象,故須要對先後三個音素共同考慮,稱爲三音子(Triphone)模型。引入三音子後,將引發隱含馬爾科夫模型數量的急劇增長,因此通常會對狀態進行聚類,聚類後的狀態稱爲 Senone。 
語音識別任務中的聲學特徵矢量取值是連續的,爲了消除量化過程形成的偏差,因此考慮使用連續機率密度函數來對特徵矢量對狀態的機率進行建模。混合高斯模型(Gaussian Mixture Models,GMM)能夠對任意的機率密度函數進行逼近,因此成爲了建模的首選。 
鄧力等將深度學習引入語音識別的聲學建模中,用深度神經網絡對聲學特徵矢量和狀態的關係進行建模 ,極大地提高了語音識別的準確率,此後深度學習在語音識別聲學建模上的應用開始蓬勃發展,如利用聲學特徵矢量上下文關係的循環神經網絡(Recurrent Neural Networks,RNN)及其特殊狀況長短時記憶網絡(Long Short-term Memory,LSTM)等。框架

語言模型

語言模型能夠表示某一字序列發生的機率。語音識別中經常使用的語言模型是 N 元文法(N-Gram),即統計先後 N 個字出現的機率。N 元文法假定某一個字出現的機率僅與前面 N-1 個字出現的機率有關係。 
設如今有一字序列W=(w1,w2,w3,,wU)W=(w1,w2,w3,⋯,wU),則其發生機率能夠被分解爲以下形式: 
iphone

 
P(W)=P(w1,w2,w3,,wn)=P(w1)P(w2|w1)P(w3|w1,w2)P(wn|w1,w2,w3,,wn1)P(W)=P(w1,w2,w3,…,wn)=P(w1)P(w2|w1)P(w3|w1,w2)…P(wn|w1,w2,w3,…,wn−1)


可是,這樣的機率沒法統計。根據馬爾科夫假設,則只需考慮前 N 個字符發生條件下的機率便可。假設 N=2 則有 函數

 
P(W)=P(w1)P(w2|w1)P(w3|w2)P(wn|wn1)P(W)=P(w1)P(w2|w1)P(w3|w2)…P(wn|wn−1)


再根據貝葉斯公式,能夠得出某一個字在另外一個字的條件下發生的機率 
學習

 
P(wn|wn1)=P(wn,wn1)P(wn1)P(wn|wn−1)=P(wn,wn−1)P(wn−1)


由此,在大量的語料中統計出相鄰的字發生的機率,再統計出單個字出現的機率,便可。 
因爲必然會有一些生僻詞組在語料中不曾出現,但其也存在着發生的機率,因此須要算法生成這些生僻詞組的機率,即平滑。經常使用的平滑方式有古德 - 圖靈平滑(Good-Turing Soothing)和卡茨平滑(Katz Smoothing)等。
ui

 

基於加權有限狀態轉換器的解碼

語音識別中的 「解碼」 問題能夠表示爲以下過程:對於一個長度爲 T 的給定的聲學觀測 
(acoustic observation) 序列X=(x1,x2,x3,,xT)X=(x1,x2,x3,⋯,xT),求出一個長度爲 U 的對應的字( word )序列W=(w1,w2,w3,,wU)W=(w1,w2,w3,⋯,wU),使得後驗機率P(W|X)P(W|X)最大化,即求得字序列WW,有 
編碼

 
Ŵ =argmaxP(W|X)W^=argmaxP(W|X)


後驗機率P(WX)P(W│X)不易直接求得。根據貝葉斯公式可得: 
atom

 
Ŵ =argmaxP(W|X)=argmaxP(X|W)P(W)P(X)W^=argmaxP(W|X)=argmaxP(X|W)P(W)P(X)


因爲聲學觀測序列已經給定,因此聲學觀測的機率是常數,故能夠歸約爲以下形式: 

 
Ŵ =argmaxP(W|X)=argmaxP(X|W)P(W)W^=argmaxP(W|X)=argmaxP(X|W)P(W)


目前通常採用的大詞彙量語音識別技術,會將聲學、語音學以及語言學的知識引入進系統中去。用 H 表示隱含馬爾科夫模型的狀態序列,C 表示上下文相關的音素序列,L 表示音素序列,並假設聲學特徵序列、隱含馬爾科夫模型的狀態序列、音素序列、字序列之間是獨立的,能夠將式子展開,得: 

 
W=argmaxHCLP(X|H)P(H|C)P(C|L)P(L|W)P(W)W=argmax∑H∑C∑LP(X|H)P(H|C)P(C|L)P(L|W)P(W)


式 子中,P(X|H)P(X|H) 稱爲聲學模型,表示聲學特徵序列對隱馬爾科夫狀態序列的後驗機率;P(HC)P(H│C)、P(CL)P(C│L)和P(LW)P(L│W)分別表示狀態序列對上下文相關的音素序列、上下文相關的音素序列對音素序列,以及音素序列對字序列的後驗機率;P(W)P(W)表示句子發生的機率,稱爲語言模型。這些機率都是由前面的 「訓練」 過程獲得的。 
目前,語音識別的解碼通常基於加權有限狀態轉換器(Weighted Finite State Transducer)進行。 
加權有限狀態轉換器是一種賦權有向圖,其每個節點表示一個 「狀態」,當接受到一個輸入符號之後,就會由對應的弧跳轉到另外一個 「狀態」,並 「發射」 一個輸出符號,弧上還能夠賦予權值。其形式化描述以下: 
半環 K 上的加權有限狀態轉換器 T 是一個八元組T=(Σ,Δ,Q,I,F,E,λ,ρ)T=(Σ,Δ,Q,I,F,E,λ,ρ),其中ΣΣ爲輸入符號集合,ΔΔ爲輸出符號集合,QQ爲狀態集合,II,QQ 爲初始狀態集合,FF,QQ 爲終止狀態集合,五元關係EQ×(Σϵ)×(Δϵ)×K×QE⊆Q×(Σ∪ϵ)×(Δ∪ϵ)×K×Q表示轉移函數,映射λIKλ:I→K表示初始狀態的權值,映射ρF𝕂ρ:F→K表示終止狀態的權值 。 
爲了擴大加權有限轉換器的適用範圍,將 「權重」 的含義推廣到更通常的代數結構——半環上去。給定集合 K 及其上的兩種運算⊕和⊗ ,若是K,,0⎯⎯⎯(K,⊕,0¯)爲帶有單位元0⎯⎯⎯0¯的交換幺半羣,K,,1⎯⎯⎯(K,⊗,1¯)爲帶有單位元 1⎯⎯⎯1¯ 的幺半羣,且 ⊕運算對於⊗運算具備分配性,0⎯⎯⎯0¯對於⊗運算爲零化子,即對於任意的aKa⊆K有a0⎯⎯⎯=0⎯⎯⎯a=0⎯⎯⎯a⊗0¯=0¯⊗a=0¯。因而,由首狀態到末狀態 「路徑」 上各個弧的總權重,能夠由⊗運算求 「積」 獲得,而多條路徑的總權重,則能夠由⊕求和獲得。下圖表示了一個簡單的加權有限狀態轉換器。其輸入符號集爲{a,b,c}{a,b,c},在圖中表示爲弧上冒號前的符號,輸出符號集爲{x,y,z}{x,y,z},在圖中表示爲弧上冒號後的符號,半環爲實數域,在圖中表示爲斜線後的數,雙圓圈表示終止狀態。 
這裏寫圖片描述 
在語音識別中,路徑的總權重能夠看做在輸入序列的條件下,輸出序列的聯合機率,又由於馬爾科夫鏈的無後效性假設,因此總權重能夠看做路徑上權重的乘積。因爲計算機運算,須要防止浮點數的下溢,這些機率經常取對數,即表 中對數半環,其中 log⊕log 運算的定義爲xlogy=log(ex+ey)x⊕logy=−log(e−x+e−y);又因爲語音識別中常須要在加權有限狀態轉換器上尋找權值最優的路徑,故定義了熱帶半環。

 

半環 集合 0⎯⎯⎯ 1⎯⎯⎯
對數半環 (Log) R{,+}R∪{−∞,+∞} log⊕log + ++∞ 0
熱帶半環 (Tropical) R{,+}R∪{−∞,+∞} Min + ++∞ 0

能夠利用加權有限狀態轉換器的組合(composition)操做,將不一樣層次的加權有限狀態轉換器合併起來。好比,在實際的語音識別系統中,通常會構建四個加權有限狀態轉換器:表示隱含馬爾科夫模型狀態序列到上下文相關音素序列映射的 H,表示上下文相關音素序列到音素序列映射的 C,表示音素序列到字序列的 L,以及語言模型 G,將此四個加權有限狀態轉換器組合,造成 HCLG,其對應着語音學和語言學的知識,其上弧的權重,能夠看做輸入隱含馬爾科夫模型狀態,輸出對應的字發生的機率。 
聲學模型 P(X|H) 根據訓練得出。將一句語音輸入訓練好的網絡前饋之後,獲得一個矩陣,其列表示幀數,行表示此幀對隱含馬爾科夫模型狀態的機率分佈,即一個某幀對某隱含馬爾科夫狀態的機率查詢表。 
因而,語音識別的解碼問題能夠歸結爲在加權有限狀態轉換器 HCLG 的最優路徑搜索問題,只是路徑的總權值除了要考慮 HCLG 弧上的權值之外,還要考慮聲學模型的權值,令總權值最大化。 
根據帶權有向無環圖單源最短路徑算法 ,考慮到事實 「對於圖的最短路徑上的某一節點 u,若其在此路徑上的前驅爲σ,則σ必然在源點到 u 的最短路徑(之一)上」, 可使用由源點開始,逐層構建最短路徑樹的方法進行。實際系統中,因爲搜索圖的龐大,爲了減小對計算機內存的消耗,常使用啓發式的波束搜索(Beam Search)技術,即設定一個閾值,在搜索樹中保留閾值範圍內的路徑,裁剪掉閾值範圍之外的路徑。加權有限狀態轉換器上的解碼過程能夠用僞代碼簡略地描述爲

foreach frame:
foreach token: if token->cost > cut_off: foreach arc: if arc.weight > cut_off: add arc to token else: delete token

 

其中,token 表示保存路徑的數據結構,其每個節點能夠保存弧,以及當前這條路徑的總代價。 在實際的語音識別系統中,最優路徑不必定與實際字序列匹配,咱們通常但願可以獲得得分最靠前的多條候選路徑,即 N-best。爲了緊湊地保存候選路徑,防止佔用過多內存空間,咱們通常採用詞格(Lattice)來保存識別的候選序列。詞格沒有通常的定義,經常使用的方法是利用有限狀態自動機的數據結構來構建詞格。

相關文章
相關標籤/搜索