自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nervana技術(shù)深度解讀:使用Neon的端到端語音識別是如何實現(xiàn)的

人工智能 語音識別
語音是一種固有的即時信號。語音中所承載的信息元素在多個時間尺度上演變。在空氣壓強的影響下,同一個聲源的頻率只會發(fā)生幾百上千赫茲的變化,所以我們可以利用聲音去判斷一個聲源的位置,并把它與周圍嘈雜的環(huán)境區(qū)分開來以獲得傳遞的信息。

語音是一種固有的即時信號。語音中所承載的信息元素在多個時間尺度上演變。在空氣壓強的影響下,同一個聲源的頻率只會發(fā)生幾百上千赫茲的變化,所以我們可以利用聲音去判斷一個聲源的位置,并把它與周圍嘈雜的環(huán)境區(qū)分開來以獲得傳遞的信息。語音的功率譜中的緩慢變化的部分就是音素(phoneme)的生成序列,其中音素是構(gòu)成我們所說的詞的最小單位。除此之外,其中由單詞組成的序列的變化更緩慢,這些詞就組成了短語和敘事的結(jié)構(gòu)。然而,這些元素在時間尺度上沒有嚴(yán)格的區(qū)分界限。相反,各種尺度的元素都混合在了一起,所以時間上下文是十分重要的,其中較為稀少的停頓就可以作為元素之間區(qū)分的界限。自動語音識別(ASR)系統(tǒng)就必須弄明白這種噪聲多尺度數(shù)據(jù)流,將其轉(zhuǎn)換為準(zhǔn)確的單詞序列。

在撰寫本文時,當(dāng)下最流行和成功的語音識別引擎采用了一種混合系統(tǒng)來構(gòu)建。即同時將深度神經(jīng)網(wǎng)絡(luò)(DNN)與隱藏馬爾科夫模型(HMMs),上下文相關(guān)電話模型(context-dependent phone models),n-gram 語言模型(n-gram language models),和一種維特比搜索算法(Viterbi search algorithms)的復(fù)雜變體進行混合使用。這個模型相當(dāng)?shù)膹?fù)雜,需要一套精致的訓(xùn)練方法,以及相當(dāng)多的專業(yè)知識來幫助搭建模型。如果說深度學(xué)習(xí)的成功能教會我們什么東西,那就是我們可以經(jīng)常用一種通用的神經(jīng)網(wǎng)絡(luò)來替代復(fù)雜的,多維度的機器學(xué)習(xí)方法,這些神經(jīng)網(wǎng)絡(luò)經(jīng)過訓(xùn)練以后可以用來優(yōu)化可微分的代價函數(shù)(cost function)。這種方法(我們暫且把這種方法稱為「純正」的 DNN 方法),已經(jīng)在語音識別上取得了巨大的成功?,F(xiàn)在,一旦我們有了相當(dāng)多的訓(xùn)練數(shù)據(jù)和足夠的計算資源,我們就可以更加輕松地構(gòu)建一個高水準(zhǔn)的大詞匯量連續(xù)語音識別(Large Vocabulary Continuous Speech Recognition (LVCSR))系統(tǒng)。

本文的目的是為了對如何使用 Neon 來建立一個使用「純正」DNN 方法的語音識別系統(tǒng)提供一種簡單的指導(dǎo)介紹,其中 DNN 遵循了 Graves 和 他協(xié)作者所倡導(dǎo)的方法,同時,百度的人工智能研究人員對其進行了進一步的開發(fā),讓其成為了一種完整的端到端的 ASR 管道(end-to-end ASR pipeline)。同時,作為對本博文的補充,我們將會開源我們實現(xiàn)的這個端到端的音識別引擎(end-to-end speech recognition engine)的代碼。在其最初始形式中,系統(tǒng)使用雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(BiRNN)來訓(xùn)練模型以直接從頻譜圖產(chǎn)生轉(zhuǎn)錄,而不必顯示地將音頻幀與轉(zhuǎn)錄對齊。與之取代的是一種隱式對齊,我們采用了 Graves 的連接體時間分類(CTC)算法(Connectionist Temporal Classification ,CTC)來實現(xiàn)。

