语音识别

語音辨識（speech recognition）技術，也被稱為自動語音辨識（英語：Automatic Speech Recognition, ASR）、電腦語音識別（英語：Computer Speech Recognition）或是語音轉文字識別（英語：Speech To Text, STT），其目標是以電腦自動將人類的語音內容轉換為相應的文字。與說話人辨識及說話人確認不同，後者嘗試辨識或確認發出語音的說話人而非其中所包含的詞彙內容。
語音辨識技術的應用包括語音撥號、語音導航、室內裝置控制、語音文件檢索、簡單的聽寫資料錄入等。語音辨識技術與其他自然語言處理技術如機器翻譯及語音合成技術相結合，可以構建出更加複雜的應用，例如語音到語音的翻譯。
語音辨識技術所涉及的領域包括：訊號處理、圖型識別、概率論和資訊理論、發聲機理和聽覺機理、人工智慧等等。

歷史

早在電腦發明之前，自動語音辨識的設想就已經被提上了議事日程，早期的聲碼器可被視作語音辨識及合成的雛形。而1920年代生產的"Radio Rex"玩具狗是最早的語音辨識器，當這隻狗的名字被呼喚的時候，它能夠從底座上彈出來。最早的基於電腦的語音辨識系統是由AT&T貝爾實驗室開發的Audrey語音辨識系統，它能夠辨識10個英文數位。其辨識方法是跟蹤語音中的共振峰。該系統得到了98%的正確率。。到1950年代末，倫敦學院(Colledge of London)的Denes已經將語法概率加入語音辨識中。
1960年代，人工神經網路被引入了語音辨識。這一時代的兩大突破是線性預測編碼Linear Predictive Coding (LPC)， 及動態時間規整Dynamic Time Warp技術。
語音辨識技術的最重大突破是隱含馬爾科夫模型Hidden Markov Model的應用。從Baum提出相關數學推理，經過Rabiner等人的研究，卡內基梅隆大學的李開復最終實現了第一個基於隱馬爾科夫模型的大詞彙量語音辨識系統Sphinx。此後嚴格來說語音辨識技術並沒有脫離HMM框架。
儘管多年來研究人員一直嘗試將「聽寫機」推廣，語音辨識技術在目前還無法支援無限領域，無限說話人的聽寫機應用。

聲學特徵

聲學特徵的提取與選擇是語音辨識的一個重要環節。聲學特徵的提取既是一個資訊大振幅壓縮的過程，也是一個訊號解卷過程，目的是使圖形劃分器能更好地劃分。
由於語音訊號的時變特性，特徵提取必須在一小段語音訊號上進行，也即進行短分時析。這一段被認為是平穩的分析區間稱之為影格，影格與影格之間的偏移通常取影格長的1/2或1/3。通常要對訊號進行預加重以提升高頻，對訊號加窗以避免短時語音段邊緣的影響。

聲學模型

語音辨識系統的模型通常由聲學模型和語言模型兩部封包成，分別對應於語音到音節概率的計算和音節到字概率的計算。本節和下一節分別介紹聲學模型和語言模型方面的技術。
HMM聲學建模：馬爾可夫模型的概念是一個離散時域有限狀態自動機，隱馬爾可夫模型HMM是指這一馬爾可夫模型的內部狀態外界不可見，外界只能看到各個時刻的輸出值。對語音辨識系統，輸出值通常就是從各個影格計算而得的聲學特徵。用HMM刻畫語音訊號需作出兩個假設，一是內部狀態的轉移只與上一狀態有關，另一是輸出值只與目前狀態（或目前的狀態轉移）有關，這兩個假設大大降低了模型的複雜度。HMM的評估、解碼和訓練相應的演算法是前向演算法、Viterbi演算法和前向後向演算法。 
語音辨識中使用HMM通常是用從左向右單向、帶自環、帶跨越的拓撲結構來對辨識基元建模，一個音素就是一個三至五狀態的HMM，一個詞就是構成詞的多個音素的HMM序列起來構成的HMM，而連續語音辨識的整個模型就是詞和靜音組合起來的HMM。 
上下文相關建模：協同發音，指的是一個音受前後相鄰音的影響而發生變化，從發聲機理上看就是人的發聲器官在一個音轉向另一個音時其特性只能漸變，從而使得後一個音的頻譜與其他條件下的頻譜產生差異。上下文相關建模方法在建模時考慮了這一影響，從而使模型能更準確地描述語音，只考慮前一音的影響的稱為Bi-Phone，考慮前一音和後一音的影響的稱為Tri-Phone。
英語的上下文相關建模通常以音素為基元，由於有些音素對其後音素的影響是相似的，因而可以通過音素解碼狀態的群集進行模型參數的共用。群集的結果稱為senone。決策樹用來實現高效的triphone對senone的對應，通過回答一系列前後音所屬類別（元/輔音、清/濁音等等）的問題，最終確定其HMM狀態應使用哪個senone。分類回歸樹CART模型用以進行詞到音素的發音標註。

