php婚慶網(wǎng)站競價賬戶托管哪家好
一、說明
????????語音識別是指計算機通過處理人類語言的音頻信號,將其轉(zhuǎn)換為可理解的文本形式的技術(shù)。也就是說,它可以將人類的口語語音轉(zhuǎn)換為文本,以便計算機能夠進一步處理和理解。它是自然語言處理技術(shù)的一部分,被廣泛應用于語音識別助手,語音交互系統(tǒng),語音搜索等領(lǐng)域。
二、語音識別的意圖和實現(xiàn)
????????語音識別可以被視為根據(jù)聲學、發(fā)音詞典和語言模型找到最佳單詞序列 (W)。
????????在上一篇文章中,我們學習了HMM和GMM的基礎(chǔ)知識?,F(xiàn)在是時候?qū)⑺鼈兎旁谝黄饋順?gòu)建這些模型了。
詞匯
發(fā)音詞典對單詞的電話序列進行建模。通過使用滑動窗口分割音頻剪輯,我們生成一系列音頻幀。對于每一幀,我們提取了 39 個?MFCC 特征。即,我們生成一系列特征向量?X(x?,?x?, ...,?xi,?...),其中?xi?包含 39 個特征。似然?p(X|W) 可以根據(jù)詞典和聲學模型近似。
發(fā)音詞典是用馬爾可夫鏈建模的。
HMM 模型中的自循環(huán)將電話與觀察到的音頻幀對齊。
這為處理發(fā)音的時間變化提供了靈活性。
源
給定一個經(jīng)過訓練的HMM模型,我們對觀察結(jié)果進行解碼以找到內(nèi)部狀態(tài)序列。這可以通過下面的格子可視化。下面的箭頭演示了可能的狀態(tài)轉(zhuǎn)換。給定一系列觀察值X,我們可以使用維特比算法來解碼最佳電話序列(比如下面的紅線)。
從源代碼修改
在本文中,我們不會重復有關(guān)HMM和GMM的背景信息。如果您需要,這是關(guān)于這兩個主題的上一篇文章。它包括維特比算法,用于尋找最佳狀態(tài)序列。
但是,手機不是同質(zhì)的。頻率的幅度從開始到結(jié)束都在變化。為了反映這一點,我們進一步將手機細分為三種狀態(tài):手機的開頭、中間和結(jié)束部分。
從源代碼修改
這是我們從每部手機的一個狀態(tài)更改為三個狀態(tài)的HMM。
來源(“六”字)
????????每個內(nèi)部狀態(tài)的可觀察量將由GMM建模。
????????我們可以通過在弧中寫入輸出分布來簡化 HMM 拓撲的繪制方式。因此,弧上的標簽表示輸出分布(觀測值),而不是將觀測值繪制為節(jié)點(狀態(tài))。以下是單詞“two”的 HMM 拓撲,其中包含 2 部電話,每部電話具有三種狀態(tài)。弧的標簽表示聲學模型 (GMM)。
????????給定電話 W 的觀測值 X 的可能性是根據(jù)所有可能路徑的總和計算得出的。
????????對于每個路徑,概率等于路徑的概率乘以給定內(nèi)部狀態(tài)的觀測值的概率。第二種概率將由 m 分量 GMM 建模。所以所有路徑的總概率相等
????????在實踐中,我們使用對數(shù)似然(log(P(x|w)))來避免下溢問題。這是HMM模型,每個電話使用三種狀態(tài)來識別數(shù)字。
????????為了處理演講中的沉默、噪音和填充的停頓,我們可以將它們建模為 SIL,并將其視為另一部手機。
????????然而,這些靜音聲音更難捕捉。我們可以用 5 個內(nèi)部狀態(tài)而不是 <> 個來建模它。對于某些 ASR,我們還可能使用不同的手機進行不同類型的靜音和填充暫停。
????????我們還可以引入跳過弧,即具有空輸入 (ε) 的弧,以對話語中的跳過聲音進行建模。
三、上下文相關(guān)電話
????????關(guān)節(jié)取決于之前和之后的電話(共關(guān)節(jié))。聲音根據(jù)單詞內(nèi)或單詞之間的周圍上下文而變化。例如,同位素(音素的聲學實現(xiàn))可能是跨詞邊界共發(fā)音的結(jié)果。相鄰電話對語音變化的影響很大。例如,如果我們把手放在嘴前,當我們發(fā)音 /p/ 代表“旋轉(zhuǎn)”和 /p/ 代表“pin”時,我們會感覺到氣流的差異。
????????在構(gòu)建復雜的聲學模型時,我們不應該獨立于其上下文來處理手機。音頻幀的標簽應包括電話及其上下文。如下圖所示,對于音素 /eh/,頻譜圖在不同的上下文下是不同的。
因此,給定下面的音頻幀,我們應該將它們分別標記為 /eh/,上下文 (/w/, /d/)、(/y/, /l/) 和 (/eh/, /n/)。
????????這稱為三音器。
? ? ? ? 從源代碼修改
????????三音 s-iy+l 表示電話 /iy/ 前面是 /s/,后跟 /l/。如果忽略上下文,則前面的所有三個音頻幀都引用 /iy/。但在上下文相關(guān)的方案中,這三個幀將被歸類為三個不同的 CD 電話。但請注意,三音符有很多符號。即使對于這個系列,也使用了幾種不同的符號。
????????以下是分別使用電話和三音器表示“杯子”一詞的示例。手機或三部電話都將由三種內(nèi)部狀態(tài)建模。我們不會增加表示“電話”的狀態(tài)數(shù)量。我們只是擴展標簽,以便我們可以以更高的粒度對它們進行分類。
從源代碼修改
然而,這有一個主要缺點。比如說,我們最初有 50 部手機。HMM 模型將有 50 × 3 個內(nèi)部狀態(tài)(每部手機的開始、中間和結(jié)束狀態(tài))。對于三音器,我們有 503 × 3 個三音器狀態(tài),即每部電話 502 個三音器。狀態(tài)的分解數(shù)變得無法管理。
國家捆綁
幸運的是,三音器的某些組合很難與頻譜圖區(qū)分開來。實際上,可能的三音位數(shù)大于觀察到的三音位數(shù)。
因此,某些州可以共享相同的GMM模型。這稱為狀態(tài)綁定。
源
要找到這樣的聚類,我們可以參考電話的表達方式:停止、鼻音、咝咝聲、元音、側(cè)音等......我們創(chuàng)建了一個決策樹來探索對可以共享相同GMM模型的三音器進行聚類的可能方法。
源
通常,我們使用訓練數(shù)據(jù)構(gòu)建此語音決策樹。讓我們探索構(gòu)建樹的另一種可能性。以下是在不同語境下說 /p/ 的不同方式。
源
對于每部手機,我們創(chuàng)建一個決策樹,其中包含基于左右上下文的決策樹樁。樹的葉子聚集了可以用相同的GMM模型建模的三音器。
源
我們可以應用決策樹技術(shù)來避免過度擬合。例如,我們可以限制葉節(jié)點的數(shù)量和/或樹的深度。我們的訓練目標是最大限度地提高最終GMM模型訓練數(shù)據(jù)的可能性。以下是我們?nèi)绾问褂脿顟B(tài)綁定從手機演變?yōu)槿魴C。對于每部手機,我們現(xiàn)在有更多的子類別(三音器)。我們使用GMM而不是簡單的高斯來建模它們。
源
四、連續(xù)語音識別
????????單字語音識別的概念可以通過HMM模型擴展到連續(xù)語音。我們在HMM中添加弧線以將單詞連接在一起。
源
五、語言模型
????????即使音頻剪輯在語法上可能不完美或跳過了單詞,我們?nèi)匀患僭O(shè)我們的音頻剪輯在語法和語義上是合理的。因此,如果我們在解碼中包含語言模型,我們可以提高 ASR 的準確性。
雙格拉姆模型
語言模型計算單詞序列的可能性。
在雙語(又名 2 克)語言模型中,當前單詞僅取決于最后一個單詞。
例如
讓我們看一下馬爾可夫鏈,如果我們將雙字母語言模型與發(fā)音詞典集成在一起。下面的三個詞典分別用于單詞一、二和零。然后我們用雙元語言模型將它們連接在一起,轉(zhuǎn)移概率像p(one|two)。
源
計算?P(“零”|”二“),我們抓取語料庫(例如來自包含 23M 字的《華爾街日報》語料庫)并計算
如果語言模型依賴于最后 2 個單詞,則稱為三元組。
從源代碼修改
n-gram 取決于最后的 n-1 個單詞。這是雙元組和三元組的狀態(tài)圖。對于三元組模型,每個節(jié)點表示具有最后兩個單詞的狀態(tài),而不僅僅是一個單詞。
這是使用三元組語言模型的可視化。
六、平滑
即使23M個單詞聽起來也很多,但語料庫仍然可能包含合法的單詞組合。對于三元組或其他 n-gram,這種情況變得更糟。通常,三元組或 n 元語法模型的數(shù)據(jù)很少。如果我們將《華爾街日報》的尸體分成兩半,一組數(shù)據(jù)中36.6%的三卦(4.32M / 11.8M)將不會在另一半中看到。這很糟糕,因為我們訓練模型說這些合法序列的概率為零。
加一平滑
讓我們先從 unigram 看問題。我們問題的一個解決方案是在所有計數(shù)中添加一個偏移量 k(比如 1)以調(diào)整?P(W) 的概率,這樣即使我們沒有在語料庫中看到它們,P(W) 也會都是正數(shù)。以下是平滑計數(shù)和人為噴射計數(shù)后的平滑概率。
從源代碼修改
但是很難確定k的正確值。但是讓我們考慮一下平滑的原理是什么。如果我們沒有足夠的數(shù)據(jù)來做出估計,我們會回退到與原始統(tǒng)計數(shù)據(jù)密切相關(guān)的其他統(tǒng)計數(shù)據(jù),并顯示出更準確。然后,我們根據(jù)這些統(tǒng)計數(shù)據(jù)插值我們的最終答案。例如,如果在語料庫中沒有觀察到雙元詞,我們可以從出現(xiàn)一次的雙元詞中借用統(tǒng)計數(shù)據(jù)。
良好的圖靈平滑
讓我們回到 n-gram 模型進行討論。平滑的一般思想是重新插值訓練數(shù)據(jù)中看到的計數(shù),以伴隨測試數(shù)據(jù)中看不見的單詞組合。在這個過程中,我們重新洗牌計數(shù)并壓縮看到的單詞的概率,以適應看不見的n元語法。
一種可能性是將平滑計數(shù)?r* 和概率?p?計算為:
從源代碼修改
直觀地說,我們用具有“r?+ 1”計數(shù)的上層n元語法來平滑概率質(zhì)量
對于看不見的 n 元語法,我們通過使用具有單次出現(xiàn)的 n 元語法數(shù) (n?) 來計算其概率。
但在某些情況下,上層 (r+1) 的 n 元語法為零。我們將首先應用插值?S?來平滑計數(shù)。
目前,我們不需要進一步詳細說明。我們將繼續(xù)介紹另一種更有趣的平滑方法。但是,如果您對此方法感興趣,可以閱讀本文以獲取更多信息。
卡茨平滑
Katz 平滑是在數(shù)據(jù)稀疏時平滑統(tǒng)計信息的常用方法之一。對于雙元模型,平滑計數(shù)和概率的計算公式為:
此方法基于折扣概念,我們降低某些類別的計數(shù),以將計數(shù)重新分配給訓練數(shù)據(jù)集中計數(shù)為零的單詞。
如果計數(shù)高于閾值(例如 5),則折扣?d?等于 1,即我們將使用實際計數(shù)。他們有足夠的數(shù)據(jù),因此相應的概率是可靠的。對于計數(shù)較低的單詞組合,我們希望折扣?d?與好圖靈平滑成正比。
此外,我們希望從折扣中保存的計數(shù)等于?n?,Good-Tuuring 將其分配給零計數(shù)。
為了滿足這兩個限制,折扣變?yōu)?/p>
在良圖靈平滑中,每個具有零計數(shù)的 n 元語法都具有相同的平滑計數(shù)。對于 Katz 平滑,我們會做得更好。α的選擇是這樣
因此,在重新洗牌計數(shù)后,雙字母中第一個單詞給出的總體統(tǒng)計數(shù)據(jù)將與統(tǒng)計數(shù)據(jù)相匹配。我們將平滑計數(shù)計算為:
因此,即使訓練數(shù)據(jù)集中不存在單詞對,如果第二個單詞?wi?很受歡迎,我們將平滑計數(shù)調(diào)整得更高。
α等于
直觀地說,如果有許多低計數(shù)的單詞對以相同的第一個單詞開頭,則平滑計數(shù)會增加。
在這種情況下,我們預計(或預測)具有相同第一個單詞的許多其他對將出現(xiàn)在測試中,而不是訓練中。實證結(jié)果表明,Katz 平滑能夠很好地平滑稀疏數(shù)據(jù)概率。同樣,如果您想更好地了解平滑,請參閱本文。
退避模型
Katz 平滑是一個退避模型,當我們找不到任何 n 元語法的出現(xiàn)時,我們回退,即如果我們找不到 n-gram 的任何出現(xiàn),我們用 n-1 克估計它。但是在 n-1 克中也沒有出現(xiàn),我們不斷回落,直到找到非零出現(xiàn)計數(shù)。退避概率的計算公式為:
其中 α 和?P?定義為:
每當我們回退到較低跨度的語言模型時,我們都需要用α來縮放概率,以確保所有概率的總和為 1。
讓我們舉一個例子來闡明這個概念。假設(shè)我們從未在我們的訓練語料庫中找到 5 克的“第 10 個符號是 obelus”。因此,我們必須回退到 4 克模型來計算概率。
P(Obelus | 符號為 an) 通過計算以下相應的出現(xiàn)次數(shù)來計算:
最后,我們計算α來重新規(guī)范概率。
這是最終的平滑計數(shù)和概率。
七、接下去的內(nèi)容
????????現(xiàn)在,我們知道如何對 ASR 進行建模。但是,我們?nèi)绾问褂眠@些模型來解碼話語呢?