雖然「純正」DNN 方法現(xiàn)在允許使用具有最先進性能的 LVCSR 系統(tǒng)進行訓(xùn)練,但是顯式的解碼步驟 : 將模型輸出轉(zhuǎn)換為單詞的可感知序列,在評估期間仍然是十分關(guān)鍵的。解碼的技術(shù)是多種多樣的,我們通常同時使用加權(quán)有限狀態(tài)傳感器(weighted finite state transducers)和神經(jīng)網(wǎng)絡(luò)語言模型(neural network language models)。如果想要了解相關(guān)的內(nèi)容,那么需要一篇更加深入的文章來進行介紹,而本文主要限于 ASR 管道的訓(xùn)練部分。如果需要的話,我們?yōu)樽x者提供一些額外的參考知識來以填補空缺,希望能給讀者傳達(dá)構(gòu)建端到端語音識別引擎的完整視圖。

簡單扼要的說,端到端語音識別流水線由三個主要部分組成:

1. 特征提取階段,其將原始音頻信號(例如,來自 wav 文件)作為輸入,并產(chǎn)生特征向量序列,其中有一個給定音頻輸入幀的特征向量。特征提取級的輸出的示例包括原始波形,頻譜圖和同樣流行的梅爾頻率倒頻譜系數(shù)(mel-frequency cepstral coefficients,MFCCs)的切片。

2. 將特征向量序列作為輸入并產(chǎn)生以特征向量輸入為條件的字符或音素序列的概率的聲學(xué)模型。

3. 采用兩個輸入(聲學(xué)模型的輸出以及語言模型)的解碼器并且在受到語言模型中編碼的語言規(guī)則約束的聲學(xué)模型生成的序列的情況下搜索最可能的轉(zhuǎn)錄。

處理數(shù)據(jù)

當(dāng)構(gòu)建端到端語音識別系統(tǒng)時,一套有效的加載數(shù)據(jù)的機制是十分關(guān)鍵的。我們將充分利用 Neon 1.7 版本中新添加的功能:Aeon,一個能夠支持圖像,音頻和視頻數(shù)據(jù)的高級數(shù)據(jù)加載工具。使用 Aeon 大大簡化了我們的工作,因為它允許我們直接使用原始音頻文件訓(xùn)練聲學(xué)模型,而不必困擾于對數(shù)據(jù)顯示地預(yù)處理過程。此外,Aeon 能讓我們更加容易的指定我們希望在訓(xùn)練期間使用的光譜特征的類型。

提取數(shù)據(jù)

通常,語音數(shù)據(jù)以一些標(biāo)準(zhǔn)音頻格式的原始音頻文件和一些包含相應(yīng)轉(zhuǎn)錄的一系列文本文件的形式被分發(fā)。在許多情況下,轉(zhuǎn)錄文件將包含形如:<音頻文件的路徑>,<音頻文件中的語音的轉(zhuǎn)錄>的行的形式。這表示所列出的路徑指向包含轉(zhuǎn)錄的音頻文件。但是,在許多情況下,轉(zhuǎn)錄文件中列出的路徑不是絕對路徑,而是相對于某些假定目錄結(jié)構(gòu)的路徑。為了處理不同數(shù)據(jù)打包情況,Aeon 要求用戶生成包含絕對路徑對的「清單文件」(manifest file),其中一個路徑指向音頻文件,另一個路徑指向相應(yīng)的轉(zhuǎn)錄。我們將為讀者介紹 Neon 的演講示例(包括鏈接)和 Aeon 文檔以獲取更多詳細(xì)信息。

除了清單文件,Aeon 還要求用戶提供數(shù)據(jù)集中最長的話語的長度以及最長的轉(zhuǎn)錄的長度。這些長度可以在生成清單文件時被提取。比如可以使用當(dāng)下流行的 SoX 程序去提取音頻文件的時長。

我們通過訓(xùn)練由卷積(Conv)層,雙向復(fù)現(xiàn)(bi-directional recurrent (BiRNN))層和完全連接(FC)層(基本上遵循「Deep Speech 2」,如示意圖所示)組成的深層神經(jīng)網(wǎng)絡(luò)來建立我們的聲學(xué)模型。

除了在輸出層使用 softmax 激活函數(shù),我們在其它層都采用 ReLU 激活函數(shù)。

如圖所示,網(wǎng)絡(luò)采用光譜特征向量作為輸入。利用 Aeon dataloader,Neon 可以支持四種類型的輸入特性:原始波形,頻譜圖,mel 頻率譜系數(shù)(mel-frequency spectral coefficients (MFCSs))和 mel 頻率倒頻譜系數(shù)(mel-frequency cepstral coefficients (MFCCs))。MFSCs 和 MFCCs 是從頻譜圖中導(dǎo)出的,它們基本上將頻譜圖的每個列轉(zhuǎn)換為相對較小數(shù)量的與人耳的感知頻率范圍更相近的獨立系數(shù)。在我們的實驗中,我們還觀察到,在所有其他條件相等的情況下,用 mel 特征訓(xùn)練的模型作為輸入執(zhí)行效果略好于用頻譜圖訓(xùn)練的模型。

