自动语音识别(ASR)自监督方法研究综述
?作者?|?蔡杰
單位?|?北京大學碩士生
研究方向?|QA
語音 AI 作為人工智能的應用技術之一,近年來正逐漸從實驗室研究,越來越多地走向實際應用和價值創造的新階段。其中的 ASR(Automatic Speech Recognition)是一種將人的語音轉換為文本的技術, 該技術可以使工具變得更加智能化,可以應用于各類智能設備,比如語音搜索,語音助手,智能音箱等等。
最近研究了 ASR 領域各種使用自監督方法訓練的模型,并在此做一些簡單的總結。
基本概念
ASR 方法主要分為兩類,一類是傳統的方法,先使用聲學模型將語音轉換為拼音或者是其他的中間形式,然后使用語言模型達成再將中間形式轉換為文本,從而達到語音轉文本的目的。另一類是直接采用端到端的形式把語音轉換為文本。
本文的介紹主要聚焦于端到端的形式。自從預訓練模型的誕生,ASR 領域也借鑒了預訓練的思想。目前 ASR 中的預訓練方法普遍采用預訓練特征提取器(訓練encoder)的方式,通過海量的無標注音頻進行學習,取得了非常顯著的效果。
本文一共介紹 3 篇 ASR 領域中使用自監督方法的論文,第一篇論文是 CPC(Contrastive Predictive Coding)該論文首次提出了 InfoNCE loss(沒想到竟然出自 ASR 領域),奠定了對比學習領域的基礎。第二篇論文則是 Facebook 經典的 wav2vec 模型,之后 Fackbook 的一系列 ASR 模型的基礎。第三篇則是提出了將 ASR 與 NLP 進行了跨界融合的新思路,得益于 BERT 的加持也取得了很好的效果。
CPC
論文標題:
Representation Learning with Contrastive Predictive Coding
論文地址:
https://arxiv.org/pdf/1807.03748.pdf
論文來源:
arxiv
本文直接使用音頻數據作為模型的輸入,通過對比學習的方法優化模型,從而得到音頻的特征向量。
首先開門見山的看看 CPC 模型的模型圖:
模型使用原始的音頻數據作為輸入,經過一個 CNN 的 encoder 之后,得到對應的特征表示,然后將得到的特征表示輸入到一個 RNN 中,得到圖中的 ,因為語音具有短時平穩性,其在較短周期內是具有一定規律的。
CPC期望通過訓練模型,使 時刻得到的預測值 經過 linear 層映射后,跟 encoder 得到的潛在特征 z(t+1)、z(t+2)、z(t+3)、z(t+4) 盡量的接近。即, 通過一些變換后,可以很好的用來重構未來的特征 z(t+k)。
本論文還提出了一個基于 NCE 的損失函數,也就是大名鼎鼎的 InfoNCE:
其中 X={x_1,…,x_N} 為包含一個從分布 p(x|c) 采樣得到的正樣本以及 N-1 個從分布 p(x) 中采樣得到的負樣本。為何要從分布 p(x|c) 中采樣得到正樣本呢,猜測是因為分布 p(x|c) 中包含了該時刻的上下文信息,而音頻具有較短周期內相似的特性,因此采樣出來的樣本和該時刻的樣本比較相似。CPC 最終要學到是圖中橙紅色的向量,這個向量可以用到下游的 ASR 系統中。
CPC 是一種完全無監督的訓練特征提取的方法,它的可移植性很強,能適用于多種任務,效果上在很多任務中能夠媲美甚至超越當時的有監督方法。
作者在兩個ASR任務——電話和說話者分類任務中取得了顯著的成果,尤其是在說話者分類任務中取得了和有監督方法接近的結果。
wav2vec
論文標題:
wav2vec: Unsupervised Pre-training for Speech Recognition
論文地址:
https://arxiv.org/abs/1904.05862
論文來源:
INTERSPEECH 2019
wav2vec 首次嘗試使用卷積神經網絡用于 ASR 領域中的無監督預訓練。wav2vec 的訓練方法和 CPC 模型類似,都是參照以上方法去預訓練的。其具體的模型圖如下所示:
圖中的兩個藍色三角形部分表示的都是兩個不同的卷積神經網絡,第一個淺藍色的卷積神經網絡稱之為 encoder network。通過 encoder network(一個五層的卷積神經網絡)可以將輸入以較低的時間頻率將原始語音樣本 x 編碼為特征表示 z;第二個深藍色的卷積神經網絡稱之為 context network。接下來 context network會將 encoder network 的多個輸出(多個表示 ,v 的大小為超參數,文中嘗試了兩種不同 v 的大小:210ms 和 810ms)混合到單個 context 向量 c 中。
之后是對應的 loss 函數,wav2vec 使用了和 CPC 類似的思路。因為語音具有短時平穩性,其在較短周期內是具有一定規律的。所以可以通過當前輸出的特征預測未來時刻的特征,因為二者是很相似的。作者把當前時刻和未來的表征當做正例,同時從一個概率分布 pn 中采樣出負樣本,loss 使用的也是 contrastive loss:
從公式中可以看出,前半部分是正例的 loss,后半部分是負例的 loss,并且在兩邊都同時加了一個 sigmoid 函數,最后要使得正例盡可能接近,負例盡可能遠離。
在實驗部分,作者把學到的特征應用于 ASR 任務(WSJ benchmark),將傳統 ASR 任務中的 filterbank 特征替換為 c,最后實驗結果如下:
可以看出利用 wav2vec 訓練的模型比起 baseline 模型有明顯的提升。
此外作者還發現如果在訓練的時候使用更少的帶標簽數據,模型相較于 baseline 會帶來更多的提升,同時模型的表現還會受到數據量大小的影響(數據量越大,效果越好):
vq-wav2vec
論文標題:
vq-wav2vec: Self-Supervised Learning of Discrete Speech Representations
論文地址:
https://openreview.net/forum?id=rylwJxrYDS
論文來源:
ICLR 2019
轉眼來到了 2019 年,BERT 也誕生了。那么 BERT 這么好的效果能不能也用到 ASR 領域呢?vq-wav2vec 就做了一次有趣的嘗試。我們都知道 BERT 預訓練是為了得到每個詞豐富的向量表示,以致于在下游任務使用的時候只需要簡單的微調即可。vq-wav2vec 也借鑒了這一思想。其模型圖如下:
從左圖中可以看出,vq-wav2vec 模型整體上采用的結構與 CPC 和 wav2vec 相似,創新點在于提供了一種獲取全新的語音表征的方法。從圖中可以看出將原始語音樣本 x 編碼為特征表示 z,以及將 encoder network 的多個輸出 z 混合到單個 context 向量 c 中的操作和 wav2vec 一致。不同的地方在于將特征表示 z 轉換為 q 的過程,該過程是通過一個量化操作實現的。
右圖是整體語音識別任務的 pipeline 方法,通過左圖得到的離散表征可以類似 NLP 任務一樣輸入到 BERT 中,對 BERT 進行預訓練,最后應用到下游任務中。
為什么要進行量化操作呢?我們都知道在 NLP 領域中,通常以字為單位,而每個字都有屬于自己的獨立表示。但是在語音領域,并沒有像字這樣的劃分單位。因此為了能夠在語音領域也能使用到 NLP 領域的成果,作者引入了將連續表示離散化的量化操作。
具體來看,本文中的量化操作共有兩種:Gumble Softmax 和 K-means。因為二者都是可微的,從而可以讓模型的 loss 在訓練的時候不中斷。
上圖中左右兩個部分中的 e1 ... ev,就是所謂的碼本(可以理解為 BERT 中的詞表)。碼本中每個元素對應的向量是隨機初始化的,在訓練過程中不斷變化。
最后該方法的實驗結果如下所示, 這個算法在各種任務上的表現在當時基本都達到了 SOTA。:
本文主要的創新點在于將語音和 BERT 很好的結合到了一起,同時利用了 BERT 強大的信息捕捉能力達到了 SOTA。
總結
本文介紹了三篇論文,從最經典的 CPC到能夠將語音和 NLP 結合的 vq-wav2vec,第一篇文章比較適合新手去了解該領域,隨著了解的加深,可以在經典的模型基礎上嘗試不同的方法,可能會帶來不同的效果。最后一篇則是介紹跨領域結合的思路,相信還有很多特定領域的方法可以嘗試與 ASR 進行跨界融合。
語音預訓練和 NLP 中的預訓練最大的區別在于 NLP 中的預訓練的輸入可以是離散的 token,而語音預訓練的輸入則是連續的音頻。但是可以看出 ASR 領域的輸入形式和 NLP 類似,初期通常借助 CNN 將連續的變量離散化(CPC、wav2vec),逐漸演變成使用更加顯示的離散化方法(vq-wav2vec)。此外,ASR 通常使用 seq2seq 的模型結構,在生成的時候為了提高生成的數據質量,通常還會加入語言模型作為糾錯模塊等。
總之感覺語音方向還有很多坑可以繼續去填,也希望可以看到更多有意思的工作。
·
·
總結
以上是生活随笔為你收集整理的自动语音识别(ASR)自监督方法研究综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 业界首个高性能交互式自动标注工具EISe
- 下一篇: 意蜂蜂蜜啥时候采摘最好?