语音识别技术构架
轉自:https://coffee.pmcaff.com/article/1055672606603392/pmcaff?utm_source=forum&from=search
很好的一篇文章,沒有任何公式,但是把語音識別的技術框架說的很清楚,適合剛接觸語音識別的小伙伴看一下。我轉來備份一下。
語音交互將會成為新的入口,也是各大公司務必爭奪的資源之一,資源是指數據,不是技術,因為技術會開放,而有價值的有標注的數據才是制勝法寶。
所以,pm們需要了解語音識別技術的基礎,總有一天你會用到,并且這一天不會太遠。
我會從以下幾個方面介紹語音識別:
語音識別基礎.png
?
?
一、 語音識別的基礎概念
1. 概念
自動語音識別(Automatic Speech Recognition,ASR)技術是一種將人的語音轉換為文本的技術。
這項技術被當做是可以使人與人、人與機器更順暢交流的橋梁,已經在研究領域活躍了50多年。
2. 發展
ASR在近幾年的流行,與以下幾個關鍵領域的進步有關:
- 摩爾定律持續有效
使得多核處理器、通用計算圖形處理器GPGPU、CPU/GPU集群等技術,為訓練復雜模型提供了可能,顯著降低了ASR系統的錯誤率。 - 大數據時代
借助互聯網和云計算,獲得了真實使用場景的大數據訓練模型,使得ASR系統更具魯棒性(健壯性、穩定性)。 - 移動智能時代
移動設備、可穿戴設備、智能家居設備、車載信息娛樂系統,變得越來越流行,語音交互成為新的入口。
3. 研究領域分類
根據在不同限制條件下的研究任務,產生了不同的研究領域。如圖:
研究領域分類
?
4. 語音識別任務分類
根據不同任務,語音識別可分為4類:
任務分類
?
5. 應用
語音交互作為新的入口,主要應用于上圖中的兩大類:幫助人與人的交流和人與機器的交流。
-
幫助人與人的交流 HHC
應用場景如,如翻譯系統,微信溝通中的語音轉文字,語音輸入等功能。語音到語音(speech-to-speech,S2S)翻譯系統,可以整合到像Skype這樣的交流工具中,實現自由的遠程交流。
S2S組成模塊主要是,語音識別-->機器翻譯-->文字轉語音,可以看到,語音識別是整個流水線中的第一環。
-
幫助人與機器的交流 HMC
應用場景如,語音搜索VS,個人數碼助理PDA,游戲,車載信息娛樂系統等。
?
6. 對話系統
要注意的是,我們上面所說的應用場景和系統討論,都是基于【語音對話系統】的舉例。
語音識別技術只是其中關鍵的一環,想要組建一個完整的語音對話系統,還需要其他技術。
語音對話系統:(包含以下系統的一個或多個)
1)語音識別系統: 語音-->文字
2)語義理解系統:提取用戶說話的語音信息
3)文字轉語音系統:文字-->語音
4)對話管理系統:1)+ 2)+3)完成實際應用場景的溝通
語音對話系統
二、語音識別系統
語音識別問題,其實是一個模式識別的問題。給你一段聲波,機器判別是a還是b。
這個過程有兩大塊,一個是生成機器能理解的聲音向量。第二個是通過模型算法識別這些聲音向量,最終給出識別結果。
每一塊中間都有很多細小的步驟,我們后面會提到。
1. 系統架構概述
下圖是語音識別系統的組成結構,主要分4部分:
信號處理和特征提取、聲學模型(AM)、語言模型(LM)和解碼搜索部分。
語音識別系統的架構
?
左半部分可以看做是前端,用于處理音頻流,從而分隔可能發聲的聲音片段,并將它們轉換成一系列數值。
聲學模型就是識別這些數值,給出識別結果。后面我們會詳細解釋。
右半邊看做是后端,是一個專用的搜索引擎,它獲取前端產生的輸出,在以下三個數據庫進行搜索:一個發音模型,一個語言模型,一個詞典。
【發音模型】表示一種語言的發音聲音 ,可通過訓練來識別某個特定用戶的語音模式和發音環境的特征。
【語言模型】表示一種語言的單詞如何合并 。
【詞典】列出該語言的大量單詞 ,以及關于每個單詞如何發音的信息。
?
a)信號處理和特征提取:
以音頻信號為輸入,通過消除噪聲和信道失真對語音進行增強,將信號從時域轉化到頻域,并為后面的聲學模型提取合適的有代表性的特征向量。
b)聲學模型:
將聲學和發音學的知識進行整合,以特征提取部分生成的特征為輸入,并為可變長特征序列生成聲學模型分數。
c)語言模型:
語言模型估計通過訓練語料學習詞與詞之間的相互關系,來估計假設詞序列的可能性,又叫語言模型分數。如果了解領域或任務相關的先驗知識,語言模型的分數通常可以估計的更準確。
d)解碼搜索:
綜合聲學模型分數與語言模型分數的結果,將總體輸出分數最高的詞序列當做識別結果。
2. 語音識別技術詳解
看完上面的架構圖,你應該有個大致的印象,知道整個語音識別是怎么回事兒了。下面我們詳細說一些重要的過程。
2.1 語音識別單元
我們的語音內容,由基本的語音單元組成。選擇要識別的語音單元是語音識別研究的第一步。
就是說,你要識別的結果是以什么為基礎單位的?是單詞還是元音字母?
語音識別單元有單詞 (句) 、音節和音素三種,具體選擇哪一種,根據具體任務來定,如詞匯量大小、訓練語音數據的多少。
語音識別單元
【音素】:在漢語里,最小的語音單位是音素,是從音色的角度分出來的。
【音節】:一個音素單獨存在或幾個音素結合起來,叫做音節。可以從聽覺上區分,漢語一般是一字一音節,少數的有兩字一音節(如“花兒”)和兩音節一字。
語音識別單元
2.2 信號的數字化和預處理
接下來就要將收集到的語音轉化為一系列的數值,這樣機器才可以理解。
1)數字化
聲音是作為波的形式傳播的。將聲波轉換成數字包括兩個步驟:采樣和量化。
為了將聲波轉換成數字,我們只記錄聲波在等距點的高度,這被稱為采樣(sampling)。
采樣定理(Nyquist theorem)規定,從間隔的采樣中完美重建原始聲波——只要我們的采樣頻率比期望得到的最高頻率快至少兩倍就行。
?
?
經過采樣,我們獲取了一系列的數字,這些數字才可以在機器上進行建模或計算。
我們每秒讀取數千次,并把聲波在該時間點的高度用一個數字記錄下來。把每一秒鐘所采樣的數目稱為采樣頻率或采率,單位為HZ(赫茲)。
「CD 音質」的音頻是以 44.1khz(每秒 44100 個讀數)進行采樣的。但對于語音識別,16khz(每秒 16000 個采樣)的采樣率就足以覆蓋人類語音的頻率范圍了。
?
2)采樣信號預處理
這里的預處理主要指,分幀處理。
因為語音信號是不平穩的、時長變化的,如下圖:
我們把它分隔為一小段一小段(10毫秒-40毫秒)的短語音,我們認為這樣的小片段是平穩的,稱之為【幀】。
在每個幀上進行信號分析,稱為語音的短時分析。
?
圖中,每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為幀長25ms、幀移10ms的分幀。
幀移的事情就不詳細解釋了,它是為了保證語音信息的完整性。感興趣的同學可以查一下,加窗/窗函數。
那為什么需要平緩的分幀呢?因為我們需要做傅里葉變化,它適用于分析平穩的信號。(想弄明白傅里葉變換的,之后可以參考文章末尾的鏈接)
人類是根據振動頻率判斷聲音的,而以時間為橫軸(時域)的波形圖沒有振幅描述,我們需要做傅里葉變換,將它變成以頻率為橫軸(頻域)的振幅描述。
2.3 特征提取
特征提取就是從語音波形中提取出能反映語音特征的重要信息,去掉相對無關的信息(如背景噪聲),并把這些信息轉換為一組離散的參數矢量 。
1)特征提取
如何提取呢?我們經過采樣,預處理,將這些數字繪制為簡單的折線圖,如下所示,我們得到了 20 毫秒內原始聲波的大致形狀:
這樣的波形圖對機器來說沒有任何描述信息。這個波形圖背后是很多不同頻率的波疊加產生的。(準確的講,它在時域上沒有描述能力)
我們希望一段聲紋能夠給出一個人的特性,比如什么時候高,什么時候低,什么時候頻率比較密集,什么時候比較平緩等等。
?
就是我們上面所說的,用傅里葉變化來完成時域到頻域的轉換。
這就需要對每一幀做傅里葉變化,用特征參數MFCC得到每一幀的頻譜(這個過程就是特征提取,結果用多維向量表示),最后可以總結為一個頻譜圖(語譜圖)。
如下圖所示,是“hello”的頻譜圖,很酷是吧~
橫軸是時間,縱軸是頻率。顏色越亮,表示強度越大。
?
2)常用的特性參數
特性提取時,我們有常用的特征參數作為提取模板,主要有兩種:
-
線性預測系數(LPC)
LPC 的基本思想是,當前時刻的信號可以用若干個歷史時刻的信號的線性組合來估計。通過使實際語音的采樣值和線性預測采樣值之間達到均方差最小,即可得到一組線性預測系數。
求解LPC系數可以采用自相關法 (德賓 durbin 法) 、協方差法、格型法等快速算法。
-
倒譜系數
利用同態處理方法,對語音信號求離散傅立葉變換后取對數,再求反變換就可得到倒譜系數。
其中,LPC倒譜(LPCCEP)是建立在LPC譜上的。而梅爾倒譜系數(Mel Frequency Cepstrum Coefficient, MFCC)則是基于MEL譜的。不同于LPC等通過對人的發聲機理的研究而得到的聲學特征,MFCC 是受人的聽覺系統研究成果推動而導出的聲學特征。
簡單的說,經過梅爾倒譜分析,得到的參數更符合人耳的聽覺特性。
?
3)短語音識別為單詞
有了上面的特征提取,每一幀都可以表述為一個多維向量,接下來就是把向量識別為文本。
這里我們需要多介紹一個概念,叫【狀態】。
你可以理解為,是比音素更細致的語音單位。通常把一個音素劃分成3個狀態。
如上圖所示,識別過程無非是:
1)把幀識別成狀態(難點)。
2)把狀態組合成音素。
3)把音素組合成單詞。
那每個音素應該對應哪種狀態呢?這就需要用到聲學模型了。
2.4 聲學模型
聲學模型是識別系統的底層模型,其目的是提供一種計算語音的特征矢量序列和每個發音模板之間的距離的方法。
也就是說,提取到的語音特性,與某個發音之間的差距越小,越有可能是這個發音。
或者說,某幀對應哪個狀態的概率最大,那這幀就屬于哪個狀態。這個可以用GMM(混合高斯模型,就是一種概率分布)或DNN(深度神經網絡)來識別。
但這樣識別出來的結果會比較亂,因為一個人講話的速度不一樣,每一幀識別出的結果可能是:....HHH_EE_LL__LLLL__OOO.....,如下圖:
?
這個問題可以用DTW(動態時間規整)或HMM(隱馬爾科夫模型)或CTC(改進的RNN模型)來對齊識別結果,知道單詞從哪里開始,從哪里結束,哪些內容是重復的沒有必要的。
?
1)常用的聲學建模方法包含以下三種:
- 基于模式匹配的動態時間規整法(DTW);
- 隱馬爾可夫模型法(HMM);
- 基于人工神經網絡識別法(ANN);
在過去,主流的語音識別系統通常使用梅爾倒譜系數(Mel-Frequency Cepstral Coefficient, MFCC)或者線性感知預測(Perceptual Linear Prediction, PLP)作為特征,使用混合高斯模型-隱馬爾科夫模型(GMM-HMM)作為聲學模型。
近些年,分層鑒別模型比如DNN,變得可行起來,比如上下文相關的深度神經網絡-隱馬爾可夫模型(context-dependent DNN-HMM,CD-DNN-HMM)就比傳統的GMM-HMM表現要好得多。
如下圖,你可以清晰的看到被替換的部分。
?
2)主要問題:
我們要了解的是,聲學模型存在2個問題:
1. 特征向量序列的可變長;
每個人說同一個單詞的時間長度都不一樣,聲學模型要能從不同的時間長度的語音信號中識別出是同一個單詞。
解決方法就是DTW(動態時間規整)、 HMM(隱馬爾可夫模型)。
2. 音頻信號的豐富變化性;
如說話人的性別,健康狀況,緊張程度,說話風格、語速,環境噪音,周圍人聲,信道扭曲,方言差異,非母語口音等。
3)HMM 聲學建模:
對語音識別系統而言,HMM 的輸出值通常就是各個幀的聲學特征 。 為了降低模型的復雜度,通常 HMM 模型有兩個假設前提,一是內部狀態的轉移只與上一狀態有關,一是輸出值只與當前狀態或當前狀態轉移有關。除了這兩個假設外,HMM 模型還存在著一些理論上的假設,其中之一就是,它假設語音是一個嚴格的馬爾科夫過程 。
2.5 語言模型
如何將識別出的單詞,組成有邏輯的句子,如何識別出正確的有歧義的單詞,這些就用到語言模型了。
由于語音信號的時變性、噪聲和其它一些不穩定因素,單純靠聲學模型無法達到較高的語音識別的準確率。在人類語言中,每一句話的單詞直接有密切的聯系,這些單詞層面的信息可以減少聲學模型上的搜索范圍,有效地提高識別的準確性,要完成這項任務語言模型是必不可少的,它提供了語言中詞之間的上下文信息以及語義信息。
隨著統計語言處理方法的發展,統計語言模型成為語音識別中語言處理的主流技術,其中統計語言模型有很多種,如N-Gram語言模型、馬爾可夫N元模型(Markov N-gram)、指數模型( Exponential Models)、決策樹模型(Decision Tree Models)等。而N元語言模型是最常被使用的統計語言模型,特別是二元語言模型(bigram)、三元語言模型(trigram)。
2.6 字典
字典是存放所有單詞的發音的詞典,它的作用是用來連接聲學模型和語言模型的。
識別出音素,利用字典,就可以查出單詞了。
例如,一個句子可以分成若干個單詞相連接,每個單詞通過查詢發音詞典得到該單詞發音的音素序列。相鄰單詞的轉移概率可以通過語言模型獲得,音素的概率模型可以通過聲學模型獲得。從而生成了這句話的一個概率模型。
2.7 解碼器
解碼器的作用就是將上述訓練好的模型按照一定的規則組合起來,將新輸入的語音識別出來。
?
三、 語音識別評估標準
在語音識別中,常用的評估標準為詞錯誤率(Word Error Rate,WER)。
我們上面講了幀向量識別為單詞,需要用聲學模型。因為識別出來的整個詞序列是混亂的,需要進行替換、刪除、插入某些詞,使得次序列有序完整。
WER就是反映上述過程的標準,能直接反映識別系統聲學模型的性能,也是其他評估指標如句錯誤率SER的基礎。
傳統的詞錯誤率評估算法在語音識別中存在三種典型的詞錯誤:
1)替換錯誤(Substitution)
在識別結果中,正確的詞被錯誤的詞代替;
2)刪除錯誤(Deletion)
在識別結果中,丟失了正確的詞;
3)插入錯誤(Insertion)
在識別結果中,增加了一個多余的詞;
所以,詞錯誤率為:
S 為替代錯誤詞數,D 為刪除錯誤詞數,I 為插入錯誤詞數。T為參照句子中的所有詞數。
需要注意的是,因為有插入詞,所以WER有可能大于100%。
?
?
以上。
?
---?
?
參考文章:
《實用語音識別基礎》 王炳錫,2005
《解析深度學習-語音識別實踐》鄧力,2016
總結
- 上一篇: 谷歌搜索算法分析及应对策略
- 下一篇: 听声音破解电话号码