玩人工智能的你必須知道的語(yǔ)音識別技術(shù)原理
在人工智能快速發(fā)展的今天,語(yǔ)音識別開(kāi)始成為很多設備的標配, 語(yǔ)音識別開(kāi)始被越來(lái)越多的人關(guān)注,國外微軟、蘋(píng)果、谷歌、nuance,國內的科大訊飛、思必馳等廠(chǎng)商都在研發(fā)語(yǔ)音識別新策略新算法,似乎人類(lèi)與語(yǔ)音的自然交互漸行漸近。
本文引用地址:http://dyxdggzs.com/article/201612/342190.htm我們都希望像《鋼鐵俠》中那樣智能先進(jìn)的語(yǔ)音助手,在與機器人進(jìn)行語(yǔ)音交流時(shí),讓它聽(tīng)明白你在說(shuō)什么。語(yǔ)音識別技術(shù)將人類(lèi)這一曾經(jīng)的夢(mèng)想變成了現實(shí)。語(yǔ)音識別就好比“機器的聽(tīng)覺(jué)系統”,該技術(shù)讓機器通過(guò)識別和理解,把語(yǔ)音信號轉變?yōu)橄鄳奈谋净蛎睢?/p>
語(yǔ)音識別是以語(yǔ)音為研究對象,通過(guò)語(yǔ)音信號處理和模式識別讓機器自動(dòng)識別和理解人類(lèi)口述的語(yǔ)言。語(yǔ)音識別技術(shù)就是讓機器通過(guò)識別和理解過(guò)程把語(yǔ)音信號轉變?yōu)橄鄳奈谋净蛎畹母呒夹g(shù)。語(yǔ)音識別是一門(mén)涉及面很廣的交叉學(xué)科,它與聲學(xué)、語(yǔ)音學(xué)、語(yǔ)言學(xué)、信息理論、模式識別理論以及神經(jīng)生物學(xué)等學(xué)科都有非常密切的關(guān)系。語(yǔ)音識別技術(shù)正逐步成為計算機信息處理技術(shù)中的關(guān)鍵技術(shù),語(yǔ)音技術(shù)的應用已經(jīng)成為一個(gè)具有競爭性的新興高技術(shù)產(chǎn)業(yè)。
1、語(yǔ)音識別的基本原理
語(yǔ)音識別系統本質(zhì)上是一種模式識別系統,包括特征提取、模式匹配、參考模式庫等三個(gè)基本單元,它的基本結構如下圖所示:

未知語(yǔ)音經(jīng)過(guò)話(huà)筒變換成電信號后加在識別系統的輸入端,首先經(jīng)過(guò)預處理,再根據人的語(yǔ)音特點(diǎn)建立語(yǔ)音模型,對輸入的語(yǔ)音信號進(jìn)行分析,并抽取所需的特征,在此基礎上建立語(yǔ)音識別所需的模板。而計算機在識別過(guò)程中要根據語(yǔ)音識別的模型,將計算機中存放的語(yǔ)音模板與輸入的語(yǔ)音信號的特征進(jìn)行比較,根據一定的搜索和匹配策略,找出一系列最優(yōu)的與輸入語(yǔ)音匹配的模板。然后根據此模板的定義,通過(guò)查表就可以給出計算機的識別結果。顯然,這種最優(yōu)的結果與特征的選擇、語(yǔ)音模型的好壞、模板是否準確都有直接的關(guān)系。
語(yǔ)音識別系統構建過(guò)程整體上包括兩大部分:訓練和識別。訓練通常是離線(xiàn)完成的,對預先收集好的海量語(yǔ)音、語(yǔ)言數據庫進(jìn)行信號處理和知識挖掘,獲取語(yǔ)音識別系統所需要的“聲學(xué)模型”和“語(yǔ)言模型”;而識別過(guò)程通常是在線(xiàn)完成的,對用戶(hù)實(shí)時(shí)的語(yǔ)音進(jìn)行自動(dòng)識別。識別過(guò)程通常又可以分為“前端”和“后端”兩大模塊:“前端”模塊主要的作用是進(jìn)行端點(diǎn)檢測(去除多余的靜音和非說(shuō)話(huà)聲)、降噪、特征提取等;“后端”模塊的作用是利用訓練好的“聲學(xué)模型”和“語(yǔ)言模型”對用戶(hù)說(shuō)話(huà)的特征向量進(jìn)行統計模式識別(又稱(chēng)“解碼”),得到其包含的文字信息,此外,后端模塊還存在一個(gè)“自適應”的反饋模塊,可以對用戶(hù)的語(yǔ)音進(jìn)行自學(xué)習,從而對“聲學(xué)模型”和“語(yǔ)音模型”進(jìn)行必要的“校正”,進(jìn)一步提高識別的準確率。
語(yǔ)音識別是模式識別的一個(gè)分支,又從屬于信號處理科學(xué)領(lǐng)域,同時(shí)與語(yǔ)音學(xué)、語(yǔ)言學(xué)、數理統計及神經(jīng)生物學(xué)等學(xué)科有非常密切的關(guān)系。語(yǔ)音識別的目的就是讓機器“聽(tīng)懂”人類(lèi)口述的語(yǔ)言,包括了兩方面的含義:其一是逐字逐句聽(tīng)懂非轉化成書(shū)面語(yǔ)言文字;其二是對口述語(yǔ)言中所包含的要求或詢(xún)問(wèn)加以理解,做出正確響應,而不拘泥于所有詞的正確轉換。
自動(dòng)語(yǔ)音識別技術(shù)有三個(gè)基本原理:首先語(yǔ)音信號中的語(yǔ)言信息是按照短時(shí)幅度譜的時(shí)間變化模式來(lái)編碼;其次語(yǔ)音是可以閱讀的,即它的聲學(xué)信號可以在不考慮說(shuō)話(huà)人試圖傳達的信息內容的情況下用數十個(gè)具有區別性的、離散的符號來(lái)表示;第三語(yǔ)音交互是一個(gè)認知過(guò)程,因而不能與語(yǔ)言的語(yǔ)法、語(yǔ)義和語(yǔ)用結構割裂開(kāi)來(lái)。
聲學(xué)模型
語(yǔ)音識別系統的模型通常由聲學(xué)模型和語(yǔ)言模型兩部分組成,分別對應于語(yǔ)音到音節概率的計算和音節到字概率的計算。聲學(xué)建模;語(yǔ)言模型
搜索
連續語(yǔ)音識別中的搜索,就是尋找一個(gè)詞模型序列以描述輸入語(yǔ)音信號,從而得到詞解碼序列。搜索所依據的是對公式中的聲學(xué)模型打分和語(yǔ)言模型打分。在實(shí)際使用中,往往要依據經(jīng)驗給語(yǔ)言模型加上一個(gè)高權重,并設置一個(gè)長(cháng)詞懲罰分數。
系統實(shí)現
語(yǔ)音識別系統選擇識別基元的要求是,有準確的定義,能得到足夠數據進(jìn)行訓練,具有一般性。英語(yǔ)通常采用上下文相關(guān)的音素建模,漢語(yǔ)的協(xié)同發(fā)音不如英語(yǔ)嚴重,可以采用音節建模。系統所需的訓練數據大小與模型復雜度有關(guān)。模型設計得過(guò)于復雜以至于超出了所提供的訓練數據的能力,會(huì )使得性能急劇下降。
聽(tīng)寫(xiě)機:大詞匯量、非特定人、連續語(yǔ)音識別系統通常稱(chēng)為聽(tīng)寫(xiě)機。其架構就是建立在前述聲學(xué)模型和語(yǔ)言模型基礎上的HMM拓撲結構。訓練時(shí)對每個(gè)基元用前向后向算法獲得模型參數,識別時(shí),將基元串接成詞,詞間加上靜音模型并引入語(yǔ)言模型作為詞間轉移概率,形成循環(huán)結構,用Viterbi算法進(jìn)行解碼。針對漢語(yǔ)易于分割的特點(diǎn),先進(jìn)行分割再對每一段進(jìn)行解碼,是用以提高效率的一個(gè)簡(jiǎn)化方法。
對話(huà)系統:用于實(shí)現人機口語(yǔ)對話(huà)的系統稱(chēng)為對話(huà)系統。受目前技術(shù)所限,對話(huà)系統往往是面向一個(gè)狹窄領(lǐng)域、詞匯量有限的系統,其題材有旅游查詢(xún)、訂票、數據庫檢索等等。其前端是一個(gè)語(yǔ)音識別器,識別產(chǎn)生的N-best候選或詞候選網(wǎng)格,由語(yǔ)法分析器進(jìn)行分析獲取語(yǔ)義信息,再由對話(huà)管理器確定應答信息,由語(yǔ)音合成器輸出。由于目前的系統往往詞匯量有限,也可以用提取關(guān)鍵詞的方法來(lái)獲取語(yǔ)義信息。
二:語(yǔ)音識別技術(shù)原理-工作原理解讀
首先,我們知道聲音實(shí)際上是一種波。常見(jiàn)的mp3等格式都是壓縮格式,必須轉成非壓縮的純波形文件來(lái)處理,比如Windows PCM文件,也就是俗稱(chēng)的wav文件。wav文件里存儲的除了一個(gè)文件頭以外,就是聲音波形的一個(gè)個(gè)點(diǎn)了。下圖是一個(gè)波形的示例。

圖中,每幀的長(cháng)度為25毫秒,每?jì)蓭g有25-10=15毫秒的交疊。我們稱(chēng)為以幀長(cháng)25ms、幀移10ms分幀。
分幀后,語(yǔ)音就變成了很多小段。但波形在時(shí)域上幾乎沒(méi)有描述能力,因此必須將波形作變換。常見(jiàn)的一種變換方法是提取MFCC特征,根據人耳的生理特性,把每一幀波形變成一個(gè)多維向量,可以簡(jiǎn)單地理解為這個(gè)向量包含了這幀語(yǔ)音的內容信息。這個(gè)過(guò)程叫做聲學(xué)特征提取。實(shí)際應用中,這一步有很多細節,聲學(xué)特征也不止有MFCC這一種,具體這里不講。
至此,聲音就成了一個(gè)12行(假設聲學(xué)特征是12維)、N列的一個(gè)矩陣,稱(chēng)之為觀(guān)察序列,這里N為總幀數。觀(guān)察序列如下圖所示,圖中,每一幀都用一個(gè)12維的向量表示,色塊的顏色深淺表示向量值的大小。

接下來(lái)就要介紹怎樣把這個(gè)矩陣變成文本了。首先要介紹兩個(gè)概念:
音素:?jiǎn)卧~的發(fā)音由音素構成。對英語(yǔ),一種常用的音素集是卡內基梅隆大學(xué)的一套由39個(gè)音素構成的音素集,參見(jiàn)The CMU Pronouncing DicTIonary?。漢語(yǔ)一般直接用全部聲母和韻母作為音素集,另外漢語(yǔ)識別還分有調無(wú)調,不詳述。
狀態(tài):這里理解成比音素更細致的語(yǔ)音單位就行啦。通常把一個(gè)音素劃分成3個(gè)狀態(tài)。
語(yǔ)音識別是怎么工作的呢?實(shí)際上一點(diǎn)都不神秘,無(wú)非是:
第一步,把幀識別成狀態(tài)(難點(diǎn))。
第二步,把狀態(tài)組合成音素。
第三步,把音素組合成單詞。
如下圖所示:

圖中,每個(gè)小豎條代表一幀,若干幀語(yǔ)音對應一個(gè)狀態(tài),每三個(gè)狀態(tài)組合成一個(gè)音素,若干個(gè)音素組合成一個(gè)單詞。也就是說(shuō),只要知道每幀語(yǔ)音對應哪個(gè)狀態(tài)了,語(yǔ)音識別的結果也就出來(lái)了。
那每幀音素對應哪個(gè)狀態(tài)呢?有個(gè)容易想到的辦法,看某幀對應哪個(gè)狀態(tài)的概率最大,那這幀就屬于哪個(gè)狀態(tài)。比如下面的示意圖,這幀在狀態(tài)S3上的條件概率最大,因此就猜這幀屬于狀態(tài)S3。

那這些用到的概率從哪里讀取呢?有個(gè)叫“聲學(xué)模型”的東西,里面存了一大堆參數,通過(guò)這些參數,就可以知道幀和狀態(tài)對應的概率。獲取這一大堆參數的方法叫做“訓練”,需要使用巨大數量的語(yǔ)音數據,訓練的方法比較繁瑣,這里不講。
但這樣做有一個(gè)問(wèn)題:每一幀都會(huì )得到一個(gè)狀態(tài)號,最后整個(gè)語(yǔ)音就會(huì )得到一堆亂七八糟的狀態(tài)號,相鄰兩幀間的狀態(tài)號基本都不相同。假設語(yǔ)音有1000幀,每幀對應1個(gè)狀態(tài),每3個(gè)狀態(tài)組合成一個(gè)音素,那么大概會(huì )組合成300個(gè)音素,但這段語(yǔ)音其實(shí)根本沒(méi)有這么多音素。如果真這么做,得到的狀態(tài)號可能根本無(wú)法組合成音素。實(shí)際上,相鄰幀的狀態(tài)應該大多數都是相同的才合理,因為每幀很短。
解決這個(gè)問(wèn)題的常用方法就是使用隱馬爾可夫模型(Hidden Markov Model,HMM)。這東西聽(tīng)起來(lái)好像很高深的樣子,實(shí)際上用起來(lái)很簡(jiǎn)單:
第一步,構建一個(gè)狀態(tài)網(wǎng)絡(luò )。
第二步,從狀態(tài)網(wǎng)絡(luò )中尋找與聲音最匹配的路徑。
這樣就把結果限制在預先設定的網(wǎng)絡(luò )中,避免了剛才說(shuō)到的問(wèn)題,當然也帶來(lái)一個(gè)局限,比如你設定的網(wǎng)絡(luò )里只包含了“今天晴天”和“今天下雨”兩個(gè)句子的狀態(tài)路徑,那么不管說(shuō)些什么,識別出的結果必然是這兩個(gè)句子中的一句。
那如果想識別任意文本呢?把這個(gè)網(wǎng)絡(luò )搭得足夠大,包含任意文本的路徑就可以了。但這個(gè)網(wǎng)絡(luò )越大,想要達到比較好的識別準確率就越難。所以要根據實(shí)際任務(wù)的需求,合理選擇網(wǎng)絡(luò )大小和結構。
搭建狀態(tài)網(wǎng)絡(luò ),是由單詞級網(wǎng)絡(luò )展開(kāi)成音素網(wǎng)絡(luò ),再展開(kāi)成狀態(tài)網(wǎng)絡(luò )。語(yǔ)音識別過(guò)程其實(shí)就是在狀態(tài)網(wǎng)絡(luò )中搜索一條最佳路徑,語(yǔ)音對應這條路徑的概率最大,這稱(chēng)之為“解碼”。路徑搜索的算法是一種動(dòng)態(tài)規劃剪枝的算法,稱(chēng)之為Viterbi算法,用于尋找全局最優(yōu)路徑。

這里所說(shuō)的累積概率,由三部分構成,分別是:
觀(guān)察概率:每幀和每個(gè)狀態(tài)對應的概率
轉移概率:每個(gè)狀態(tài)轉移到自身或轉移到下個(gè)狀態(tài)的概率
語(yǔ)言概率:根據語(yǔ)言統計規律得到的概率
其中,前兩種概率從聲學(xué)模型中獲取,最后一種概率從語(yǔ)言模型中獲取。語(yǔ)言模型是使用大量的文本訓練出來(lái)的,可以利用某門(mén)語(yǔ)言本身的統計規律來(lái)幫助提升識別正確率。語(yǔ)言模型很重要,如果不使用語(yǔ)言模型,當狀態(tài)網(wǎng)絡(luò )較大時(shí),識別出的結果基本是一團亂麻。
這樣基本上語(yǔ)音識別過(guò)程就完成了,這就是語(yǔ)音識別技術(shù)的原理。
三:語(yǔ)音識別技術(shù)原理-語(yǔ)音識別系統的工作流程
一般來(lái)說(shuō),一套完整的語(yǔ)音識別系統其工作過(guò)程分為7步:
?、賹φZ(yǔ)音信號進(jìn)行分析和處理,除去冗余信息。
?、谔崛∮绊懻Z(yǔ)音識別的關(guān)鍵信息和表達語(yǔ)言含義的特征信息。
?、劬o扣特征信息,用最小單元識別字詞。
?、馨凑詹煌Z(yǔ)言的各自語(yǔ)法,依照先后次序識別字詞。
?、莅亚昂笠馑籍斪鬏o助識別條件,有利于分析和識別。
?、薨凑照Z(yǔ)義分析,給關(guān)鍵信息劃分段落,取出所識別出的字詞并連接起來(lái),同時(shí)根據語(yǔ)句意思調整句子構成。
?、呓Y合語(yǔ)義,仔細分析上下文的相互聯(lián)系,對當前正在處理的語(yǔ)句進(jìn)行適當修正。
音識別系統基本原理框圖

語(yǔ)音識別系統基本原理結構如圖所示。語(yǔ)音識別原理有三點(diǎn):①對語(yǔ)音信號中的語(yǔ)言信息編碼是按照幅度譜的時(shí)間變化來(lái)進(jìn)行;②由于語(yǔ)音是可以閱讀的,也就是說(shuō)聲學(xué)信號可以在不考慮說(shuō)話(huà)人說(shuō)話(huà)傳達的信息內容的前提下用多個(gè)具有區別性的、離散的符號來(lái)表示;③語(yǔ)音的交互是一個(gè)認知過(guò)程,所以絕對不能與語(yǔ)法、語(yǔ)義和用語(yǔ)規范等方面分裂開(kāi)來(lái)。
預處理,其中就包括對語(yǔ)音信號進(jìn)行采樣、克服混疊濾波、去除部分由個(gè)體發(fā)音的差異和環(huán)境引起的噪聲影響,此外還會(huì )考慮到語(yǔ)音識別基本單元的選取和端點(diǎn)檢測問(wèn)題。反復訓練是在識別之前通過(guò)讓說(shuō)話(huà)人多次重復語(yǔ)音,從原始語(yǔ)音信號樣本中去除冗余信息,保留關(guān)鍵信息,再按照一定規則對數據加以整理,構成模式庫。再者是模式匹配,它是整個(gè)語(yǔ)音識別系統的核心部分,是根據一定規則以及計算輸入特征與庫存模式之間的相似度,進(jìn)而判斷出輸入語(yǔ)音的意思。
前端處理,先對原始語(yǔ)音信號進(jìn)行處理,再進(jìn)行特征提取,消除噪聲和不同說(shuō)話(huà)人的發(fā)音差異帶來(lái)的影響,使處理后的信號能夠更完整地反映語(yǔ)音的本質(zhì)特征提取,消除噪聲和不同說(shuō)話(huà)人的發(fā)音差異帶來(lái)的影響,使處理后的信號能夠更完整地反映語(yǔ)音的本質(zhì)特征。
四:語(yǔ)音識別技術(shù)原理-發(fā)展歷程
早在計算機發(fā)明之前,自動(dòng)語(yǔ)音識別的設想就已經(jīng)被提上了議事日程,早期的聲碼器可被視作語(yǔ)音識別及合成的雛形。而1920年代生產(chǎn)的“Radio Rex”玩具狗可能是最早的語(yǔ)音識別器,當這只狗的名字被呼喚的時(shí)候,它能夠從底座上彈出來(lái)。最早的基于電子計算機的語(yǔ)音識別系統是由AT&T貝爾實(shí)驗室開(kāi)發(fā)的Audrey語(yǔ)音識別系統,它能夠識別10個(gè)英文數字。其識別方法是跟蹤語(yǔ)音中的共振峰。該系統得到了98%的正確率。到1950年代末,倫敦學(xué)院(Colledge of London)的Denes已經(jīng)將語(yǔ)法概率加入語(yǔ)音識別中。
1960年代,人工神經(jīng)網(wǎng)絡(luò )被引入了語(yǔ)音識別。這一時(shí)代的兩大突破是線(xiàn)性預測編碼Linear PredicTIve Coding (LPC), 及動(dòng)態(tài)時(shí)間彎折Dynamic Time Warp技術(shù)。
語(yǔ)音識別技術(shù)的最重大突破是隱含馬爾科夫模型Hidden Markov Model的應用。從Baum提出相關(guān)數學(xué)推理,經(jīng)過(guò)Labiner等人的研究,卡內基梅隆大學(xué)的李開(kāi)復最終實(shí)現了第一個(gè)基于隱馬爾科夫模型的大詞匯量語(yǔ)音識別系統Sphinx。此后嚴格來(lái)說(shuō)語(yǔ)音識別技術(shù)并沒(méi)有脫離HMM框架。
實(shí)驗室語(yǔ)音識別研究的巨大突破產(chǎn)生于20世紀80年代末:人們終于在實(shí)驗室突破了大詞匯量、連續語(yǔ)音和非特定人這三大障礙,第一次把這三個(gè)特性都集成在一個(gè)系統中,比較典型的是卡耐基梅隆大學(xué)(CarnegieMellonUniversity)的Sphinx系統,它是第一個(gè)高性能的非特定人、大詞匯量連續語(yǔ)音識別系統。
這一時(shí)期,語(yǔ)音識別研究進(jìn)一步走向深入,其顯著(zhù)特征是HMM模型和人工神經(jīng)元網(wǎng)絡(luò )(ANN)在語(yǔ)音識別中的成功應用。HMM模型的廣泛應用應歸功于A(yíng)T&TBell實(shí)驗室Rabiner等科學(xué)家的努力,他們把原本艱澀的HMM純數學(xué)模型工程化,從而為更多研究者了解和認識,從而使統計方法成為了語(yǔ)音識別技術(shù)的主流。
20世紀90年代前期,許多著(zhù)名的大公司如IBM、蘋(píng)果、AT&T和NTT都對語(yǔ)音識別系統的實(shí)用化研究投以巨資。語(yǔ)音識別技術(shù)有一個(gè)很好的評估機制,那就是識別的準確率,而這項指標在20世紀90年代中后期實(shí)驗室研究中得到了不斷的提高。比較有代表性的系統有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform語(yǔ)音平臺,Microsoft的Whisper,Sun的VoiceTone等。
評論