語言模型

語言模型主要分為規則模型和統計模型兩種。統計語言模型是用概率統計的方法來揭示語言單位內在的統計規律，其中n元語法簡單有效，被廣泛使用。
n元語法：該模型基於這樣一種假設，第n個詞的出現只與前面N-1個詞相關，而與其它任何詞都不相關，整句的概率就是各個詞出現概率的乘積。這些概率可以通過直接從語料中統計N個詞同時出現的次數得到。由於計算量太大，N一般取值不會很大，常用的是二元語法（Bi-Gram）和三元語法（Tri-Gram）。
語言模型的效能通常用交叉熵和複雜度（Perplexity）來衡量。交叉熵的意義是用該模型對文字辨識的難度，或者從壓縮的角度來看，每個詞平均要用幾個位來編碼。複雜度的意義是用該模型表示這一文字平均的分支數，其倒數可視為每個詞的平均概率。平滑是指對沒觀察到的N元組合賦予一個概率值，以保證詞序列總能通過語言模型得到一個概率值。通常使用的平滑技術有圖靈估計、刪除插值平滑、Katz平滑和Kneser-Ney平滑。

搜尋

連續語音辨識中的搜尋，就是尋找一個詞模型序列以描述輸入語音訊號，從而得到詞解碼序列。搜尋所依據的是對公式中的聲學模型打分和語言模型打分。在實際使用中，往往要依據經驗給語言模型加上一個高權重，並設定一個長詞懲罰分數。
Viterbi：基於動態規劃的Viterbi演算法在每個時間點上的各個狀態，計算解碼狀態序列對觀察序列的後驗概率，保留概率最大的路徑，並在每個節點記錄下相應的狀態資訊以便最後反向取得詞解碼序列。Viterbi演算法在不喪失最佳解的條件下，同時解決了連續語音辨識中HMM模型狀態序列與聲學觀察序列的非線性時間對準、詞邊界檢測和詞的辨識，從而使這一演算法成為語音辨識搜尋的基本策略。
由於語音辨識對目前時間點之後的情況無法預測，基於目標函式的啟發式剪枝難以應用。由於Viterbi演算法的時齊特性，同一時刻的各條路徑對應於同樣的觀察序列，因而具有可比性，束Beam搜尋在每一時刻只保留概率最大的前若干條路徑，大振幅的剪枝提高了搜尋的效率。這一時齊Viterbi-Beam演算法是目前語音辨識搜尋中最有效的演算法。 N-best搜尋和多遍搜尋：為在搜尋中利用各種知識源，通常要進行多遍搜尋，第一遍使用代價低的知識源，產生一個候選列表或詞候選網格，在此基礎上進行使用代價高的知識源的第二遍搜尋得到最佳路徑。此前介紹的知識源有聲學模型、語言模型和音標詞典，這些可以用於第一遍搜尋。為實現更進階的語音辨識或口語理解，往往要利用一些代價更高的知識源，如4階或5階的N-Gram、4階或更高的上下文相關模型、詞間相關模型、分段模型或語法分析，進行重新打分。最新的即時大詞表連續語音辨識系統許多都使用這種多遍搜尋策略。
N-best搜尋產生一個候選列表，在每個節點要保留N條最好的路徑，會使計算複雜度增加到N倍。簡化的做法是只保留每個節點的若干詞候選，但可能遺失次優候選。一個折衷辦法是只考慮兩個詞長的路徑，保留k條。詞候選網格以一種更緊湊的方式給出多候選，對N-best搜尋演算法作相應改動後可以得到生成候選網格的演算法。
前向後向搜尋演算法是一個應用多遍搜尋的例子。當應用簡單知識源進行了前向的Viterbi搜尋後，搜尋過程中得到的前向概率恰恰可以用在後向搜尋的目標函式的計算中，因而可以使用啟發式的A演算法進行後向搜尋，經濟地搜尋出N條候選。

系統實現

語音辨識系統選擇辨識基元的要求是，有準確的定義，能得到足夠資料進行訓練，具有一般性。英語通常採用上下文相關的音素建模，漢語的協同發音不如英語嚴重，可以採用音節建模。系統所需的訓練資料大小與模型複雜度有關。模型設計得過於複雜以至於超出了所提供的訓練資料的能力，會使得效能急劇下降。
聽寫機：大詞彙量、非特定人、連續語音辨識系統通常稱為聽寫機。其架構就是建立在前述聲學模型和語言模型基礎上的HMM拓撲結構。訓練時對每個基元用前向後向演算法獲得模型參數，辨識時，將基元串接成詞，詞間加上靜音模型並引入語言模型作為詞間轉移概率，形成迴圈結構，用Viterbi演算法進行解碼。針對漢語易於分割的特點，先進行分割再對每一段進行解碼，是用以提高效率的一個簡化方法。
對話系統：用於實現人機口語對話的系統稱為對話系統。受目前技術所限，對話系統往往是面向一個狹窄領域、詞彙量有限的系統，其題材有旅遊查詢、訂票、資料庫檢索等等。其前端是一個語音辨識器，辨識產生的N-best候選或詞候選網格，由語法分析器進行分析取得語意資訊，再由對話管理器確定應答資訊，由語音合成器輸出。由於目前的系統往往詞彙量有限，也可以用提取關鍵詞的方法來取得語意資訊。

自適應與強健性

語音辨識系統的效能受許多因素的影響，包括不同的說話人、說話方式、環境噪音、傳輸通道等等。提高系統強健性，是要提高系統克服這些因素影響的能力，使系統在不同的應用環境、條件下效能穩定；自適應的目的，是根據不同的影響來源，自動地、有針對性地對系統進行調整，在使用中逐步提高效能（其中以李開復博士的不特定語音辨識系統為例）。以下對影響系統效能的不同因素分別介紹解決辦法。
解決辦法按針對語音特徵的方法（以下稱特徵方法）和模型調整的方法（以下稱模型方法）分為兩類。前者需要尋找更好的、高強健性的特徵參數，或是在現有的特徵參數基礎上，加入一些特定的處理方法。後者是利用少量的自適應語料來修正或變換原有的說話人無關（SI）模型，從而使其成為說話人自適應（SA）模型。
說話人自適應的特徵方法有說話人規一化和說話人子空間法，模型方法有貝葉斯方法、變換法和模型合併法。
語音系統中的雜訊，包括環境雜訊和錄音過程加入的電子雜訊。提高系統魯棒性的特徵方法包括語音增強和尋找對雜訊干擾不敏感的特徵，模型方法有並列模型組合PMC方法和在訓練中人為加入雜訊。通道畸變包括錄音時話筒的距離、使用不同靈敏度的話筒、不同增益的前置放大和不同的濾波器設計等等。特徵方法有從倒譜向量中減去其長時平均值和RASTA濾波，模型方法有倒譜平移。