簡單粗暴而有效的改圖:自動語音識別數據擴增的「一條野路」

2021-03-06 DeepTech深科技

 

神經網絡的調參無疑是一個巨大的工程。

 

如何在調參之前擁有更佳的表現?千辛萬苦調好了但卻過擬合,如何擁有更好的泛化能力?這無疑是人肉調參的必經之痛。一個通用的認知是,訓練數據會限制模型表現的上限,能擁有更好的訓練數據,無疑成功了一大截兒。

 

近日,Daniel S. Park 等人在自動語音識別(Automatic Speech Recognition,ASR)模型訓練上,找到了一種簡單卻強大的數據增強方法——SpecAugment。該操作另闢蹊徑,將原始語音數據生成的梅爾倒譜圖直接進行圖像變換,擴增訓練數據,化腐朽為神奇,結果很棒。

 

啥是自動語音識別

自動語音識別,即依託深度神經網絡模型將語音自動識別為文本輸入,無論是 Siri 助手還是微軟小冰,抑或佔據生活一部分的微信,都有它的身影,相信這個時代的你也早已習慣用語音轉輸入解放雙手。

 

傳統 ASR 模型的原始輸入數據一般先經過預處理,將收集的音波轉化為頻譜圖如梅爾倒頻譜,也即梅爾頻率倒譜係數(Mel Frequency Cepstrum Coefficient,MFCC,一定程度上模擬了人耳對聲音的處理特點)的譜圖。


圖 | 音波轉化為梅爾倒頻譜圖結果示意圖(來源:Daniel S. Park,et al./ Google Brain)

梅爾倒譜的一般流程是將聲音信號進行傅立葉轉換得到頻譜,再進行取對數以及取逆傅立葉變換。

 

傳統 ASR 模型擴增數據一般是將收集到的音波進行改變加速、減速、加背景噪音等變換來進行數據集的豐富,最後,這種擴增後的音頻也要轉化為頻譜圖。

 

然而,直接改變頻譜圖進行數據擴增,能否提升模型表現?畢竟,圖像領域的擴增手段十分豐富,直接將頻譜作為圖像用一定手段進行變換結果如何?

Daniel S. Park 等人的 SpecAugment 方法證明,這是一個簡單易行的好路子,可以實現在線訓練,計算成本低廉無需額外數據,還能使 ASR 任務 LibriSpeech 960h(語音識別技術的最權威主流的開源數據集,包括近 1000 小時的英文發音和對應文字)和 Switchboard 300h(交換機電話語音語料庫)比目前最佳模型的表現更好。

 

SpecAugment 的「出彩」之處

 

首先,在模型訓練之前將輸入數據——音頻數據的梅爾倒譜,進行圖像處理,這也是 SpecAugment 這條野路出彩的基礎。即對梅爾倒頻譜的橫軸一段時間步長的頻譜進行左或右扭轉翹曲、或者掩蔽一段時長的譜圖(時間屏蔽,對縱向進行掩蔽)、或是某些梅爾頻率的信號(頻率屏蔽,對橫向進行掩蔽),得到了一系列的擴增樣本。

 

這樣的處理使得模型能夠學習到時間軸上發生損失變形的音頻、部分頻率缺失的音頻,以及丟失部分語音片段的音頻的特點,增加了訓練模型對這些信息的處理能力,也增強模型的泛化能力。

 

圖 | 梅爾倒頻譜的擴增變換手段:從上到下依次為沒有應用增強、一定時間步長的扭曲,頻率屏蔽和時間屏蔽。(來源:Daniel S. Park,et al/ Google Brain)

 

模型訓練

 

輸入數據處理完畢後,訓練語音識別模型,這裡採用 LAS(Listen Attend and Spell networks)模型。LAS 模型主要是由 Listener 和 Speller 兩個子模型組成,其中 Listener 是一個聲學編碼器(Encoder,收集數據,相當於「聽」),Speller 是一個基於注意力機制的解碼器(Decoder,將收集的特徵翻譯成字符,相當於「說」)

 

訓練 SpecAugment 的 Listener 子模型:輸入的梅爾倒譜首先經兩層卷積神經網絡(CNN),經最大池化且步幅為 2,得到的結果輸入到 BLSTM(雙向長短期交替記憶模型)中,產生尺寸為 d x w 的基於注意力機制的特徵。

 