光譜輸入被傳送到了 Conv 層。通常,可以考慮具有采用 1D 或 2D 卷積的多個 Conv 層的架構(gòu)。我們將利用可以允許網(wǎng)絡(luò)在輸入的「更廣泛的上下文」(wider contexts)上操作的 strided convolution 層。Strided convolution 層還減少序列的總長度,這又顯著減小了存儲器的占用量和由網(wǎng)絡(luò)執(zhí)行的計算量。這允許我們訓(xùn)練甚至更深層次的模型,這種情況下我們不用增加太多的計算資源就可以讓性能得到較大的改進。

Conv 層的輸出被送到 BiRNN 層的棧中。每個 BiRNN 層由串聯(lián)運行的一對 RNN 組成,輸入序列在如圖所示的相反方向上呈現(xiàn)。

來自這對 RNN 的輸出將被串接起來如圖所示。BiRNN 層特別適合于處理語音信號,因為它們允許網(wǎng)絡(luò)訪問輸入序列 [1] 的每個給定點處的將來和過去的上下文。當(dāng)訓(xùn)練基于 CTC 的聲學(xué)模型時,我們發(fā)現(xiàn)使用「vanilla」RNN 而不是其門控變體(GRU 或 LSTM)是有好處的。這主要是因為后者具有顯著的計算開銷。如 [2] 所講,我們還對 BiRNN 層應(yīng)用批次歸一化(batch normalization),以減少整體訓(xùn)練時間,同時對總體字錯誤率(WER)測量的模型的精度幾乎沒有影響。

在每次迭代中,BiRNN 層的輸出先傳遞給一個全連接層,然后轉(zhuǎn)而將信息傳遞給 softmax 層。在 softmax 層中的每個單元都對應(yīng)著字母表中描述目標(biāo)詞匯表中的單個字符。例如,如果訓(xùn)練數(shù)據(jù)來自英語語料庫,那么字母表通常將包括 A 到 Z 的所有字符和任何相關(guān)的標(biāo)點符號,也包括用于分離文本中單詞的空格字符。基于 CTC 的模型通常還需要包括特殊的「空白」字符的字母表。這些空白字符促使模型可以可靠地預(yù)測連續(xù)的重復(fù)符號以及語音信號中的人為部分,例如,暫停,背景噪聲和其他「非語音」情況。

因此,對于給定話語的幀序列,該模型要為每幀生成一個在字母表上的概率分布。在數(shù)據(jù)訓(xùn)練期間,softmax 的輸出會被傳輸?shù)?CTC 代價函數(shù)(后文將詳細(xì)論述),其采用真實的文本來(i)對模型的預(yù)測值進行打分,以及(ii)生成用以量化模型預(yù)測值的準(zhǔn)確性的誤差信號??傮w目標(biāo)是訓(xùn)練模型來提升在真實場景下的預(yù)測表現(xiàn)。

訓(xùn)練數(shù)據(jù)

根據(jù)經(jīng)驗,我們發(fā)現(xiàn)使用隨機梯度下降法和動量與梯度限制配對法會訓(xùn)練出最優(yōu)性能的模型。更深層的網(wǎng)絡(luò)(7 層或更多)在大體上也有同樣的效果。

我們采用 Sutskever 等人實現(xiàn)的 Nesterov 的加速梯度下降法去訓(xùn)練模型。大多數(shù)模型的超參數(shù),例如:網(wǎng)絡(luò)的深度,給定層中的單元數(shù)量,學(xué)習(xí)速率,退火速率,動量等等,是基于現(xiàn)有的開發(fā)數(shù)據(jù)集根據(jù)經(jīng)驗選擇出來的。我們使用「Xavier」初始化方法來為我們的模型中的每一層進行初始化,雖然我們還沒有系統(tǒng)地調(diào)查過是否通過使用其他可取代的初始化方案,來比較實驗的結(jié)果是否有所優(yōu)化。

我們所有的模型都使用 CTC 損失標(biāo)準(zhǔn)進行訓(xùn)練,對 CTC 計算法內(nèi)部過程的詳細(xì)解釋超出了本博客的范圍。我們將在這里提出一個簡要概述,為了獲得更深的理解,建議讀者去閱讀 Graves 的論文。

