WaveNet深度學習網絡-結構簡介


參考博文:https://www.jianshu.com/p/bb13ae73e427

聲明:轉載請聲明作者,並添加原文鏈接。

簡介

  WaveNet是probabilistic and autoregressive的生成,對每個預測的audio sample的分布都基於前面的前面的sample分布。在TTS的應用中,能達到state_of_art的效果,聽覺感受上優於parametric and concatenative的系統。同時系統還可以生成音樂,作為discriminative model對phoneme做識別。Wavenet模型是一種序列生成模型,可以用於語音生成建模。在語音合成的聲學模型建模中,Wavenet可以直接學習到采樣值序列的映射,因此具有很好的合成效果。目前wavenet在語音合成聲學模型建模,vocoder方面都有應用,在語音合成領域有很大的潛力。

  這篇博客主要解讀WaveNet 語音識別/合成算法。 這篇論文另辟蹊徑, 主要使用dilated casual CNN  而不是LSTM 去實現語音算法, 非常值得學習。 主要內容可以總結如下

1.    WaveNet 通用模型介紹, 不只是針對於語音模型

2.    WaveNet 實驗結果介紹

3.    實戰tensorflow WaveNet 的實驗過程, 實戰選擇的是 WaveNet ASR. 主要原因是ASR 的標注比較容易判斷, 而語音合成text-to-speech很不好判斷, 主要通過人工打分。

本文實戰代碼是 https://github.com/buriburisuri/speech-to-text-wavenet, WaveNet 論文是https://arxiv.org/pdf/1609.03499.pdf

WaveNet 模型

通用WaveNet

 

  

         Fig. 1 WaveNet 結構圖

  這里dilated casual convolution 翻譯成帶洞因果卷積。帶洞對應的就是dilated,  就是和普通卷積步長stride 不同,  stride會更大一些, 這樣關注的范圍 (receptive field)就變大了. casual 對應的就是因果,主要就是不要用未來的輸出/結果做當前的輸入。  這個方法對比RNN, 好處就是可以並行計算, 提高預測訓練速度。 但是這個方法還是有他本身的局限性。 在測試時,需要使用自回歸 當前的輸出語言當做輸入進行下一時刻的計算 (auto regressive) 限制了他的速度。下面這個圖, Fig. 2 解釋了自回歸的特點, 即當前的輸出會當做下一時刻的輸入進行計算。 

Fig.2 WaveNet 動態展示 (https://deepmind.com/blog/wavenet-generative-model-raw-audio/) 
      Fig. 3 多層帶洞卷積 WaveNet

  Fig. 3 這里介紹了多層的帶洞卷積wavenet. 這樣做的目的就是提高感受視野(receptive field). 比如Fig. 3的output, 就是基於16 個Input 產生的, 這樣感受視野會遠遠大於dilation =1 的多層網絡。 WaveNet 的文章里用的dilation 是1, 2, 4, …, 512, 1, 2, 4, …, 512, 1, 2, 4, …, 512, 這個相當於有30層帶洞卷積, 能關注的視野也就很大了。 具體計算,1,2,4,...512 需要有1024個輸入。 那么1024*3/(16*1000), 就能關注192ms的信息了, 對於16kHz 的聲音信號。 

      Fig.4 整體WaveNet 架構

  WaveNet的整體結構就如Fig. 4 所示, 其中包含了殘差連接,和gated activation unit.這個就是圖中的兩路, tanh 和sigmoid 的計算。 其他也沒什么復雜的啦。

Conditional WaveNet

    Gated activation unit

 

    Conditioned  gated activation unit

  前面講的都是WaveNet 的通用屬性,還沒涉及到text-to-speech 或者speech recognition.  文章這里加了個h, 就是用來加一些依賴關系。 比如添加聲音ID, 音樂器械的信息之類的。 對於text-to-speech, h 的信息就應該是 語音/語言特征值了。這里要說下, 由於使用了提前算好的特征值, WaveNet不是端到端的訓練。

WaveNet 實驗結果:

  WaveNet 這里的實驗結果是主觀測試, 判斷生成的生意是否聽起來自然。打分如下:

1: Bad, 2: Poor, 3: Fair, 4: Good, 5: Excellent。所以也就是算所有人打分的平均值啦。

實戰tensorflow WaveNet

  使用的代碼再次強調 https://github.com/buriburisuri/speech-to-text-wavenet

模型架構

    Fig. 5 WaveNet-ASR

  這里使用的是MFCC feature. MFCC  如果不了解, 讀者可以去學這個課。

https://nlp.stanford.edu/courses/lsa352/lsa352.lec6.6up.pdf

  CTC loss 在我以前的博客中有講解過。 

  整體的架構 就如Table, Layer 1, 2 就是front layer, 主要是全連接層+bn, 接下來Layer3-10 就是一個block, 這樣的block 有 15個。 這些block 的區別就是dilation 不同。 dialtion 會從1, 2, 4, 8, 16 這樣改變,重復三次, 就是15個block.

數據集

這個實驗使用的數據集是

TED-LIUM https://projets-lium.univ-lemans.fr/ted-lium/release2/https://projets-lium.univ-lemans.fr/ted-lium/release2/

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

VCTK http://homepages.inf.ed.ac.uk/jyamagis/page3/page58/page58.htmlhttp://homepages.inf.ed.ac.uk/jyamagis/page3/page58/page58.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM