AI產品經理一文讀懂語音識別

什么是語音識別


語音是人類最樸素的交互方式。不止是人與人之間,動物直接也都是語音交流,或者說語音交流是文字交流的前奏,文字是對語音的記錄。現在的人機交互方式還是通過鼠標鍵盤,用機器語言來交流,不管是C還是C++,抑或是Java、php,或者是現在機器學習里用的最廣的pathyon語言,都是人機交互的的介質。我們知道1642年法國哲學-數學家Blaise?Pascal?發明了世界上第一臺手搖式機械式計算機,利用齒輪傳動原理制成,能做加減法。1822年英國科學家巴貝奇(C.?Babbage)制造出了第一臺差分機,它可以處理3個不同的5位數,計算精度達到6位小數。直到1886年:美國人Dorr?E.?Felt?(1862-1930),?制造了第一臺用按鍵操作的計算器。

1969年Ken Thompson當時在實驗室無聊時,為了讓一臺空閑的電腦上能夠運行 "星際旅行(Space Travel)" 游行,在 8 月份左右趁著其妻子探親的時間,用了 1 個月的時間,使用匯編寫出了 Unix 操作系統的原型。1973年4月,第一個可操作的Alto電腦在Xerox PARC完成。Alto是第一個把計算機所有元素結合到一起的圖形界面操作系統。它使用3鍵鼠標、位運算顯示器、圖形窗口、以太網絡連接。1981年7月,Xerox推出Star系統,它是Alto的商用版本。特點:雙擊圖標技術、多窗口、對話框概念、1024*768的分辨率。

1983年,微軟宣布它為IBM PC設計的Windows程序,不過這個系統到1985年才發布。特點:多窗口、可改變大小窗口。1984年9月,Digital Research針對8086和DOS計算機推出GEM icon/desktop用戶界面系統,這個系統稍后演變為AtariST。1985年8月,微軟最終發布第一個Windows版本。1987年,微軟發布第二個Windows版本,V2.03。1990年5月,微軟發布Windows 3.0。1992年3月,微軟推出Windows 3.1,1995年8月24日,微軟發布Windows 95。1998年7月25日,微軟發布Windows 98。2000年2月17日,微軟發布Windows 2000,2001年10月25日,微軟發布Windows XP,直至2015年7月29日Windows 10正式發布,2018年5月15日羅永浩在鳥巢發布要改變世界的革命性產品:TNT工作站。總結發現計算機演化過程是趨人性化進化的。所以說未來應該是越來越多的東西可以語音操作。



圖2-18計算機交互演化方向

語音識別技術即AutomaticSpeechRecognition(簡稱ASR),語音識別就是讓機器能夠“聽懂”人類的語言,理解語言中的內在含義,并能做出正確的回答貨操作就成為了人們追求的目標。我們都希望像科幻電影中那些智能先進的機器人助手一樣,在與人進行語音交流時,讓它聽明白你在說什么。語音識別技術將人類這一曾經的夢想變成了現實。語音識別就好比“機器的聽覺系統”,該技術讓機器通過識別和理解,把語音信號轉變為相應的文本或命令。


語音識別原理及流程

語音識別,就是將一段語音信號轉換成相對應的文本信息,處理過程基本上分為三步,第一步對聲波信號進行處理,得到語音特征,第二步是通過語音特征識別出音節;第三步根據音節查詢字典合成完整的語句。搭建一套語音識別系統主要包含特征提取、聲學模型,語言模型以及字典與解碼四大部分,對所采集到的聲音信號進行濾波、分幀等音頻數據預處理工作,將需要分析的音頻信號從原始信號中合適地提取出來;特征提取工作將聲音信號從時域轉換到頻域,為聲學模型提供合適的特征向量;聲學模型中再根據聲學特性計算每一個特征向量在聲學特征上的得分;而語言模型則根據語言學相關的理論,計算該聲音信號對應可能詞組序列的概率;最后根據已有的字典,對詞組序列進行解碼,得到最后可能的文本表示。


圖2-19語音識別流程圖

預處理:作為語音識別的前提與基礎,語音信號的預處理過程至關重要。在最終進行模板匹配的時候,是將輸入語音信號的特征參數同模板庫中的特征參數進行對比,因此,只有在預處理階段得到能夠表征語音信號本質特征的特征參數,才能夠將這些特征參數進行匹配進行識別率高的語音識別。


特征提取:完成信號的預處理之后,隨后進行的就是整個過程中極為關鍵的特征提取的操作。將原始波形進行識別并不能取得很好的識別效果,頻域變換后提取的特征參數用于識別。

聲學模型:聲學模型是語音識別系統中非常重要的一個組件,對不同基本單元的區分能力直接關系到識別結果的好壞。語音識別本質上一個模式識別的過程,而模式識別的核心是分類器和分類決策的問題。

字典:字或者詞與音素的對應,簡單來說,中文就是拼音和漢字的對應,英文就是音標與單詞的對應;

語言模型:語言模型主要是刻畫人類語言表達的方式習慣,著重描述了詞與詞在排列結構上的內在聯系。在語音識別解碼的過程中,在詞內轉移參考發聲詞典、詞間轉移參考語言模型,好的語言模型不僅能夠提高解碼效率,還能在一定程度上提高識別率。語言模型分為規則模型和統計模型兩類,統計語言模型用概率統計的方法來刻畫語言單位內在的統計規律,其設計簡單實用而且取得了很好的效果,已經被廣泛用于語音識別、機器翻譯、情感識別等領域。

解碼:就是通過聲學模型,字典,語言模型對提取特征后的音頻數據進行文字輸出;

好的語音識別系統還會結合語義,仔細分析上下文的相互聯系,對當前正在處理的語句進行適當修正。使得語句更為通順。


熟悉語音識別需要哪些知識儲備


語音識別的發展史


1960年代,語音識別領域引入了人工神經網絡。蘇聯的研究者Vintsyuk提出了用Dynamic Programming(動態規劃算法)實現Dynamic Time Warp(動態時間規整),該技術在小規模詞語環境下取得了很大的成功,一度成為自動語音識別技術中的主流。上世紀70年代,卡內基梅隆大學的李開復將隱馬爾可夫模型在語音識別中進行了應用,實現了第一個基于HMM的大詞匯量的語音識別系統Sphinx,對此后的語音識別技術產生了持續的影響。到了80年代,語音識別的研究重心從孤立詞的識別轉向連續詞匯,主要是在孤立詞的基礎上,通過單個詞進行模式匹配實現。并且,語音識別技術的重心從模式匹配的方案逐漸轉移到了統計模型的方法上來,尤其是基于隱馬爾可夫模型的方案得到了長足的發展。在2010年之前,基于隱馬爾可夫模型的高斯混合模型(GMM-HMM模型)通常代表著最先進的語音識別技術,這類的模型通常采用的特征提取算法是梅爾頻率倒譜系數(即MFCC)算法,常用的還有fBank等特征提取算法。而人們也開展了很多研究工作來模仿人類聽覺過程,后來通過引入DNN自動學習特征表示,直接取代GMM。深度學習還可以應用于給傳統的HMM模型提供強大的具有判別性的特征。DNN和HMM結合的語音識別系統,大大降低了識別錯誤率。2010年以來,隨著大數據和深度學習的發展,CNN、RNN、LSTM和GRU等網絡結構也應用到語音識別中,使得語音識別技術取得了又一次巨大的突破。連接時序分類(Connectionist Temporal Classification, CTC)方法,端到端(End-to-End)結構模型,和DFCNN、Deep Speech、WaveNet、DFSMN等模型的出現,將語音識別的準確率一次又一次地推向巔峰。大多數的語音識別系統,目前仍然使用基于概率統計的N元語言模型,和相關變體模型。近幾年來,殘差網絡(ResNet)、注意力機制(Attention mechanism)和RNN Transducer的出現,又將語音識別技術帶領到發展的新階段。當前,國內外幾種主流的語音識別系統的準確率均超過了90%,有的甚至超過了95%。其中,85%準確率是評價一個語音識別系統是否可實際使用的分水嶺。

2006年 Hinton]提出使用受限波爾茲曼機(restricted Boltzmann machine,RBM)對神經網絡的節點做初始化,即深度置信網絡(deep belief network,DBN)。DBN解決了深度神經網絡訓練過程中容易陷入局部最優的問題,自此深度學習的大潮正式拉開。

2009年,Hinton 和他的學生Mohamed D將 DBN 應用在語音識別聲學建模中,并且在TIMIT這樣的小詞匯量連續語音識別數據庫上獲得成功。

2011年 DNN 在大詞匯量連續語音識別上獲得成功,語音識別效果取得了近10年來最大的突破。從此,基于深度神經網絡的建模方式正式取代GMM-HMM,成為主流的語音識別建模方式。



隱馬爾可夫模型


隱馬爾可夫模型(Hidden Markov model, HMM)是一種結構最簡單的動態貝葉斯網的生成模型,它也是一種著名的有向圖模型。它是典型的自然語言中處理標注問題的統計機器學模型,隱馬爾科夫模型是關于時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態隨機序列,再由各個狀態生成一個觀測而產生觀測隨機序列的過程。

舉個例子,隨機丟骰子,每個點的概率應該是一樣的,但是如果出老千,就會出現非正常概率的點數。隱馬爾科夫模型就是用來觀察這個狀態并統計找出哪幾個骰子是出老千投出來的。系統的隱性狀態指的就是一些外界不便觀察(或觀察不到)的狀態, 比如在當前的例子里面, 系統的狀態指的是投骰子的狀態,即

{正常骰子, 出老千骰子1, 出老千骰子2,...}

隱性狀態的表現也就是,可以觀察到的,由隱性狀態產生的外在表現特點。這里就是說, 骰子擲出的點數.

{1,2,3,4,5,6}

HMM模型將會描述,系統隱性狀態的轉移概率。也就是出老千切換骰子的概率。

這個模型描述了隱性狀態的轉換的概率,同時也描述了每個狀態外在表現的概率的分布。總之,HMM模型就能夠描述扔骰子出老千的頻率(骰子更換的概率),和出老千用的骰子的概率分布。

語音識別問題就是將一段語音信號轉換為文字序列的過程.在個問題里面

隱性狀態就是:語音信號對應的文字序列

而顯性的狀態就是:語音信號.

HMM模型的學習(Learning): 語音識別的模型學習和上文中通過觀察骰子序列建立起一個最有可能的模型不同. 語音識別的HMM模型學習有兩個步驟:

1.統計文字的發音概率,建立隱性表現概率矩陣B

2.統計字詞之間的轉換概率(這個步驟并不需要考慮到語音,可以直接統計字詞之間的轉移概率即可)語音模型的估計(Evaluation):比較得出最有可能出現的文字序列。

CNN

通常情況下,語音識別都是基于時頻分析后的語音譜完成的,而其中語音時頻譜是具有結構特點的。要想提高語音識別率,就是需要克服語音信號所面臨各種各樣的多樣性,包括說話人的多樣性(說話人自身、以及說話人間),環境的多樣性等。一個卷積神經網絡提供在時間和空間上的平移不變性卷積,將卷積神經網絡的思想應用到語音識別的聲學建模中,則可以利用卷積的不變性來克服語音信號本身的多樣性。從這個角度來看,則可以認為是將整個語音信號分析得到的時頻譜當作一張圖像一樣來處理,采用圖像中廣泛應用的深層卷積網絡對其進行識別。

從實用性上考慮,CNN也比較容易實現大規模并行化運算。雖然在CNN卷積運算中涉及到很多小矩陣操作,運算很慢。不過對CNN的加速運算相對比較成熟,如Chellapilla等人提出一種技術可以把所有這些小矩陣轉換成一個大矩陣的乘積。一些通用框架如Tensorflow,caffe等也提供CNN的并行化加速,為CNN在語音識別中的嘗試提供了可能。

據百度公開資料顯示他們已經將Deep CNN應用于語音識別研究,使用了 VGGNet ,以及包含Residual 連接的深層 CNN等結構,并將 LSTM 和 CTC 的端對端語音識別技術相結合,使得識別錯誤率相對下降了 10% (原錯誤率的90%)以上。


語音識別能做什么?

1、語音喚醒、識別、輸入和交互

代表產品:智能音箱,語音導航,TNT。例如最早的電視是用數字加上下左右按鍵控制僅有的十幾個臺,而現在的智能電視后臺對接海量資源,通過智能電視助手可以進行方便的語音交互,節省時間。

2、溝通交流

代表產品:微信語音輸入,子彈等社交產品

3、翻譯

代表產品:在線翻譯,實時翻譯,科大訊飛翻譯機。一般來說,會議場景的同傳準確率為80%左右,而智能會議轉寫準確率則能達到90%以上,之后,其在醫療和司法系統進行了應用。另外,科大訊飛還推出了便攜翻譯機,易于隨身攜帶,方便遠程實時交流。

4、智能家居

代表產品:智能電視、語音遙控器、語音燈等


總結

在子不語的《下一代交互革命是語音:Voice In Voice Out》一文中,描述了這樣的場景:你可以和她交談,她可以幫你控制關于房子的一切,燈光、溫度、微波爐、冰箱……Echo 已經能做到什么了呢?播放音樂、創建提醒、播報新聞自然不在話下,Echo 還能根據你在亞馬遜上的購物記錄,智能地幫你下單。甚至,借助于前面提到的 Skills,已經有人用 Echo 控制了家中的幾乎所有電器:燈光、溫控、電視機、Apple TV、安保監控、熱水壺、車庫……當然,這里就涉及到智能家居組網、車聯網等。或許聲控交互已經離我們不遠了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容