-- 原創(chuàng),未經(jīng)授權(quán),禁止轉(zhuǎn)載 --
語(yǔ)音交互將會(huì)成為新的入口,也是各大公司務(wù)必爭(zhēng)奪的資源之一,資源是指數(shù)據(jù),不是技術(shù),因?yàn)榧夹g(shù)會(huì)開放,而有價(jià)值的有標(biāo)注的數(shù)據(jù)才是制勝法寶。
所以,pm們需要了解語(yǔ)音識(shí)別技術(shù)的基礎(chǔ),總有一天你會(huì)用到,并且這一天不會(huì)太遠(yuǎn)。
我會(huì)從以下幾個(gè)方面介紹語(yǔ)音識(shí)別:

一、 語(yǔ)音識(shí)別的基礎(chǔ)概念
1. 概念
自動(dòng)語(yǔ)音識(shí)別(Automatic Speech Recognition,ASR)技術(shù)是一種將人的語(yǔ)音轉(zhuǎn)換為文本的技術(shù)。
這項(xiàng)技術(shù)被當(dāng)做是可以使人與人、人與機(jī)器更順暢交流的橋梁,已經(jīng)在研究領(lǐng)域活躍了50多年。
2. 發(fā)展
ASR在近幾年的流行,與以下幾個(gè)關(guān)鍵領(lǐng)域的進(jìn)步有關(guān):
- 摩爾定律持續(xù)有效
使得多核處理器、通用計(jì)算圖形處理器GPGPU、CPU/GPU集群等技術(shù),為訓(xùn)練復(fù)雜模型提供了可能,顯著降低了ASR系統(tǒng)的錯(cuò)誤率。 - 大數(shù)據(jù)時(shí)代
借助互聯(lián)網(wǎng)和云計(jì)算,獲得了真實(shí)使用場(chǎng)景的大數(shù)據(jù)訓(xùn)練模型,使得ASR系統(tǒng)更具魯棒性(健壯性、穩(wěn)定性)。 - 移動(dòng)智能時(shí)代
移動(dòng)設(shè)備、可穿戴設(shè)備、智能家居設(shè)備、車載信息娛樂(lè)系統(tǒng),變得越來(lái)越流行,語(yǔ)音交互成為新的入口。
3. 研究領(lǐng)域分類
根據(jù)在不同限制條件下的研究任務(wù),產(chǎn)生了不同的研究領(lǐng)域。如圖:

4. 語(yǔ)音識(shí)別任務(wù)分類
根據(jù)不同任務(wù),語(yǔ)音識(shí)別可分為4類:

5. 應(yīng)用

語(yǔ)音交互作為新的入口,主要應(yīng)用于上圖中的兩大類:幫助人與人的交流和人與機(jī)器的交流。
-
幫助人與人的交流 HHC
應(yīng)用場(chǎng)景如,如翻譯系統(tǒng),微信溝通中的語(yǔ)音轉(zhuǎn)文字,語(yǔ)音輸入等功能。語(yǔ)音到語(yǔ)音(speech-to-speech,S2S)翻譯系統(tǒng),可以整合到像Skype這樣的交流工具中,實(shí)現(xiàn)自由的遠(yuǎn)程交流。
S2S組成模塊主要是,語(yǔ)音識(shí)別-->機(jī)器翻譯-->文字轉(zhuǎn)語(yǔ)音,可以看到,語(yǔ)音識(shí)別是整個(gè)流水線中的第一環(huán)。
幫助人與機(jī)器的交流 HMC
應(yīng)用場(chǎng)景如,語(yǔ)音搜索VS,個(gè)人數(shù)碼助理PDA,游戲,車載信息娛樂(lè)系統(tǒng)等。
6. 對(duì)話系統(tǒng)
要注意的是,我們上面所說(shuō)的應(yīng)用場(chǎng)景和系統(tǒng)討論,都是基于【語(yǔ)音對(duì)話系統(tǒng)】的舉例。
語(yǔ)音識(shí)別技術(shù)只是其中關(guān)鍵的一環(huán),想要組建一個(gè)完整的語(yǔ)音對(duì)話系統(tǒng),還需要其他技術(shù)。
語(yǔ)音對(duì)話系統(tǒng):(包含以下系統(tǒng)的一個(gè)或多個(gè))
1)語(yǔ)音識(shí)別系統(tǒng): 語(yǔ)音-->文字
2)語(yǔ)義理解系統(tǒng):提取用戶說(shuō)話的語(yǔ)音信息
3)文字轉(zhuǎn)語(yǔ)音系統(tǒng):文字-->語(yǔ)音
4)對(duì)話管理系統(tǒng):1)+ 2)+3)完成實(shí)際應(yīng)用場(chǎng)景的溝通

