玩人工智能的你必須知道的語音識(shí)別技術(shù)原理
在人工智能快速發(fā)展的今天,語音識(shí)別開始成為很多設(shè)備的標(biāo)配, 語音識(shí)別開始被越來越多的人關(guān)注,國外微軟、蘋果、谷歌、nuance,國內(nèi)的科大訊飛、思必馳等廠商都在研發(fā)語音識(shí)別新策略新算法,似乎人類與語音的自然交互漸行漸近。
我們都希望像《鋼鐵俠》中那樣智能先進(jìn)的語音助手,在與機(jī)器人進(jìn)行語音交流時(shí),讓它聽明白你在說什么。語音識(shí)別技術(shù)將人類這一曾經(jīng)的夢(mèng)想變成了現(xiàn)實(shí)。語音識(shí)別就好比“機(jī)器的聽覺系統(tǒng)”,該技術(shù)讓機(jī)器通過識(shí)別和理解,把語音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令。
語音識(shí)別技術(shù),也被稱為自動(dòng)語音識(shí)別AutomaTIc Speech RecogniTIon,(ASR),其目標(biāo)是將人類的語音中的詞匯內(nèi)容轉(zhuǎn)換為計(jì)算機(jī)可讀的輸入,例如按鍵、二進(jìn)制編碼或者字符序列。與說話人識(shí)別及說話人確認(rèn)不同,后者嘗試識(shí)別或確認(rèn)發(fā)出語音的說話人而非其中所包含的詞匯內(nèi)容。下面我們來詳細(xì)解讀語音識(shí)別技術(shù)原理。
一:語音識(shí)別技術(shù)原理-語音識(shí)別系統(tǒng)的基礎(chǔ)單元語音識(shí)別是以語音為研究對(duì)象,通過語音信號(hào)處理和模式識(shí)別讓機(jī)器自動(dòng)識(shí)別和理解人類口述的語言。語音識(shí)別技術(shù)就是讓機(jī)器通過識(shí)別和理解過程把語音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù)。語音識(shí)別是一門涉及面很廣的交叉學(xué)科,它與聲學(xué)、語音學(xué)、語言學(xué)、信息理論、模式識(shí)別理論以及神經(jīng)生物學(xué)等學(xué)科都有非常密切的關(guān)系。語音識(shí)別技術(shù)正逐步成為計(jì)算機(jī)信息處理技術(shù)中的關(guān)鍵技術(shù),語音技術(shù)的應(yīng)用已經(jīng)成為一個(gè)具有競爭性的新興高技術(shù)產(chǎn)業(yè)。
語音識(shí)別系統(tǒng)本質(zhì)上是一種模式識(shí)別系統(tǒng),包括特征提取、模式匹配、參考模式庫等三個(gè)基本單元,它的基本結(jié)構(gòu)如下圖所示:
未知語音經(jīng)過話筒變換成電信號(hào)后加在識(shí)別系統(tǒng)的輸入端,首先經(jīng)過預(yù)處理,再根據(jù)人的語音特點(diǎn)建立語音模型,對(duì)輸入的語音信號(hào)進(jìn)行分析,并抽取所需的特征,在此基礎(chǔ)上建立語音識(shí)別所需的模板。而計(jì)算機(jī)在識(shí)別過程中要根據(jù)語音識(shí)別的模型,將計(jì)算機(jī)中存放的語音模板與輸入的語音信號(hào)的特征進(jìn)行比較,根據(jù)一定的搜索和匹配策略,找出一系列最優(yōu)的與輸入語音匹配的模板。然后根據(jù)此模板的定義,通過查表就可以給出計(jì)算機(jī)的識(shí)別結(jié)果。顯然,這種最優(yōu)的結(jié)果與特征的選擇、語音模型的好壞、模板是否準(zhǔn)確都有直接的關(guān)系。
語音識(shí)別系統(tǒng)構(gòu)建過程整體上包括兩大部分:訓(xùn)練和識(shí)別。訓(xùn)練通常是離線完成的,對(duì)預(yù)先收集好的海量語音、語言數(shù)據(jù)庫進(jìn)行信號(hào)處理和知識(shí)挖掘,獲取語音識(shí)別系統(tǒng)所需要的“聲學(xué)模型”和“語言模型”;而識(shí)別過程通常是在線完成的,對(duì)用戶實(shí)時(shí)的語音進(jìn)行自動(dòng)識(shí)別。識(shí)別過程通常又可以分為“前端”和“后端”兩大模塊:“前端”模塊主要的作用是進(jìn)行端點(diǎn)檢測(去除多余的靜音和非說話聲)、降噪、特征提取等;“后端”模塊的作用是利用訓(xùn)練好的“聲學(xué)模型”和“語言模型”對(duì)用戶說話的特征向量進(jìn)行統(tǒng)計(jì)模式識(shí)別(又稱“解碼”),得到其包含的文字信息,此外,后端模塊還存在一個(gè)“自適應(yīng)”的反饋模塊,可以對(duì)用戶的語音進(jìn)行自學(xué)習(xí),從而對(duì)“聲學(xué)模型”和“語音模型”進(jìn)行必要的“校正”,進(jìn)一步提高識(shí)別的準(zhǔn)確率。
語音識(shí)別是模式識(shí)別的一個(gè)分支,又從屬于信號(hào)處理科學(xué)領(lǐng)域,同時(shí)與語音學(xué)、語言學(xué)、數(shù)理統(tǒng)計(jì)及神經(jīng)生物學(xué)等學(xué)科有非常密切的關(guān)系。語音識(shí)別的目的就是讓機(jī)器“聽懂”人類口述的語言,包括了兩方面的含義:其一是逐字逐句聽懂非轉(zhuǎn)化成書面語言文字;其二是對(duì)口述語言中所包含的要求或詢問加以理解,做出正確響應(yīng),而不拘泥于所有詞的正確轉(zhuǎn)換。
自動(dòng)語音識(shí)別技術(shù)有三個(gè)基本原理:首先語音信號(hào)中的語言信息是按照短時(shí)幅度譜的時(shí)間變化模式來編碼;其次語音是可以閱讀的,即它的聲學(xué)信號(hào)可以在不考慮說話人試圖傳達(dá)的信息內(nèi)容的情況下用數(shù)十個(gè)具有區(qū)別性的、離散的符號(hào)來表示;第三語音交互是一個(gè)認(rèn)知過程,因而不能與語言的語法、語義和語用結(jié)構(gòu)割裂開來。
聲學(xué)模型
語音識(shí)別系統(tǒng)的模型通常由聲學(xué)模型和語言模型兩部分組成,分別對(duì)應(yīng)于語音到音節(jié)概率的計(jì)算和音節(jié)到字概率的計(jì)算。聲學(xué)建模;語言模型
搜索
連續(xù)語音識(shí)別中的搜索,就是尋找一個(gè)詞模型序列以描述輸入語音信號(hào),從而得到詞解碼序列。搜索所依據(jù)的是對(duì)公式中的聲學(xué)模型打分和語言模型打分。在實(shí)際使用中,往往要依據(jù)經(jīng)驗(yàn)給語言模型加上一個(gè)高權(quán)重,并設(shè)置一個(gè)長詞懲罰分?jǐn)?shù)。
系統(tǒng)實(shí)現(xiàn)
語音識(shí)別系統(tǒng)選擇識(shí)別基元的要求是,有準(zhǔn)確的定義,能得到足夠數(shù)據(jù)進(jìn)行訓(xùn)練,具有一般性。英語通常采用上下文相關(guān)的音素建模,漢語的協(xié)同發(fā)音不如英語嚴(yán)重,可以采用音節(jié)建模。系統(tǒng)所需的訓(xùn)練數(shù)據(jù)大小與模型復(fù)雜度有關(guān)。模型設(shè)計(jì)得過于復(fù)雜以至于超出了所提供的訓(xùn)練數(shù)據(jù)的能力,會(huì)使得性能急劇下降。
聽寫機(jī):大詞匯量、非特定人、連續(xù)語音識(shí)別系統(tǒng)通常稱為聽寫機(jī)。其架構(gòu)就是建立在前述聲學(xué)模型和語言模型基礎(chǔ)上的HMM拓?fù)浣Y(jié)構(gòu)。訓(xùn)練時(shí)對(duì)每個(gè)基元用前向后向算法獲得模型參數(shù),識(shí)別時(shí),將基元串接成詞,詞間加上靜音模型并引入語言模型作為詞間轉(zhuǎn)移概率,形成循環(huán)結(jié)構(gòu),用Viterbi算法進(jìn)行解碼。針對(duì)漢語易于分割的特點(diǎn),先進(jìn)行分割再對(duì)每一段進(jìn)行解碼,是用以提高效率的一個(gè)簡化方法。
對(duì)話系統(tǒng):用于實(shí)現(xiàn)人機(jī)口語對(duì)話的系統(tǒng)稱為對(duì)話系統(tǒng)。受目前技術(shù)所限,對(duì)話系統(tǒng)往往是面向一個(gè)狹窄領(lǐng)域、詞匯量有限的系統(tǒng),其題材有旅游查詢、訂票、數(shù)據(jù)庫檢索等等。其前端是一個(gè)語音識(shí)別器,識(shí)別產(chǎn)生的N-best候選或詞候選網(wǎng)格,由語法分析器進(jìn)行分析獲取語義信息,再由對(duì)話管理器確定應(yīng)答信息,由語音合成器輸出。由于目前的系統(tǒng)往往詞匯量有限,也可以用提取關(guān)鍵詞的方法來獲取語義信息。
二:語音識(shí)別技術(shù)原理-工作原理解讀首先,我們知道聲音實(shí)際上是一種波。常見的mp3等格式都是壓縮格式,必須轉(zhuǎn)成非壓縮的純波形文件來處理,比如Windows PCM文件,也就是俗稱的wav文件。wav文件里存儲(chǔ)的除了一個(gè)文件頭以外,就是聲音波形的一個(gè)個(gè)點(diǎn)了。下圖是一個(gè)波形的示例。
圖中,每幀的長度為25毫秒,每兩幀之間有25-10=15毫秒的交疊。我們稱為以幀長25ms、幀移10ms分幀。
分幀后,語音就變成了很多小段。但波形在時(shí)域上幾乎沒有描述能力,因此必須將波形作變換。常見的一種變換方法是提取MFCC特征,根據(jù)人耳的生理特性,把每一幀波形變成一個(gè)多維向量,可以簡單地理解為這個(gè)向量包含了這幀語音的內(nèi)容信息。這個(gè)過程叫做聲學(xué)特征提取。實(shí)際應(yīng)用中,這一步有很多細(xì)節(jié),聲學(xué)特征也不止有MFCC這一種,具體這里不講。
至此,聲音就成了一個(gè)12行(假設(shè)聲學(xué)特征是12維)、N列的一個(gè)矩陣,稱之為觀察序列,這里N為總幀數(shù)。觀察序列如下圖所示,圖中,每一幀都用一個(gè)12維的向量表示,色塊的顏色深淺表示向量值的大小。
接下來就要介紹怎樣把這個(gè)矩陣變成文本了。首先要介紹兩個(gè)概念:
音素:單詞的發(fā)音由音素構(gòu)成。對(duì)英語,一種常用的音素集是卡內(nèi)基梅隆大學(xué)的一套由39個(gè)音素構(gòu)成的音素集,參見The CMU Pronouncing DicTIonary。漢語一般直接用全部聲母和韻母作為音素集,另外漢語識(shí)別還分有調(diào)無調(diào),不詳述。
狀態(tài):這里理解成比音素更細(xì)致的語音單位就行啦。通常把一個(gè)音素劃分成3個(gè)狀態(tài)。
語音識(shí)別是怎么工作的呢?實(shí)際上一點(diǎn)都不神秘,無非是:
第一步,把幀識(shí)別成狀態(tài)(難點(diǎn))。
第二步,把狀態(tài)組合成音素。
第三步,把音素組合成單詞。
如下圖所示:
圖中,每個(gè)小豎條代表一幀,若干幀語音對(duì)應(yīng)一個(gè)狀態(tài),每三個(gè)狀態(tài)組合成一個(gè)音素,若干個(gè)音素組合成一個(gè)單詞。也就是說,只要知道每幀語音對(duì)應(yīng)哪個(gè)狀態(tài)了,語音識(shí)別的結(jié)果也就出來了。
那每幀音素對(duì)應(yīng)哪個(gè)狀態(tài)呢?有個(gè)容易想到的辦法,看某幀對(duì)應(yīng)哪個(gè)狀態(tài)的概率最大,那這幀就屬于哪個(gè)狀態(tài)。比如下面的示意圖,這幀在狀態(tài)S3上的條件概率最大,因此就猜這幀屬于狀態(tài)S3。
那這些用到的概率從哪里讀取呢?有個(gè)叫“聲學(xué)模型”的東西,里面存了一大堆參數(shù),通過這些參數(shù),就可以知道幀和狀態(tài)對(duì)應(yīng)的概率。獲取這一大堆參數(shù)的方法叫做“訓(xùn)練”,需要使用巨大數(shù)量的語音數(shù)據(jù),訓(xùn)練的方法比較繁瑣,這里不講。
但這樣做有一個(gè)問題:每一幀都會(huì)得到一個(gè)狀態(tài)號(hào),最后整個(gè)語音就會(huì)得到一堆亂七八糟的狀態(tài)號(hào),相鄰兩幀間的狀態(tài)號(hào)基本都不相同。假設(shè)語音有1000幀,每幀對(duì)應(yīng)1個(gè)狀態(tài),每3個(gè)狀態(tài)組合成一個(gè)音素,那么大概會(huì)組合成300個(gè)音素,但這段語音其實(shí)根本沒有這么多音素。如果真這么做,得到的狀態(tài)號(hào)可能根本無法組合成音素。實(shí)際上,相鄰幀的狀態(tài)應(yīng)該大多數(shù)都是相同的才合理,因?yàn)槊繋芏獭?/p>
解決這個(gè)問題的常用方法就是使用隱馬爾可夫模型(Hidden Markov Model,HMM)。這東西聽起來好像很高深的樣子,實(shí)際上用起來很簡單:
第一步,構(gòu)建一個(gè)狀態(tài)網(wǎng)絡(luò)。
第二步,從狀態(tài)網(wǎng)絡(luò)中尋找與聲音最匹配的路徑。
這樣就把結(jié)果限制在預(yù)先設(shè)定的網(wǎng)絡(luò)中,避免了剛才說到的問題,當(dāng)然也帶來一個(gè)局限,比如你設(shè)定的網(wǎng)絡(luò)里只包含了“今天晴天”和“今天下雨”兩個(gè)句子的狀態(tài)路徑,那么不管說些什么,識(shí)別出的結(jié)果必然是這兩個(gè)句子中的一句。
那如果想識(shí)別任意文本呢?把這個(gè)網(wǎng)絡(luò)搭得足夠大,包含任意文本的路徑就可以了。但這個(gè)網(wǎng)絡(luò)越大,想要達(dá)到比較好的識(shí)別準(zhǔn)確率就越難。所以要根據(jù)實(shí)際任務(wù)的需求,合理選擇網(wǎng)絡(luò)大小和結(jié)構(gòu)。
搭建狀態(tài)網(wǎng)絡(luò),是由單詞級(jí)網(wǎng)絡(luò)展開成音素網(wǎng)絡(luò),再展開成狀態(tài)網(wǎng)絡(luò)。語音識(shí)別過程其實(shí)就是在狀態(tài)網(wǎng)絡(luò)中搜索一條最佳路徑,語音對(duì)應(yīng)這條路徑的概率最大,這稱之為“解碼”。路徑搜索的算法是一種動(dòng)態(tài)規(guī)劃剪枝的算法,稱之為Viterbi算法,用于尋找全局最優(yōu)路徑。
這里所說的累積概率,由三部分構(gòu)成,分別是:
觀察概率:每幀和每個(gè)狀態(tài)對(duì)應(yīng)的概率
轉(zhuǎn)移概率:每個(gè)狀態(tài)轉(zhuǎn)移到自身或轉(zhuǎn)移到下個(gè)狀態(tài)的概率
語言概率:根據(jù)語言統(tǒng)計(jì)規(guī)律得到的概率
其中,前兩種概率從聲學(xué)模型中獲取,最后一種概率從語言模型中獲取。語言模型是使用大量的文本訓(xùn)練出來的,可以利用某門語言本身的統(tǒng)計(jì)規(guī)律來幫助提升識(shí)別正確率。語言模型很重要,如果不使用語言模型,當(dāng)狀態(tài)網(wǎng)絡(luò)較大時(shí),識(shí)別出的結(jié)果基本是一團(tuán)亂麻。
這樣基本上語音識(shí)別過程就完成了,這就是語音識(shí)別技術(shù)的原理。
三:語音識(shí)別技術(shù)原理-語音識(shí)別系統(tǒng)的工作流程
一般來說,一套完整的語音識(shí)別系統(tǒng)其工作過程分為7步:
①對(duì)語音信號(hào)進(jìn)行分析和處理,除去冗余信息。
②提取影響語音識(shí)別的關(guān)鍵信息和表達(dá)語言含義的特征信息。
③緊扣特征信息,用最小單元識(shí)別字詞。
④按照不同語言的各自語法,依照先后次序識(shí)別字詞。
⑤把前后意思當(dāng)作輔助識(shí)別條件,有利于分析和識(shí)別。
⑥按照語義分析,給關(guān)鍵信息劃分段落,取出所識(shí)別出的字詞并連接起來,同時(shí)根據(jù)語句意思調(diào)整句子構(gòu)成。
⑦結(jié)合語義,仔細(xì)分析上下文的相互聯(lián)系,對(duì)當(dāng)前正在處理的語句進(jìn)行適當(dāng)修正。
音識(shí)別系統(tǒng)基本原理框圖
語音識(shí)別系統(tǒng)基本原理結(jié)構(gòu)如圖所示。語音識(shí)別原理有三點(diǎn):①對(duì)語音信號(hào)中的語言信息編碼是按照幅度譜的時(shí)間變化來進(jìn)行;②由于語音是可以閱讀的,也就是說聲學(xué)信號(hào)可以在不考慮說話人說話傳達(dá)的信息內(nèi)容的前提下用多個(gè)具有區(qū)別性的、離散的符號(hào)來表示;③語音的交互是一個(gè)認(rèn)知過程,所以絕對(duì)不能與語法、語義和用語規(guī)范等方面分裂開來。
預(yù)處理,其中就包括對(duì)語音信號(hào)進(jìn)行采樣、克服混疊濾波、去除部分由個(gè)體發(fā)音的差異和環(huán)境引起的噪聲影響,此外還會(huì)考慮到語音識(shí)別基本單元的選取和端點(diǎn)檢測問題。反復(fù)訓(xùn)練是在識(shí)別之前通過讓說話人多次重復(fù)語音,從原始語音信號(hào)樣本中去除冗余信息,保留關(guān)鍵信息,再按照一定規(guī)則對(duì)數(shù)據(jù)加以整理,構(gòu)成模式庫。再者是模式匹配,它是整個(gè)語音識(shí)別系統(tǒng)的核心部分,是根據(jù)一定規(guī)則以及計(jì)算輸入特征與庫存模式之間的相似度,進(jìn)而判斷出輸入語音的意思。
前端處理,先對(duì)原始語音信號(hào)進(jìn)行處理,再進(jìn)行特征提取,消除噪聲和不同說話人的發(fā)音差異帶來的影響,使處理后的信號(hào)能夠更完整地反映語音的本質(zhì)特征提取,消除噪聲和不同說話人的發(fā)音差異帶來的影響,使處理后的信號(hào)能夠更完整地反映語音的本質(zhì)特征。
四:語音識(shí)別技術(shù)原理-發(fā)展歷程早在計(jì)算機(jī)發(fā)明之前,自動(dòng)語音識(shí)別的設(shè)想就已經(jīng)被提上了議事日程,早期的聲碼器可被視作語音識(shí)別及合成的雛形。而1920年代生產(chǎn)的“Radio Rex”玩具狗可能是最早的語音識(shí)別器,當(dāng)這只狗的名字被呼喚的時(shí)候,它能夠從底座上彈出來。最早的基于電子計(jì)算機(jī)的語音識(shí)別系統(tǒng)是由AT&T貝爾實(shí)驗(yàn)室開發(fā)的Audrey語音識(shí)別系統(tǒng),它能夠識(shí)別10個(gè)英文數(shù)字。其識(shí)別方法是跟蹤語音中的共振峰。該系統(tǒng)得到了98%的正確率。到1950年代末,倫敦學(xué)院(Colledge of London)的Denes已經(jīng)將語法概率加入語音識(shí)別中。
1960年代,人工神經(jīng)網(wǎng)絡(luò)被引入了語音識(shí)別。這一時(shí)代的兩大突破是線性預(yù)測編碼Linear PredicTIve Coding (LPC), 及動(dòng)態(tài)時(shí)間彎折Dynamic Time Warp技術(shù)。
語音識(shí)別技術(shù)的最重大突破是隱含馬爾科夫模型Hidden Markov Model的應(yīng)用。從Baum提出相關(guān)數(shù)學(xué)推理,經(jīng)過Labiner等人的研究,卡內(nèi)基梅隆大學(xué)的李開復(fù)最終實(shí)現(xiàn)了第一個(gè)基于隱馬爾科夫模型的大詞匯量語音識(shí)別系統(tǒng)Sphinx。此后嚴(yán)格來說語音識(shí)別技術(shù)并沒有脫離HMM框架。
實(shí)驗(yàn)室語音識(shí)別研究的巨大突破產(chǎn)生于20世紀(jì)80年代末:人們終于在實(shí)驗(yàn)室突破了大詞匯量、連續(xù)語音和非特定人這三大障礙,第一次把這三個(gè)特性都集成在一個(gè)系統(tǒng)中,比較典型的是卡耐基梅隆大學(xué)(CarnegieMellonUniversity)的Sphinx系統(tǒng),它是第一個(gè)高性能的非特定人、大詞匯量連續(xù)語音識(shí)別系統(tǒng)。
這一時(shí)期,語音識(shí)別研究進(jìn)一步走向深入,其顯著特征是HMM模型和人工神經(jīng)元網(wǎng)絡(luò)(ANN)在語音識(shí)別中的成功應(yīng)用。HMM模型的廣泛應(yīng)用應(yīng)歸功于AT&TBell實(shí)驗(yàn)室Rabiner等科學(xué)家的努力,他們把原本艱澀的HMM純數(shù)學(xué)模型工程化,從而為更多研究者了解和認(rèn)識(shí),從而使統(tǒng)計(jì)方法成為了語音識(shí)別技術(shù)的主流。
20世紀(jì)90年代前期,許多著名的大公司如IBM、蘋果、AT&T和NTT都對(duì)語音識(shí)別系統(tǒng)的實(shí)用化研究投以巨資。語音識(shí)別技術(shù)有一個(gè)很好的評(píng)估機(jī)制,那就是識(shí)別的準(zhǔn)確率,而這項(xiàng)指標(biāo)在20世紀(jì)90年代中后期實(shí)驗(yàn)室研究中得到了不斷的提高。比較有代表性的系統(tǒng)有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform語音平臺(tái),Microsoft的Whisper,Sun的VoiceTone等。