語音識別(speech recognition)技術,也被稱為自動語音識別(英語:Automatic Speech Recognition, ASR)、電腦語音識別(英語:Computer Speech Recognition)或是語音轉文本識別(英語:Speech To Text, STT),其目標是以電腦自動將人類的語音內容轉換為相應的文字。
搜狗知音引擎是搜狗公司自主研發的一項專注於自然交互的智能語音技術,該技術集合了語音識別、語義理解、語音交互、以及提供服務等多項功能。最近小編參與了語音相關項目的測試工作,測試中對語音識別的相關概念和原理有了深入了解,本文將對語音識別的流程進行展開講解。
語音識別流程語音識別流程,就是將一段語音信號轉換成相對應的文本信息的過程,它主要包含語音輸入、VAD端點檢測、特徵提取、聲學模型、語言模型以及字典與解碼幾個部分。
以搜狗語音識別技術流程為例,語音信號經過前端信號處理、端點檢測等處理後,逐幀提取語音特徵,傳統的特徵類型包括MFCC、PLP、FBANK等特徵,提取好的特徵送至解碼器,在聲學模型、語言模型以及發音詞典的共同指導下,找到最為匹配的詞序列作為識別結果輸出,整體語音識別系統的流程如下:
語音識別的核心公式為:
其中,聲學模型主要描述發音模型下特徵的似然概率,語言模型主要描述詞間的連接概率;發音詞典主要是完成詞和音之間的轉換。
接下來,將針對語音識別流程中的各個部分展開介紹。
VAD端點檢測語音識別開始之前,需要先對音頻信息進行預處理,預處理過程主要包括端點檢測和特徵提取。
端點檢測,也叫語音活動檢測(Voice Activity Detection,VAD),它的目的是對語音和非語音的區域進行區分。端點就是靜音和有效語音信號變化臨界點,端點檢測就是為了從帶有噪聲的語音中準確的定位出語音的開始點和結束點,去掉靜音的部分,去掉噪聲的部分,找到一段語音真正有效的內容。
VAD檢測主要包括2個方面:特徵參數與判決算法。
常用的特徵參數有五類,分別是基於能量、頻域、倒譜、諧波、長時特徵;
其中基於能量的VAD是檢測信號的強度,並且假設語音能量大於背景噪聲能量,這樣當能量大於某一門限時,可以認為有語音存在;
頻域特徵,通過STFT將時域信號變成頻域信號,即使在SNR到0dB時,一些頻帶的長時包絡還是可以區分語音和噪聲;
倒譜特徵,對於VAD,能量倒譜峰值確定了語音信號的基頻(pitch),也有使用MFCC做為特徵的;
基於諧波的特徵:語音的一個明顯特徵是包含了基頻 F0 及其多個諧波頻率,即使在強噪聲場景,諧波這一特徵也是存在的。可以使用自相關的方法找到基頻;
長時特徵:語音是非穩態信號。普通語速通常每秒發出10~15個音素,音素見的譜分布是不一樣的,這就導致了隨著時間變化語音統計特性也是變化的。另一方面,日常的絕大多數噪聲是穩態的(變化比較慢的),如白噪聲/機器噪聲。
VAD的判決算法也多種多樣,如門限算法、統計模型方法、機器學習方法等。
實際上,一方面需要對每個語音幀的幀內信息進行判決;另一方面由於語音幀之間有很強的相關性,相鄰幀的信息對當前幀的影響也應該被關注。
VAD 作為整個流程的最前端,端點檢測處理得好,不僅將處理的時間序列變小,還能消除無聲段道噪聲。
特徵提取特徵提取是通過將語音波形以相對最小的數據速率轉換為參數表示形式進行後續處理和分析來實現的,MFCC(Mel Frequency Cepstral Coefficents)是一種在自動語音和說話人識別中廣泛使用的特徵。
下圖是MFCC特徵提取的整個過程,下面將一一介紹特徵提取過程每一步的作用: 預加重
在音頻錄製過程中,高頻信號更容易衰減,而像元音等一些因素的發音包含了較多的高頻信號的成分,高頻信號的丟失,可能會導致音素的共振峰並不明顯,使得聲學模型對這些音素的建模能力不強。預加重是個一階高通濾波器,可以提高信號高頻部分的能量
分幀
語音信號是一個非穩態的、時變的信號。但在短時間範圍內可以認為語音信號是穩態的、時不變的。這個短時間一般取10-30ms,因此在進行語音信號處理時,為減少語音信號整體的非穩態、時變的影響,從而對語音信號進行分段處理,其中每一段稱為一幀,幀長一般取25ms。為了使幀與幀之間平滑過渡,保持其連續性,分幀一般採用交疊分段的方法,保證相鄰兩幀相互重疊一部分。相鄰兩幀的起始位置的時間差稱為幀移,我們一般在使用中幀移取值為10ms。
加窗
因為後面會對信號做FFT,而FFT變換的要求為:信號要麼從-∞到+∞,要麼為周期信號。現實世界中,不可能採集時間從 -∞ 到 +∞ 的信號,只能是有限時間長度的信號。由於分幀後的信號是非周期的,進行 FFT 變換之後會有頻率洩露的問題發生,為了將這個洩漏誤差減少到最小程度(注意我說是的減少,而不是消除),我們需要使用加權函數,也叫窗函數。加窗主要是為了使時域信號似乎更好地滿足 FFT 處理的周期性要求,減少洩漏。
DFT
離散傅立葉變換(Discrete Fourier Transform,縮寫為 DFT),將每個窗口內的數據從時域信號轉為頻域信號。
梅爾濾波器組
從 FFT 出來的結果是每個頻帶上面的幅值,然而人類對不同頻率語音有不同的感知能力:對1kHz以下,與頻率成線性關係,對1kHz以上,與頻率成對數關係。頻率越高,感知能力就越差。在Mel頻域內,人的感知能力為線性關係,如果兩段語音的Mel頻率差兩倍,則人在感知上也差兩倍。
梅爾濾波器組將梅爾域上每個三角濾波器的起始、中間和截止頻率轉換線性頻率域,並對 DFT 之後的譜特徵進行濾波,再進行 log 操作,得到Fbank(Filter Bank)特徵。
IDFT
FBank 特徵的頻譜圖如下圖所示,圖中四個紅點表示的是共振峰,是頻譜圖的主要頻率,在語音識別中,根據共振峰來區分不同的音素(phone),所以我們可以把圖中紅線表示的特徵提取出來就行,移除藍色的影響部分。其中紅色平滑曲線將各個共振峰連接起來,這條紅線,稱為譜包絡(Spectral Envelope),藍色上下震蕩比較多的線條稱為譜細節(Spectral details)。這個過程是通過逆離散傅立葉變換(IDFT,Inverse Discrete Fourier Transform)實現的。
聲學模型聲學模型(Acoustic model)是語音識別系統中最為重要的部分之一,利用了聲學、語音學、環境特性以及說話人性別口音等信息,對語音進行建模。
聲學模型可以理解為是對發聲的建模,它能夠把語音輸入轉換成聲學表示的輸出,更準確的說是給出語音屬於某個聲學符號的概率。在英文中這個聲學符號可以是音節或者更小的顆粒度音素(phone),在中文中這個聲學符號可以是聲韻母或者是顆粒度同英文一樣小的音素。
比較經典的聲學建模模型為隱馬爾科夫模型(Hidden Markov Model,HMM)。隱馬爾可夫模型是一個離散時域有限狀態自動機,這一馬爾可夫模型的內部狀態外界不可見,外界只能看到各個時刻的輸出值。對語音識別系統,輸出值通常就是從各個幀計算而得的聲學特徵。
近年來,隨著深度學習的興起,使用了接近30年的語音識別聲學模型HMM(隱馬爾科夫模型)逐漸被DNN(泛指深度神經網絡)所替代,模型精度也有了突飛猛進的變化,整體來看聲學建模技術從建模單元、模型結構、建模流程等三個維度都有了比較明顯的變化,如圖所示:
下圖為DNN-HMM混合建模框架,DNN的輸入是傳統的語音波形經過加窗、分幀,然後提取出來的頻譜特徵,如MFCC、PLP或更底層的濾波器組(filter bank,FBK)聲學特徵等。輸入特徵使用了在當前幀左右拼幀的方式來實現模型對時序信號長時相關性的建模,可以更好地利用上下文的信息;模型輸出則保持了GMM-HMM經常使用的trihone共享狀態(senone)。
如下圖為各種聲學模型對識別結果(字錯率)的影響,選擇合適的聲學模型是語音識別最核心的關鍵之一。
語言模型語言模型表示某一字序列發生的概率,是對一組字序列構成的知識表示。它的作用之一為消解多音字的問題,在聲學模型給出發音序列之後,從候選的文字序列中找出概率最大的字符串序列。
語音識別中常用的語言模型是N元文法(N-Gram),即統計前後N個字出現的概率。N 元文法假定某一個字出現的概率僅與前面 N-1 個字出現的概率有關係。N-Gram模型中的N越大,需要的訓練數據就越多。一般的語音識別系統可以做到trigram(N=3)。
語言模型還會對聲學的解碼作約束和重打分,讓最終識別結果符合語法規則。目前最常見的是N-Gram語言模型和基於RNN的語言模型。
字典語音識別中的字典,就是發音字典,是字詞對應的音素index集合,是字詞和音素之間的映射。中文中就是拼音與漢字的對應,英文中就是音標與單詞的對應,其目的是根據聲學模型識別出來的音素,來找到對應的漢字(詞)或者單詞,用來在聲學模型和語言模型建立橋梁,將兩者聯繫起來。
發音字典的形式舉例如下:
解碼器解碼器模塊主要完成的工作是,給定輸入特徵序列的情況下,在由聲學模型、發音詞典和語言模型等知識源組成的搜索空間(Search Space)中,通過一定的搜索算法,尋找使概率最大的詞序列。
它的核心公式:
在解碼過程中,各種解碼器的具體實現可以是不同的。按搜索空間的構成方式來分,有動態編譯和靜態編譯兩種方式。根據應用場景不同,可以分為在線解碼器(在伺服器端解碼) 、離線解碼器(在設備端解碼)、二遍解碼器、喚醒解碼器、固定句式解碼器。根據技術分類,可以分為基於lexicon tree的解碼器、基於WFST的解碼器、基於lattice rescore的解碼器等。
總結
以上是小編對語音識別整個流程的初步調研分享,如有不足之處請大家多指教,待後續更深入了解後再分享給大家。
文章參考:
主流聲學模型對比https://cloud.tencent.com/developer/article/1451421
語音識別之特徵提取https://zhuanlan.zhihu.com/p/147386972
語音識別之解碼器技術簡介https://zhuanlan.zhihu.com/p/23648888
本次就先記錄這麼多,下一次再見。
希望大家能有所收穫,一起進步、互相學習!
搜狗測試微信號:Qa_xiaoming
搜狗測試QQ粉絲群:459645679