CTC 計算法以「折疊」函數(shù)的動作為核心,該函數(shù)采用一系列字符作為輸入,并通過首先去除輸入字符串中的所有重復(fù)字符,然后刪除所有「空白」符號來產(chǎn)生輸出序列。比如說,如果我們使用「_」表示空白符號,然后

給定一個長度為 T 的話語和其對應(yīng)的「ground truth」的轉(zhuǎn)錄,CTC 算法會構(gòu)建「轉(zhuǎn)置」的折疊函數(shù),其定義為所有可能的長度為 T 的,折疊到「ground truth」轉(zhuǎn)錄上的字符序列。

任意序列出現(xiàn)在該「轉(zhuǎn)置」集合中的概率是可以直接從神經(jīng)網(wǎng)絡(luò)中的 softmax 輸出計算出來的。然后將 CTC 成本定義為序列的概率和的對數(shù)函數(shù),它存在于「轉(zhuǎn)置」集合中。該函數(shù)對于 softmax 的輸出是可區(qū)分的,這是反向傳播中所要計算的誤差梯度。

以一個簡單示例來做說明,假設(shè)輸入話語有三個幀,并且相應(yīng)的轉(zhuǎn)錄本是單詞「OX」。同樣,使用「_」表示空白符號,折疊為 OX 的三字符序列集包含 _OX,O_X,OOX,OXX 和 OX_。CTC 算法設(shè)置

P(abc) = p(a,1)p(b,2)p(c,3),其中 p(u,t) 表示單元「u」, 時間 t(幀)時 softmax 模型的輸出值。因此 CTC 算法需要枚舉固定長度的所有序列,其折疊到給定的目標(biāo)序列。當(dāng)處理非常長的序列時,通過前向 -后向算法,枚舉組合可以被有效的執(zhí)行,這就非常接近采用 HMMs 方法的處理問題的思想。

評價

一旦模型訓(xùn)練完成,我們可以通過預(yù)測一段系統(tǒng)從未聽過的語音來評估它的性能。由于模型生成概率向量序列作為輸出,因此我們需要構(gòu)建一個解碼器(decoder)來將模型的輸出轉(zhuǎn)換成單詞序列(word sequence)。

解碼器的工作是搜索模型的輸出并生成最有可能的序列作為轉(zhuǎn)錄(tranion)。最簡單的方法是計算

其中 Collapse(...)是上面定義的映射(mapping)。

盡管用字符序列訓(xùn)練模型,我們的模型仍然能夠?qū)W習(xí)隱式語言模型(implicit language model),并已經(jīng)能夠非常熟練地用語音拼寫出詞語(見表 1)。通常在字符級別用 Levenshtein 距離計算的字符錯誤率(CERs)來測量模型的拼寫性能。我們已經(jīng)觀察到,模型預(yù)測的很多誤差是沒有在訓(xùn)練集中出現(xiàn)過的單詞。因此,可以合理地預(yù)計,隨著訓(xùn)練集規(guī)模的增加,總的 CER 數(shù)值將繼續(xù)改進。這個預(yù)期在深度語音 2(Deep Speech 2)的結(jié)果中得到證實,它的訓(xùn)練集包括超過 12000 小時的語音數(shù)據(jù)。

表 1:模型對華爾街日報評估數(shù)據(jù)集的預(yù)測樣本。我們故意選擇了模型難以判斷的例子。如圖所示,加入語言模型約束后基本上消除了在沒有語言模型的情況下產(chǎn)生的所有「拼寫錯誤」。

雖然我們的模型顯示了非常好的 CER 結(jié)果,模型的讀出單詞拼寫(spell out words phonetically)的傾向?qū)е铝讼鄬^高的單詞錯誤率。我們可以通過加入從外部詞典和語言模型得到的解碼器來約束模型,以此改進模型的性能(WER)。根據(jù) [3,4],我們發(fā)現(xiàn)使用加權(quán)有限狀態(tài)傳感器(WFST)是一個特別有效的完成這項任務(wù)的方法。我們觀察到 WER 數(shù)值在 WSJ 和 Librispeech 數(shù)據(jù)集上相對提高了 25%。