訓練 SpecAugment 的 Speller 子模型:將上一步驟中基於注意力機制產生的特徵向量輸入到一個二層 RNN(Recurrent Neural Network)模型中,訓練集中的文本已用 WPM(Word Piece Model)進行了 token 處理,利用集束搜索(Beam Search),集束寬為 8,得到 token 表示的預測文本(token 處理即分詞處理,之後進行詞嵌入,自然語言處理利用詞嵌入來將詞向量化表示)。至此,實現語音轉文本過程。

 

提升表現

 

比較訓練集擴增前後訓練出的 LAS 模型在測試集上的詞錯誤率(Word Error Rate,WER ),不改變任何超參數,測試結果錯詞率顯著降低,可見無需調參,擴增訓練集效果明顯。

 

圖 | 擴增訓練集與否的兩個模型在數據集 LibriSpeech 上有噪音測試集和無噪音測試集的表現。(來源:Daniel S. Park,et al/ Google Brain)

 

對於過擬合問題,雖然訓練集上利用擴增的模型表現與無擴增相差並不是很多,但在開發集上,WER 有明顯的降低,說明模型泛化能力提升,可以預測未訓練過的數據,過擬合得到解決。


圖 | 擴增訓練集與否的兩個模型在訓練集、有噪音開發集和無噪音開發集集上的表現(來源:Daniel S. Park,et al/ Google Brain)

 

這個模型啥水平?

1)優於現有最佳 ASR 模型

擴增訓練集後調整模型參數以及適當訓練迭代,使得模型表現達到最佳,在數據集 LibriSpeech 960h 和 Switchboard 300h 有無噪音的測試集上,擴增模型表現與現有最佳模型的錯詞率結果對比發現,擴增方法明顯取勝。無論是傳統 ASR 模型(如 HMM)還是端到端的神經網絡模型(如 CTC/ASG),採用 SpecAugment 方法訓練後的 LAS 模型表現都明顯更好。


圖 | LibriSpeech 960h 和 Switchboard 300h 數據集上不同模型的表現(來源:Daniel S. Park,et al/ Google Brain)

2)優於利用語言模型的 ASR 模型

引入利用大量純文本語料庫訓練的語言模型(Language Models,LMs)能夠使 ASR 模型效果大大提升,因為可以用語料庫中的大量信息使模型功能更強,這也是 ASR 任務的一個通用做法。語言模型一般是獨立訓練的,使用 ASR 模型時需要佔據一定內存進行存儲,這使其難以在小型設備上應用。而 SpecAugment 模型的優勢是,即使不利用語言模型也優於現有引入語言模型的 ASR 模型。這意味著語言模型的大內存問題,有了解決之路。


圖 | LibriSpeech 960h 和 Switchboard 300h 數據集上不同 ASR 模型引入語言模型有否的表現(來源:Daniel S. Park,et al/ Google Brain)

 

總結,利用改變頻譜圖的方式擴增音頻數據樣本,訓練出的 ASR 模型表現極佳,優於現有最好模型,甚至超過引入語言模型,很好用。

 

-End-

參考:

語料庫:

http://www.openslr.org/12/

https://catalog.ldc.upenn.edu/LDC97S62

文獻:

https://arxiv.org/pdf/1508.01211.pdf

https://arxiv.org/abs/1904.08779

https://arxiv.org/pdf/1904.03288.pdf

https://arxiv.org/pdf/1810.11352.pdf

https://arxiv.org/pdf/1805.03294.pdf

https://arxiv.org/pdf/1609.03193.pdf

http://www.speech.cs.cmu.edu/15-492/slides/03_mfcc.pdf

https://ieeexplore.ieee.org/abstract/document/7050699

 

概念解釋(wiki)

https://en.wikipedia.org/wiki/Language_model

https://en.wikipedia.org/wiki/Spectrogram

https://en.wikipedia.org/wiki/Word_error_rate

https://en.wikipedia.org/wiki/Hidden_Markov_model

-End-

關注 DeepTech 

發現改變世界的新興科技

