自2010年Google的搜索引擎等服務(wù)退出中國之后,它也嘗試了多種途徑重返中國市場,比如推出中國版的Google Play應(yīng)用商店,卻沒有取得明顯的成功。即便是在目前中國已經(jīng)成為最大的Android智能手機(jī)市場的大勢下,也并沒有使用Google的服務(wù)。
而在7年之際,谷歌再次試圖重返中國,這次打出的“王牌”是它的人工智能系統(tǒng)開發(fā)框架TensorFlow。
雖然Google的云服務(wù)并未入駐中國市場,但中國卻有著亞洲增長最快的 TensorFlow開發(fā)者社區(qū)。目前谷歌正在中國積極推廣TensorFlow,希望借此重回龐大的中國AI市場。據(jù)了解,已有多名Google美國工程師出席了至少三個在北京和上海舉行的 TensorFlow開發(fā)者會議,其中兩場會議是閉門會議,出席者不允許拍照、記錄甚至寫博客。
TensorFlow最初由Google Brain團(tuán)隊(duì)開發(fā)用于Google的研究和生產(chǎn),2015年11月9日在Apache 2.0開源許可證下發(fā)布。自發(fā)布至今,已經(jīng)被下載了超過790萬次。
今天,讓我們通過硅谷數(shù)據(jù)工程師Matthew Rubashkin和Matt Mollison所寫的TensorFlow RNN教程,來先了解一下如何借助TensorFlow框架訓(xùn)練語音識別的RNN;教程包含了全部代碼片段,你可以找到相應(yīng)的 GitHub 項(xiàng)目,該教程中使用的軟件就是源于現(xiàn)有的開源項(xiàng)目的代碼。
語音識別:音頻與副本(transcriptions)
2010年基于語音的方法成為語音識別模型的最新技術(shù),包括發(fā)音,聲學(xué)和語言模型的獨(dú)立組件。而從過去到現(xiàn)在的語音識別都依賴于使用傅立葉變換公式將聲波分解成頻率和振幅,并產(chǎn)生如下所示的頻譜圖:
為傳統(tǒng)語音識別流水線而訓(xùn)練隱馬爾可夫模型(HMM)的聲學(xué)模型,需要涉及語音、文本數(shù)據(jù),以及一個從單詞到音素的字典。HMM是用于順序數(shù)據(jù)生成的概率模型,多用于測量字符串中的差異的字符串度量,并且通常使用Levenshtein word error distance來評估。
這些模型可以通過與音素副本對應(yīng)的語音數(shù)據(jù)進(jìn)行簡化和精準(zhǔn)化,但這是一個非常繁瑣的工作。因此,相較于音素級別的副本,詞級的副本更可能存在大量的語音數(shù)據(jù)集。
Connectionist Temporal Classification(CTC)損失函數(shù)
當(dāng)使用神經(jīng)網(wǎng)絡(luò)進(jìn)行語音識別時,我們可以先拋開音素的概念,而使用允許預(yù)測字符級副本的基于神經(jīng)網(wǎng)絡(luò)的時序分類(CTC)的目標(biāo)函數(shù)。簡而言之,CTC能夠?qū)崿F(xiàn)多個序列概率的計(jì)算,這里的序列是指語音樣本的所有可能的字符級副本的集合。而網(wǎng)絡(luò)使用目標(biāo)函數(shù),則可以最大化字符序列的概率(即可以選擇可能性最大的副本),并且通過計(jì)算預(yù)測結(jié)果與實(shí)際副本之間的誤差從而更新訓(xùn)練期間的網(wǎng)絡(luò)權(quán)重。
值得注意的是,CTC損失函數(shù)使用的字符級誤差與傳統(tǒng)語音識別模型中經(jīng)常使用的Levenshtein word error distance不同。對于字符生成的RNN模型而言,字符和單詞之間的誤差與在諸如Esperonto和Croatian的語音語言中類似,不同的聲音會對應(yīng)于不同的字符。相反,對于非語音語言(如英語),字符與單詞之間的誤差就非常不同了。
為了進(jìn)一步利用為傳統(tǒng)或深度學(xué)習(xí)語音識別模型而開發(fā)的算法,我們的團(tuán)隊(duì)構(gòu)建了模塊化和快速原型的語音識別平臺:
數(shù)據(jù)的重要性
毫無疑問,創(chuàng)建一個將語音轉(zhuǎn)成文本的系統(tǒng),需要數(shù)字音頻文件和文字的副本。而由于該模型將適用于解碼任何新的語音樣本,因此,在系統(tǒng)中供我們進(jìn)行訓(xùn)練的樣本越多,模型的表現(xiàn)也就越好。
對此,我們研究了可免費(fèi)獲取的英語演講錄音,包括了LibriSpeech(1000小時),TED-LIUM(118小時)和VoxForge(130小時)等不同的樣本,以供訓(xùn)練使用。
下面的圖表展現(xiàn)了這些數(shù)據(jù)集的信息,包括總時長、采樣率和注釋:
為了方便地從任何數(shù)據(jù)源中訪問數(shù)據(jù),我們以扁平的格式存儲所有數(shù)據(jù),如.wav格式和.txt格式。
舉個例子,你可以在我們的GitHub repo中找到Librispeech訓(xùn)練數(shù)據(jù)集中的“211-122425-0059”數(shù)據(jù)所對應(yīng)的文件,例如211-122425-0059.wav和211-122425-0059.txt。這些數(shù)據(jù)文件名使用數(shù)據(jù)集對象類加載到TensorFlow圖中,這有助于TensorFlow有效地加載、預(yù)處理數(shù)據(jù),并將各批數(shù)據(jù)從CPU加載到GPU內(nèi)存中。以下是數(shù)據(jù)集對象中數(shù)據(jù)字段的示例:
特征表征(representation)
為了使機(jī)器更好地識別音頻數(shù)據(jù),數(shù)據(jù)必須先從時域轉(zhuǎn)換到頻域。這里有幾種方法可以創(chuàng)建用于提取機(jī)器學(xué)習(xí)特征的音頻數(shù)據(jù),包括通過任意頻率分級(如每100Hz),以及通過使用人耳能夠聽到的頻率波段分級。這種典型的以人為中心的語音數(shù)據(jù)轉(zhuǎn)換是計(jì)算13位或26位不同倒譜特征的梅爾頻率倒譜系數(shù)(MFCC)的,它可以作為模型的輸入。經(jīng)過轉(zhuǎn)換,數(shù)據(jù)將被存儲在一個頻率系數(shù)(行)隨時間(列)的矩陣中。
由于語音不會孤立地產(chǎn)生,并且沒有一對一映射到字符,所以我們可以通過在當(dāng)前的時間索引之前和之后捕獲聲音的重疊窗口(10s)上訓(xùn)練網(wǎng)絡(luò),從而捕獲共同作用的影響(通過影響一個聲音影響另一個發(fā)音)。
以下是如何獲取MFCC功能以及如何創(chuàng)建音頻數(shù)據(jù)的窗口的示例代碼:
對于RNN 示例來說,我們使用之前的9個時間片段和之后的9個時間片段,每個窗口總共包括了19個時間點(diǎn)。當(dāng)?shù)棺V系數(shù)為26的情況下,每25毫秒會有494個數(shù)據(jù)點(diǎn)。而根據(jù)數(shù)據(jù)的采樣率,我們建議對于16000Hz使用26個倒譜特征,對8000Hz使用13個倒譜特征。
以下是8,000 Hz數(shù)據(jù)的加載窗口示例:
語音的序列性建模
長短期記憶網(wǎng)絡(luò)(LSTM)層是一種循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)架構(gòu),可用于對具有長期順序依賴性的數(shù)據(jù)進(jìn)行建模。由于它們從根本上記住了當(dāng)前時間點(diǎn)的歷史信息,而這些信息會影響結(jié)果的輸出,因此它們對于時間序列數(shù)據(jù)非常重要。 而也正因這樣的時態(tài)特征,使得上下文具有了聯(lián)系性,這對于語音識別非常有效。
以下展示了深度語音啟發(fā)(DeepSpeech-inspired)的雙向神經(jīng)網(wǎng)絡(luò)(BiRNN)中 LSTM 層的示例代碼:
網(wǎng)絡(luò)訓(xùn)練與監(jiān)控
通過使用Tensorflow訓(xùn)練網(wǎng)絡(luò),我們花很少的精力就可以實(shí)現(xiàn)計(jì)算圖表的可視化,同時也可以使用TensorBoard從門戶網(wǎng)站上進(jìn)行監(jiān)視訓(xùn)練、驗(yàn)證以及性能測試。根據(jù)Dandelion Mane在2017年Tensorflow發(fā)展峰會上做演講中提到的技巧,我們使用tf.name_scope來增加節(jié)點(diǎn)和層名,并將總結(jié)寫到了文件中。
其結(jié)果是自動生成的,并且是可理解的計(jì)算圖表。以雙向神經(jīng)網(wǎng)絡(luò)(BiRNN)為例(如下圖),數(shù)據(jù)在左下方到右上方的不同操作間進(jìn)行傳遞。為了更清楚地展現(xiàn),可以為不同的節(jié)點(diǎn)做標(biāo)注,并使用命名空間對節(jié)點(diǎn)進(jìn)行著色。在這個例子中,青色的“fc”盒子對應(yīng)全連接層,而綠色 的'“b”和“h”盒子分別對應(yīng)偏移量和權(quán)重。
我們使用TensorFlow提供的tf.train.AdamOptimizer來控制學(xué)習(xí)率。 而AdamOptimizer則通過使用動量(參數(shù)的移動平均值)來改善傳統(tǒng)梯度下降,從而促進(jìn)超參數(shù)的有效動態(tài)調(diào)整。此外,我們還可以通過創(chuàng)建標(biāo)簽錯誤率的摘要標(biāo)量來跟蹤丟失和錯誤率:
如何改進(jìn)RNN
現(xiàn)在我們已經(jīng)建立了一個簡單的LSTM RNN網(wǎng)絡(luò),那么,如何降低其中的錯誤率呢?非常幸運(yùn)的是,對于開源社區(qū)而言,許多大公司都已經(jīng)發(fā)布了他們表現(xiàn)最好的語音識別模型的背后的數(shù)學(xué)模型。早在2016年9月,微軟就發(fā)布了一篇文章,描述了他們?nèi)绾卧贜IST 200交換機(jī)數(shù)據(jù)上將錯誤率降到6.9%。他們在卷積+遞歸神經(jīng)網(wǎng)絡(luò)之上使用了幾種不同的聲學(xué)和語言模型。
微軟團(tuán)隊(duì)和其他研究人員在過去4年中所做的幾項(xiàng)重大改進(jìn)包括:
值得注意的是,在過去幾十年的傳統(tǒng)語音識別模型中率先開發(fā)的語言模型,在深度學(xué)習(xí)語音識別模型中再次被證明是有價值的。
改進(jìn)來自:A Historical Perspective of Speech Recognition, Xuedong Huang, James Baker, Raj Reddy Communications of the ACM, Vol. 57 No. 1, Pages 94-103, 2014
訓(xùn)練你的第一個RNN
我們提供了一個 GitHub項(xiàng)目(GitHub repository),該項(xiàng)目的腳本提供了一個用RNNs和CTC損失函數(shù)(在TensorFlow中),訓(xùn)練端到端語音識別系統(tǒng)的簡單易行執(zhí)行方案。GitHub庫中包含了來自LibriVox 語料庫(LibriVox corpus )示例數(shù)據(jù),這些數(shù)據(jù)被分為如下幾個文件夾:
當(dāng)訓(xùn)練這幾個示例時,你會很快注意到訓(xùn)練數(shù)據(jù)會過度擬合(overfit),這使得錯詞率(WER)約為0%,而測試集和Dev數(shù)據(jù)集的WER大約能達(dá)到85%。測試錯誤率之所以不是100%,是因?yàn)闄C(jī)器需要在29個可能的字符間做選擇(a-z,省略號,空格鍵,空白),但網(wǎng)絡(luò)將很快學(xué)習(xí)到:
在GitHub庫中使用默認(rèn)設(shè)置做訓(xùn)練,運(yùn)行結(jié)果如下圖所示:
如果你想訓(xùn)練一個高性能的模型,還可以在文件夾中添加額外的.wav和.txt文件,或者創(chuàng)建一個新的文件夾,并用文件夾位置更新`configs / neural_network.ini`。需要注意的是,即使使用強(qiáng)大的GPU,在僅僅幾百個小時的音頻上做處理和訓(xùn)練也需要非常大的計(jì)算能力。
| 編譯:科技行者
| 來源:SVDS
好文章,需要你的鼓勵
騰訊ARC實(shí)驗(yàn)室推出AudioStory系統(tǒng),首次實(shí)現(xiàn)AI根據(jù)復(fù)雜指令創(chuàng)作完整長篇音頻故事。該系統(tǒng)結(jié)合大語言模型的敘事推理能力與音頻生成技術(shù),通過交錯式推理生成、解耦橋接機(jī)制和漸進(jìn)式訓(xùn)練,能夠?qū)?fù)雜指令分解為連續(xù)音頻場景并保持整體連貫性。在AudioStory-10K基準(zhǔn)測試中表現(xiàn)優(yōu)異,為AI音頻創(chuàng)作開辟新方向。
Meta與特拉維夫大學(xué)聯(lián)合研發(fā)的VideoJAM技術(shù),通過讓AI同時學(xué)習(xí)外觀和運(yùn)動信息,顯著解決了當(dāng)前視頻生成模型中動作不連貫、違反物理定律的核心問題。該技術(shù)僅需添加兩個線性層就能大幅提升運(yùn)動質(zhì)量,在多項(xiàng)測試中超越包括Sora在內(nèi)的商業(yè)模型,為AI視頻生成的實(shí)用化應(yīng)用奠定了重要基礎(chǔ)。
上海AI實(shí)驗(yàn)室發(fā)布OmniAlign-V研究,首次系統(tǒng)性解決多模態(tài)大語言模型人性化對話問題。該研究創(chuàng)建了包含20萬高質(zhì)量樣本的訓(xùn)練數(shù)據(jù)集和MM-AlignBench評測基準(zhǔn),通過創(chuàng)新的數(shù)據(jù)生成和質(zhì)量管控方法,讓AI在保持技術(shù)能力的同時顯著提升人性化交互水平,為AI價值觀對齊提供了可行技術(shù)路徑。
谷歌DeepMind團(tuán)隊(duì)開發(fā)的GraphCast是一個革命性的AI天氣預(yù)測模型,能夠在不到一分鐘內(nèi)完成10天全球天氣預(yù)報(bào),準(zhǔn)確性超越傳統(tǒng)方法90%的指標(biāo)。該模型采用圖神經(jīng)網(wǎng)絡(luò)技術(shù),通過學(xué)習(xí)40年歷史數(shù)據(jù)掌握天氣變化規(guī)律,在極端天氣預(yù)測方面表現(xiàn)卓越,能耗僅為傳統(tǒng)方法的千分之一,為氣象學(xué)領(lǐng)域帶來了效率和精度的雙重突破。