表 2 列出了使用華爾街日報(WSJ)語料庫訓(xùn)練的各種端到端語音識別系統(tǒng)。為了測試「蘋果」(公司)與「蘋果」(水果)的識別結(jié)果,我們選擇僅用 WSJ 數(shù)據(jù)集訓(xùn)練和評估的系統(tǒng)的公開數(shù)據(jù)進行系統(tǒng)間的比較。然而,結(jié)果顯示在同一數(shù)據(jù)集上訓(xùn)練和評估的混合 DNN-HMM 系統(tǒng)比使用純深神經(jīng)網(wǎng)絡(luò)架構(gòu)的系統(tǒng)表現(xiàn)更好 [6]。另一方面,結(jié)果顯示當(dāng)訓(xùn)練集的數(shù)據(jù)量更大時,純深度神經(jīng)網(wǎng)絡(luò)架構(gòu)能夠?qū)崿F(xiàn)與混合 DNN-HMM 系統(tǒng)相同的性能 [引用 DS2]。

表 2:我們只使用華爾街日報數(shù)據(jù)集來訓(xùn)練和評估各種端到端的語音識別系統(tǒng)的性能。CER(character error rate)指的是比較由模型得到的字符序列與實際轉(zhuǎn)錄的字符序列的字符錯誤率。LM 指的是語言模型。最后一列指的是使用附加技術(shù)(如重新評分、模型聚合等)解碼的例子。

未來的工作

將 CTC 目標(biāo)函數(shù)嵌入神經(jīng)網(wǎng)絡(luò)模型的語音識別模型,讓我們初次看到了這種 純正 DNN 模型的能力。不過,最近,所謂的基于注意機制(attention mechanism)增強的編-解碼器(encoder-decoder)的 RNN 模型正在興起,并作為用一種使用 CTC 標(biāo)準(zhǔn) [4,5] 訓(xùn)練的 RNN 模型的可行的替代方案?;谧⒁鈾C制的編-解碼器模型與基于 CTC 標(biāo)準(zhǔn)的模型,都是被訓(xùn)練用于將聲音輸入序列(acoustic input)映射(map)到字符/音位(character/phoneme)序列上。正如上面所討論的,基于 CTC 標(biāo)準(zhǔn)的模型被訓(xùn)練用于預(yù)測語音輸入的每個幀對應(yīng)的字符,并在逐幀的預(yù)測與目標(biāo)序列序列之間搜索可能的匹配。與之相反,基于注意機制的編-解碼器模型會在預(yù)測輸出序列之前首先讀取整個輸入序列。

該方法概念上的優(yōu)點是,我們不必假設(shè)輸出序列中的預(yù)測字符是相互獨立的。CTC 的算法基于這個假設(shè),而該假設(shè)是毫無根據(jù)的——因為字符序列出現(xiàn)的順序是與比之之前較早出現(xiàn)的字符序列是高度條件相關(guān)的。最近的研究工作顯示,LVCSR 系統(tǒng)的基于注意機制的編-解碼器模型相對于基于 CTC 標(biāo)準(zhǔn)的模型在字符出錯率上有明顯的改善 [4]。在我們這兩種方法被整入語言模型之前進行評估,得出的評斷是正確的,這也支持了基于注意機制的模型是比基于 CTC 標(biāo)準(zhǔn)的模型更好的聲學(xué)模型的論斷。然而,值得指出的是,當(dāng)語言模型被用來確定單詞錯誤率時,這種性能上的差異就消失了。

我們正致力于建立 ASR 系統(tǒng)的基于注意機制的編-解碼器網(wǎng)絡(luò)的 Neon,竭誠歡迎各類參與。代碼可以參見https://github.com/NervanaSystems/deepspeech.git.

責(zé)任編輯:武曉燕 來源: Nervana
相關(guān)推薦

2022-10-19 09:27:39

2022-09-02 10:20:44

網(wǎng)絡(luò)切片網(wǎng)絡(luò)5G

2021-03-19 17:59:30

深度學(xué)習(xí)音頻程序

2021-03-29 10:56:51

人工智能深度學(xué)習(xí)

2024-07-17 09:03:56

2014-08-14 11:52:34

ITILAPM

2021-11-17 10:37:39

語音識別技術(shù)人工智能

2022-06-16 14:59:34

端到端語音翻譯系統(tǒng)對話翻譯翻譯模型

2021-09-26 13:50:52

AI 數(shù)據(jù)強化學(xué)習(xí)

2020-10-26 13:51:11

Kafka數(shù)據(jù)端到端

2021-06-30 09:00:00

測試Web軟件

2010-01-26 11:06:47

2024-06-27 09:50:56

2024-04-19 16:15:30

云計算

2009-03-17 09:56:00

802.11n測試無線網(wǎng)絡(luò)

2020-03-13 08:18:09

面部識別生物識別人工智能

2012-08-24 09:34:58

戴爾

2019-08-22 11:16:41

云計算數(shù)據(jù)中心技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號