(微信號:deeptechchina)

▼ 

點擊閱讀原文了解題跋派↓↓

相關焦點

  • 谷歌提出新型自動語音識別數據增強大法,直接對頻譜圖「動刀」,提升模型表現
    銅靈 發自 編譯整理量子位 出品 | 公眾號 QbitAI每次用語音輸入完成「打字」過程,你的手機就經歷了一次自動語音識別(ASR)。
  • ASRT:一個中文語音識別系統
    本項目聲學模型通過採用卷積神經網絡(CNN)和連接性時序分類(CTC)方法,使用大量中文語音數據集進行訓練,將聲音轉錄為中文拼音,並通過語言模型,將拼音序列轉換為中文文本。算法模型在測試集上已經獲得了80%的正確率。基於該模型,在Windows平臺上實現了一個基於ASRT的語音識別應用軟體,取得了較好應用效果。
  • Tensorflow官方語音識別入門教程 | 附Google新語音指令數據集
    李林 編譯整理量子位 報導 | 公眾號 QbitAIGoogle今天推出了一個語音指令數據集,其中包含30個詞的65000條語音,wav
  • 開源自動語音識別系統wav2letter (附實現教程)
    wav2letter 是由 Facebook AI 研究團隊開源的一款簡單而高效的端到端自動語音識別系統數據預處理數據文件夾包含多個用於預處理多種數據集的腳本。目前我們僅提供 LibriSpeech 和 TIMIT。以下是預處理 LibriSpeech ASR 語料庫的例子:
  • 18款丨語音識別系統的使用
    了解它的功能,才能獲得更好的使用體驗哦~接下來,我們一起來了解語音識別系統吧!在車機開啟的情況下說出:「你好,遠景!」在車機開啟的情況下長按方向盤右側的語音識別按鍵;在車機開啟的情況下,點擊車機屏幕上的語音助理圖標。
  • 看懂語音識別中CTC解碼器的原理,這篇文章就夠了
    ----  AI檸檬博客 首發  ----在DNN-HMM架構的語音識別系統的聲學模型中,訓練一個DNN模型通常需要先進行幀和標籤的對齊操作
  • 絕佳的ASR學習方案:這是一套開源的中文語音識別系統
    這篇文章介紹了一種開源的中文語音識別系統,讀者可以藉助它快速訓練屬於自己的中文語音識別模型,或直接使用預訓練模型測試效果。所以對於那些對語音識別感興趣的讀者而言,這是一個學習如何搭建 ASR 系統的極好資料。
  • 阿里開源自研語音識別模型DFSMN,準確率高達96.04%
    LibriSpeech)。開源地址:https://github.com/tramphero/kaldi 本文作者:張仕良阿里開源語音識別模型DFSMN從輸入到輸出之間可以採用不同的神經網絡結構,將輸入的聲學特徵映射得到不同輸出建模單元的後驗概率,然後再結合HMM進行解碼得到最終的識別結果。最早採用的網絡結構是前饋全連接神經網路(Feedforward Fully-connected Neural Networks, FNN)。FNN實現固定輸入到固定輸出的一對一映射,其存在的缺陷是沒法有效利用語音信號內在的長時相關性信息。
  • 乾貨分享 | Kaggle知識點解析:Adversarial Validation和數據擴增方法
    數據擴增是對讀取進行數據增強的操作,所以需要在數據讀取的時候完成。此外由於數據擴增有一定的隨機性,相同的圖片經過數據擴增可能得到不同的圖片。對於圖像分類,數據擴增一般不會改變標籤;對於物體檢測,數據擴增會改變物體坐標位置;對於圖像分割,數據擴增會像素標籤。
  • 早期自動武器的槍機旋轉閉鎖,可以如此簡單粗暴.
    但是自動武器要連續發射,需要擊發時槍機被頂住不打開,彈頭出槍口後槍機又自動靈活打開,完成退殼動作,這一矛盾如何解決呢?這就需要「走旁路」,即膛壓不能直接衝開槍機,但火藥燃氣能量驅動活塞杆等傳動件動作,從旁路打開槍機,這就是自動武器上閉鎖機構的基本原理。自動武器上的閉鎖機構形式多樣,寫在一篇文章裡篇幅實在太長,所以今天先說說自動武器上的槍機旋轉閉鎖是如何實現的。
  • 【專欄精選】實戰:百度語音識別
    洪流學堂公眾號回復語音識別獲取源碼工程。洪流學堂,讓你快人幾步。你好,我是鄭洪智。大智:「今天給你來點刺激的。」小新滿面紅光:「啥刺激的?人家可還是個小孩子。」大智:「帶你實戰!」小新:「啊?智哥你變了!」大智:「變是不可能的,帶你實戰百度語音識別。」
  • 語音識別系統的分類、基本構成與常用訓練方法 | Machine Speech
    • 連續語音識別系統:自然流利的連續語音輸入,大量連音和變音會出現。從識別系統的詞彙量大小考慮,也可以將識別系統分為三類:• 小詞彙量語音識別系統:通常包括幾十個詞的語音識別系統。• 中等詞彙量的語音識別系統:通常包括幾百個詞到上千個詞的識別系統。• 大詞彙量語音識別系統:通常包括幾千到幾萬個詞的語音識別系統。
  • 正則化方法:L1和L2 、dropout、數據集擴增
    其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大——因為訓練出來的網絡過擬合了訓練集,對訓練集外的數據卻不work。為了防止overfitting,可以用的方法有很多,下文就將以此展開。
  • 最簡單粗暴的Notion漢化方法!
    不過,即便沒能白嫖到,Notion的高級版和免費版,區別並不大,只是多了兩個功能:頁面歷史記錄,和上傳附件的大小限制(免費版本只能上傳5M)。這些在我近兩年的使用過程中,其實是沒有什麼影響的。包括在群裡,很多小夥伴都提到了這一問題:老師,為什麼你的Notion是中文版?
  • 最傑出的等溫擴增方法之一——解旋酶依賴性擴增HDA
    解旋酶依賴性擴增技術(helicase-dependent amplification,HDA)於2004年發明
  • 一種巧妙且簡單的數據增強方法 - MixUp 小綜述
    Mixup 是⼀種簡單且有效的數據增強⽅法,⾃2018年MIT和facebook提出之後,⽆論在業界還是在學術界都有了很強的地位,成為⼤家的⼀種標配。
  • 簡單的音頻識別
    自定義訓練數據默認情況下,腳本將下載 Speech Commands 數據集,但您也可提供自己的訓練數據。要使用您自己的數據進行訓練,您應確保您要識別的每個聲音至少有幾百條錄音,並按照類別將它們整理到文件夾中。
  • 教你如何使用ASRT訓練中文語音識別模型
    )上,為了便於大家使用,本文將手把手按順序教你如何使用ASRT語音識別系統訓練一個中文語音識別模型。3 下載並解壓語音數據集點擊連結 https://github.com/nl8590687/ASRT_SpeechRecognition#data-sets-%E6%95%B0%E6%8D%AE%E9%9B%86 即可跳轉到一些語音數據集的下載連結頁面,點擊下載清華大學THCHS30數據集和ST-CMDS數據集(都要下載)。
  • 簡單粗暴的Win10系統安裝教程(官方純淨版,可激活)
    如何使用U盤重裝系統(簡單易懂的教程)以上裝系統方式,適用於所有windows系統,但是對於win10來了,我們還有其他更為簡單粗暴的方法,這就是今天蟈蟈要講的,如何簡單粗暴的安裝win10系統。本文已經去掉了很多非必須環節,最為簡單粗暴,適用於:筆記本電腦(特別適合華為Linux系統)組裝臺式機WIN10系統安裝前期準備提前準備一個8G或者更大的空白U盤,沒有U盤的趕緊去買一個,有電腦必配U盤!
  • 水溫自動控制系統
    為了使單片機能夠有效的傳送外部數據存儲器從0000H到FFFH單元的指令, 必須同GND相連接。需要主要的是,如果加密位1被編程,復位時EA端會自動內部鎖存。當執行內部編程指令時, 應該接到VCC端。當處於Flash編程時,該引腳接12V的編程允許電壓VPP,當12V的編程電壓是允許的情況下。·XTAL1:振蕩器反相放大器以及內部時鐘電路的輸入端。