二、語(yǔ)音識(shí)別系統(tǒng)
語(yǔ)音識(shí)別問(wèn)題,其實(shí)是一個(gè)模式識(shí)別的問(wèn)題。給你一段聲波,機(jī)器判別是a還是b。
這個(gè)過(guò)程有兩大塊,一個(gè)是生成機(jī)器能理解的聲音向量。第二個(gè)是通過(guò)模型算法識(shí)別這些聲音向量,最終給出識(shí)別結(jié)果。
每一塊中間都有很多細(xì)小的步驟,我們后面會(huì)提到。
1. 系統(tǒng)架構(gòu)概述
下圖是語(yǔ)音識(shí)別系統(tǒng)的組成結(jié)構(gòu),主要分4部分:
信號(hào)處理和特征提取、聲學(xué)模型(AM)、語(yǔ)言模型(LM)和解碼搜索部分。

左半部分可以看做是前端,用于處理音頻流,從而分隔可能發(fā)聲的聲音片段,并將它們轉(zhuǎn)換成一系列數(shù)值。
聲學(xué)模型就是識(shí)別這些數(shù)值,給出識(shí)別結(jié)果。后面我們會(huì)詳細(xì)解釋。
右半邊看做是后端,是一個(gè)專用的搜索引擎,它獲取前端產(chǎn)生的輸出,在以下三個(gè)數(shù)據(jù)庫(kù)進(jìn)行搜索:一個(gè)發(fā)音模型,一個(gè)語(yǔ)言模型,一個(gè)詞典。
【發(fā)音模型】表示一種語(yǔ)言的發(fā)音聲音 ,可通過(guò)訓(xùn)練來(lái)識(shí)別某個(gè)特定用戶的語(yǔ)音模式和發(fā)音環(huán)境的特征。
【語(yǔ)言模型】表示一種語(yǔ)言的單詞如何合并 。
【詞典】列出該語(yǔ)言的大量單詞 ,以及關(guān)于每個(gè)單詞如何發(fā)音的信息。
a)信號(hào)處理和特征提取:
以音頻信號(hào)為輸入,通過(guò)消除噪聲和信道失真對(duì)語(yǔ)音進(jìn)行增強(qiáng),將信號(hào)從時(shí)域轉(zhuǎn)化到頻域,并為后面的聲學(xué)模型提取合適的有代表性的特征向量。
b)聲學(xué)模型:
將聲學(xué)和發(fā)音學(xué)的知識(shí)進(jìn)行整合,以特征提取部分生成的特征為輸入,并為可變長(zhǎng)特征序列生成聲學(xué)模型分?jǐn)?shù)。
c)語(yǔ)言模型:
語(yǔ)言模型估計(jì)通過(guò)訓(xùn)練語(yǔ)料學(xué)習(xí)詞與詞之間的相互關(guān)系,來(lái)估計(jì)假設(shè)詞序列的可能性,又叫語(yǔ)言模型分?jǐn)?shù)。如果了解領(lǐng)域或任務(wù)相關(guān)的先驗(yàn)知識(shí),語(yǔ)言模型的分?jǐn)?shù)通??梢怨烙?jì)的更準(zhǔn)確。
d)解碼搜索:
綜合聲學(xué)模型分?jǐn)?shù)與語(yǔ)言模型分?jǐn)?shù)的結(jié)果,將總體輸出分?jǐn)?shù)最高的詞序列當(dāng)做識(shí)別結(jié)果。
2. 語(yǔ)音識(shí)別技術(shù)詳解
看完上面的架構(gòu)圖,你應(yīng)該有個(gè)大致的印象,知道整個(gè)語(yǔ)音識(shí)別是怎么回事兒了。下面我們?cè)敿?xì)說(shuō)一些重要的過(guò)程。
2.1 語(yǔ)音識(shí)別單元
我們的語(yǔ)音內(nèi)容,由基本的語(yǔ)音單元組成。選擇要識(shí)別的語(yǔ)音單元是語(yǔ)音識(shí)別研究的第一步。
就是說(shuō),你要識(shí)別的結(jié)果是以什么為基礎(chǔ)單位的?是單詞還是元音字母?
語(yǔ)音識(shí)別單元有單詞 (句) 、音節(jié)和音素三種,具體選擇哪一種,根據(jù)具體任務(wù)來(lái)定,如詞匯量大小、訓(xùn)練語(yǔ)音數(shù)據(jù)的多少。

【音素】:在漢語(yǔ)里,最小的語(yǔ)音單位是音素,是從音色的角度分出來(lái)的。
【音節(jié)】:一個(gè)音素單獨(dú)存在或幾個(gè)音素結(jié)合起來(lái),叫做音節(jié)。可以從聽覺上區(qū)分,漢語(yǔ)一般是一字一音節(jié),少數(shù)的有兩字一音節(jié)(如“花兒”)和兩音節(jié)一字。

2.2 信號(hào)的數(shù)字化和預(yù)處理
接下來(lái)就要將收集到的語(yǔ)音轉(zhuǎn)化為一系列的數(shù)值,這樣機(jī)器才可以理解。
1)數(shù)字化
聲音是作為波的形式傳播的。將聲波轉(zhuǎn)換成數(shù)字包括兩個(gè)步驟:采樣和量化。

為了將聲波轉(zhuǎn)換成數(shù)字,我們只記錄聲波在等距點(diǎn)的高度,這被稱為采樣(sampling)。
采樣定理(Nyquist theorem)規(guī)定,從間隔的采樣中完美重建原始聲波——只要我們的采樣頻率比期望得到的最高頻率快至少兩倍就行。

經(jīng)過(guò)采樣,我們獲取了一系列的數(shù)字,這些數(shù)字才可以在機(jī)器上進(jìn)行建?;蛴?jì)算。
我們每秒讀取數(shù)千次,并把聲波在該時(shí)間點(diǎn)的高度用一個(gè)數(shù)字記錄下來(lái)。把每一秒鐘所采樣的數(shù)目稱為采樣頻率或采率,單位為HZ(赫茲)。
「CD 音質(zhì)」的音頻是以 44.1khz(每秒 44100 個(gè)讀數(shù))進(jìn)行采樣的。但對(duì)于語(yǔ)音識(shí)別,16khz(每秒 16000 個(gè)采樣)的采樣率就足以覆蓋人類語(yǔ)音的頻率范圍了。
2)采樣信號(hào)預(yù)處理
這里的預(yù)處理主要指,分幀處理。
因?yàn)檎Z(yǔ)音信號(hào)是不平穩(wěn)的、時(shí)長(zhǎng)變化的,如下圖:

我們把它分隔為一小段一小段(10毫秒-40毫秒)的短語(yǔ)音,我們認(rèn)為這樣的小片段是平穩(wěn)的,稱之為【幀】。
在每個(gè)幀上進(jìn)行信號(hào)分析,稱為語(yǔ)音的短時(shí)分析。

圖中,每幀的長(zhǎng)度為25毫秒,每?jī)蓭g有25-10=15毫秒的交疊。我們稱為幀長(zhǎng)25ms、幀移10ms的分幀。
幀移的事情就不詳細(xì)解釋了,它是為了保證語(yǔ)音信息的完整性。感興趣的同學(xué)可以查一下,加窗/窗函數(shù)。
那為什么需要平緩的分幀呢?因?yàn)槲覀冃枰龈道锶~變化,它適用于分析平穩(wěn)的信號(hào)。(想弄明白傅里葉變換的,之后可以參考文章末尾的鏈接)
人類是根據(jù)振動(dòng)頻率判斷聲音的,而以時(shí)間為橫軸(時(shí)域)的波形圖沒(méi)有振幅描述,我們需要做傅里葉變換,將它變成以頻率為橫軸(頻域)的振幅描述。
2.3 特征提取
特征提取就是從語(yǔ)音波形中提取出能反映語(yǔ)音特征的重要信息,去掉相對(duì)無(wú)關(guān)的信息(如背景噪聲),并把這些信息轉(zhuǎn)換為一組離散的參數(shù)矢量 。
1)特征提取
如何提取呢?我們經(jīng)過(guò)采樣,預(yù)處理,將這些數(shù)字繪制為簡(jiǎn)單的折線圖,如下所示,我們得到了 20 毫秒內(nèi)原始聲波的大致形狀:

這樣的波形圖對(duì)機(jī)器來(lái)說(shuō)沒(méi)有任何描述信息。這個(gè)波形圖背后是很多不同頻率的波疊加產(chǎn)生的。(準(zhǔn)確的講,它在時(shí)域上沒(méi)有描述能力)
我們希望一段聲紋能夠給出一個(gè)人的特性,比如什么時(shí)候高,什么時(shí)候低,什么時(shí)候頻率比較密集,什么時(shí)候比較平緩等等。

就是我們上面所說(shuō)的,用傅里葉變化來(lái)完成時(shí)域到頻域的轉(zhuǎn)換。
這就需要對(duì)每一幀做傅里葉變化,用特征參數(shù)MFCC得到每一幀的頻譜(這個(gè)過(guò)程就是特征提取,結(jié)果用多維向量表示),最后可以總結(jié)為一個(gè)頻譜圖(語(yǔ)譜圖)。
如下圖所示,是“hello”的頻譜圖,很酷是吧~
橫軸是時(shí)間,縱軸是頻率。顏色越亮,表示強(qiáng)度越大。

2)常用的特性參數(shù)
特性提取時(shí),我們有常用的特征參數(shù)作為提取模板,主要有兩種:
-
線性預(yù)測(cè)系數(shù)(LPC)
LPC 的基本思想是,當(dāng)前時(shí)刻的信號(hào)可以用若干個(gè)歷史時(shí)刻的信號(hào)的線性組合來(lái)估計(jì)。通過(guò)使實(shí)際語(yǔ)音的采樣值和線性預(yù)測(cè)采樣值之間達(dá)到均方差最小,即可得到一組線性預(yù)測(cè)系數(shù)。
求解LPC系數(shù)可以采用自相關(guān)法 (德賓 durbin 法) 、協(xié)方差法、格型法等快速算法。
-
倒譜系數(shù)
利用同態(tài)處理方法,對(duì)語(yǔ)音信號(hào)求離散傅立葉變換后取對(duì)數(shù),再求反變換就可得到倒譜系數(shù)。
其中,LPC倒譜(LPCCEP)是建立在LPC譜上的。而梅爾倒譜系數(shù)(Mel Frequency Cepstrum Coefficient, MFCC)則是基于MEL譜的。不同于LPC等通過(guò)對(duì)人的發(fā)聲機(jī)理的研究而得到的聲學(xué)特征,MFCC 是受人的聽覺系統(tǒng)研究成果推動(dòng)而導(dǎo)出的聲學(xué)特征。
簡(jiǎn)單的說(shuō),經(jīng)過(guò)梅爾倒譜分析,得到的參數(shù)更符合人耳的聽覺特性。
3)短語(yǔ)音識(shí)別為單詞
有了上面的特征提取,每一幀都可以表述為一個(gè)多維向量,接下來(lái)就是把向量識(shí)別為文本。
這里我們需要多介紹一個(gè)概念,叫【狀態(tài)】。
你可以理解為,是比音素更細(xì)致的語(yǔ)音單位。通常把一個(gè)音素劃分成3個(gè)狀態(tài)。

如上圖所示,識(shí)別過(guò)程無(wú)非是:
1)把幀識(shí)別成狀態(tài)(難點(diǎn))。
2)把狀態(tài)組合成音素。
3)把音素組合成單詞。
那每個(gè)音素應(yīng)該對(duì)應(yīng)哪種狀態(tài)呢?這就需要用到聲學(xué)模型了。
2.4 聲學(xué)模型
聲學(xué)模型是識(shí)別系統(tǒng)的底層模型,其目的是提供一種計(jì)算語(yǔ)音的特征矢量序列和每個(gè)發(fā)音模板之間的距離的方法。
也就是說(shuō),提取到的語(yǔ)音特性,與某個(gè)發(fā)音之間的差距越小,越有可能是這個(gè)發(fā)音。
或者說(shuō),某幀對(duì)應(yīng)哪個(gè)狀態(tài)的概率最大,那這幀就屬于哪個(gè)狀態(tài)。這個(gè)可以用GMM(混合高斯模型,就是一種概率分布)或DNN(深度神經(jīng)網(wǎng)絡(luò))來(lái)識(shí)別。
但這樣識(shí)別出來(lái)的結(jié)果會(huì)比較亂,因?yàn)橐粋€(gè)人講話的速度不一樣,每一幀識(shí)別出的結(jié)果可能是:....HHH_EE_LL__LLLL__OOO.....,如下圖:

這個(gè)問(wèn)題可以用DTW(動(dòng)態(tài)時(shí)間規(guī)整)或HMM(隱馬爾科夫模型)或CTC(改進(jìn)的RNN模型)來(lái)對(duì)齊識(shí)別結(jié)果,知道單詞從哪里開始,從哪里結(jié)束,哪些內(nèi)容是重復(fù)的沒(méi)有必要的。
1)常用的聲學(xué)建模方法包含以下三種:
- 基于模式匹配的動(dòng)態(tài)時(shí)間規(guī)整法(DTW);
- 隱馬爾可夫模型法(HMM);
- 基于人工神經(jīng)網(wǎng)絡(luò)識(shí)別法(ANN);
在過(guò)去,主流的語(yǔ)音識(shí)別系統(tǒng)通常使用梅爾倒譜系數(shù)(Mel-Frequency Cepstral Coefficient, MFCC)或者線性感知預(yù)測(cè)(Perceptual Linear Prediction, PLP)作為特征,使用混合高斯模型-隱馬爾科夫模型(GMM-HMM)作為聲學(xué)模型。
近些年,分層鑒別模型比如DNN,變得可行起來(lái),比如上下文相關(guān)的深度神經(jīng)網(wǎng)絡(luò)-隱馬爾可夫模型(context-dependent DNN-HMM,CD-DNN-HMM)就比傳統(tǒng)的GMM-HMM表現(xiàn)要好得多。
如下圖,你可以清晰的看到被替換的部分。

2)主要問(wèn)題:
我們要了解的是,聲學(xué)模型存在2個(gè)問(wèn)題:
1. 特征向量序列的可變長(zhǎng);
每個(gè)人說(shuō)同一個(gè)單詞的時(shí)間長(zhǎng)度都不一樣,聲學(xué)模型要能從不同的時(shí)間長(zhǎng)度的語(yǔ)音信號(hào)中識(shí)別出是同一個(gè)單詞。
解決方法就是DTW(動(dòng)態(tài)時(shí)間規(guī)整)、 HMM(隱馬爾可夫模型)。
2. 音頻信號(hào)的豐富變化性;
如說(shuō)話人的性別,健康狀況,緊張程度,說(shuō)話風(fēng)格、語(yǔ)速,環(huán)境噪音,周圍人聲,信道扭曲,方言差異,非母語(yǔ)口音等。
3)HMM 聲學(xué)建模:
對(duì)語(yǔ)音識(shí)別系統(tǒng)而言,HMM 的輸出值通常就是各個(gè)幀的聲學(xué)特征 。 為了降低模型的復(fù)雜度,通常 HMM 模型有兩個(gè)假設(shè)前提,一是內(nèi)部狀態(tài)的轉(zhuǎn)移只與上一狀態(tài)有關(guān),一是輸出值只與當(dāng)前狀態(tài)或當(dāng)前狀態(tài)轉(zhuǎn)移有關(guān)。除了這兩個(gè)假設(shè)外,HMM 模型還存在著一些理論上的假設(shè),其中之一就是,它假設(shè)語(yǔ)音是一個(gè)嚴(yán)格的馬爾科夫過(guò)程 。
2.5 語(yǔ)言模型
如何將識(shí)別出的單詞,組成有邏輯的句子,如何識(shí)別出正確的有歧義的單詞,這些就用到語(yǔ)言模型了。
由于語(yǔ)音信號(hào)的時(shí)變性、噪聲和其它一些不穩(wěn)定因素,單純靠聲學(xué)模型無(wú)法達(dá)到較高的語(yǔ)音識(shí)別的準(zhǔn)確率。在人類語(yǔ)言中,每一句話的單詞直接有密切的聯(lián)系,這些單詞層面的信息可以減少聲學(xué)模型上的搜索范圍,有效地提高識(shí)別的準(zhǔn)確性,要完成這項(xiàng)任務(wù)語(yǔ)言模型是必不可少的,它提供了語(yǔ)言中詞之間的上下文信息以及語(yǔ)義信息。
隨著統(tǒng)計(jì)語(yǔ)言處理方法的發(fā)展,統(tǒng)計(jì)語(yǔ)言模型成為語(yǔ)音識(shí)別中語(yǔ)言處理的主流技術(shù),其中統(tǒng)計(jì)語(yǔ)言模型有很多種,如N-Gram語(yǔ)言模型、馬爾可夫N元模型(Markov N-gram)、指數(shù)模型( Exponential Models)、決策樹模型(Decision Tree Models)等。而N元語(yǔ)言模型是最常被使用的統(tǒng)計(jì)語(yǔ)言模型,特別是二元語(yǔ)言模型(bigram)、三元語(yǔ)言模型(trigram)。
2.6 字典
字典是存放所有單詞的發(fā)音的詞典,它的作用是用來(lái)連接聲學(xué)模型和語(yǔ)言模型的。
識(shí)別出音素,利用字典,就可以查出單詞了。
例如,一個(gè)句子可以分成若干個(gè)單詞相連接,每個(gè)單詞通過(guò)查詢發(fā)音詞典得到該單詞發(fā)音的音素序列。相鄰單詞的轉(zhuǎn)移概率可以通過(guò)語(yǔ)言模型獲得,音素的概率模型可以通過(guò)聲學(xué)模型獲得。從而生成了這句話的一個(gè)概率模型。
2.7 解碼器
解碼器的作用就是將上述訓(xùn)練好的模型按照一定的規(guī)則組合起來(lái),將新輸入的語(yǔ)音識(shí)別出來(lái)。
三、 語(yǔ)音識(shí)別評(píng)估標(biāo)準(zhǔn)
在語(yǔ)音識(shí)別中,常用的評(píng)估標(biāo)準(zhǔn)為詞錯(cuò)誤率(Word Error Rate,WER)。
我們上面講了幀向量識(shí)別為單詞,需要用聲學(xué)模型。因?yàn)樽R(shí)別出來(lái)的整個(gè)詞序列是混亂的,需要進(jìn)行替換、刪除、插入某些詞,使得次序列有序完整。
WER就是反映上述過(guò)程的標(biāo)準(zhǔn),能直接反映識(shí)別系統(tǒng)聲學(xué)模型的性能,也是其他評(píng)估指標(biāo)如句錯(cuò)誤率SER的基礎(chǔ)。
傳統(tǒng)的詞錯(cuò)誤率評(píng)估算法在語(yǔ)音識(shí)別中存在三種典型的詞錯(cuò)誤:
1)替換錯(cuò)誤(Substitution)
在識(shí)別結(jié)果中,正確的詞被錯(cuò)誤的詞代替;
2)刪除錯(cuò)誤(Deletion)
在識(shí)別結(jié)果中,丟失了正確的詞;
3)插入錯(cuò)誤(Insertion)
在識(shí)別結(jié)果中,增加了一個(gè)多余的詞;
所以,詞錯(cuò)誤率為:

S 為替代錯(cuò)誤詞數(shù),D 為刪除錯(cuò)誤詞數(shù),I 為插入錯(cuò)誤詞數(shù)。T為參照句子中的所有詞數(shù)。
需要注意的是,因?yàn)橛胁迦朐~,所以WER有可能大于100%。
以上。
參考文章:
《實(shí)用語(yǔ)音識(shí)別基礎(chǔ)》 王炳錫,2005
《解析深度學(xué)習(xí)-語(yǔ)音識(shí)別實(shí)踐》鄧力,2016
http://dwz.cn/73TZx8 語(yǔ)音識(shí)別技術(shù)綜述,馬志欣,2006
http://blog.csdn.net/eaglex/article/details/6376826 隱馬爾科夫模型系列(國(guó)外經(jīng)典論文翻譯)
https://zhuanlan.zhihu.com/wille/19763358 傅里葉掐死教程
https://www.zhihu.com/question/20398418 知乎問(wèn)答系列
最后,想成為一名AI產(chǎn)品經(jīng)理,求推薦~