日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Chapter4-1_Speech_Synthesis(Tacotron)

發布時間:2024/7/5 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Chapter4-1_Speech_Synthesis(Tacotron) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1 TTS before End-to-end
  • 2 Tacotron
    • 2.1 Encoder
    • 2.2 Attention
    • 2.3 Decoder
    • 2.4 Post processing
  • 3 How good is Tacotron?

本文為李弘毅老師【Speech Synthesis - Tacotron】的課程筆記,課程視頻youtube地址,點這里👈(需翻墻)。

下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權,必定刪除。

文章索引:

上篇 - 3-2 Deep Clustering, PIT

下篇 - 4-2 More than Tacotron

總目錄

1 TTS before End-to-end

我們現在的TTS(Text-to-Speech)都是end-to-end的神經網絡,那么,在沒有end-to-end之前,TTS是怎么做的呢?李老師在這里簡單介紹了幾個技術,最老的可以追溯到1939年。這里來看一下最接近end-to-end的Deep Voice,其他的有興趣可以直接看李老師的視頻,這里就不介紹了。

Deep Voice其實就是四個神經網絡分別train好之后合在一起的模型。首先text會進入一個Grapheme-to-phoneme的模型,把書寫的基本單元轉化為發音的基本單元。然后這個phoneme會進入一個Duriation Prediction的模型,輸出每個phoneme的發音時長是多少。同時這個phoneme也會進入一個叫做Fundamental Frequency Prediction的模型,用來輸出每個phoneme的發音音調是怎樣的。最后有一個模型,同時接收phoneme,發音時長和音調,然后輸出合成的語音。

2 Tacotron

Tacotron在17年和18年都有發表論文,是一個end-to-end的語音合成模型。它的輸入是character,輸出是 (linear) spectrogram,spectrogram和真正的語音之差一個phase的信息,所以可以說是end-to-end的模型了。Tacotron中的Taco就是墨西哥料理中的Taco,作者們應該是一群吃貨,在論文的注釋中還特別注釋了哪些人喜歡吃Taco,哪些人喜歡吃壽司。

Tacotron的整體結構如下圖所示,可以分為Encoder,Attention,Decoder和Postprocessing四個部分。下面將對每個部分分別介紹。

2.1 Encoder

Encoder就是類似于講Grapheme轉化為phoneme的東西。首先輸入的文本會經過一層embedding,然后經過一個由全連接+dropout組成的Pre-net,接著經過一個叫做CBHG的模塊,最后輸出一串sequence。這個CBHG是一個有點復雜的東西,李老師在這里沒有細講,就是幾句話帶過。總之,就是輸入一個sequence,吐出一個sequence。

在第二版的encoder當中,CBHG就被砍掉了,所以這其實也就是一個可有可無的東西,這也是李老師不做過多介紹的原因之一。第二版的encoder結構如下圖所示。

2.2 Attention

這里的Attention就是正常的Attention,如果不知道Attention的原理的話,可以參考我的這篇博客。這里attention的作用其實就很像是預測每個phoneme的duration。輸入的文字和輸出的語音在時間上其實是有一種對應關系的,下圖中縱坐標表示的是encoder steps,橫坐標表示decoder steps,中間的這幅圖就是attention的大小,如果學出來像是左圖這樣的一條斜直線的話,就說明學的比較好,如果學出來像右圖這樣的話,就說明沒學好。

2.3 Decoder

Decoder就是一個會經過Pre-net且有Attention的RNN,不過每個time step的輸出都會有3個或者多個sequence,因為一個phoneme對應的語音是比較長的。不過這里還有一個額外的model,用來判斷這個RNN在這個time step是否可以結束了。

2.4 Post processing

decoder輸出的sequence會再丟到一個CBHG里去,可以把CBHG想象成一大堆的CNN,然后再輸出一個sequence。需要這個post processing的原因是,decoder產生的每個time step的輸出是依賴于前一個time step的輸出的,所以如果錯了就沒法修正了,加一個CBHG就是給模型一個修正的機會。最后的loss會結合decoder輸出和Mel-spectrogram的偏差,以及CBHG輸出和Mel-spectrogram的偏差。最終Inference的時候,我們用的是CBHG的輸出。

當然這個輸出不是語音,還需要一個額外的Vocoder才行,但這個Vocoder是單獨train好的,這里不多做介紹。

有一點需要指出的是,Tacotron在Inference的時候,是需要加Dropout的,不然輸出會壞掉~

3 How good is Tacotron?

再來看一下Tacotron的效果如何。這里用到的評價指標叫做mean opinion score。這個就是找一堆人,來聽聲音打分,分數為1分到5分的整數,1分最低,5分最高,覺得聲音越真實,打分就可以越高。話說這個其實和歷史模型做比較,就有點不太靠譜,不同人的主觀感受是不太一樣的。

結果就是第一版的Tacotron分數一般,但是第二版的Tactron就逼近ground truth了。

兩個版本的最大差異,其實是在vocoder這里。用了WaveNet之后,分數直線飆升。

總結

以上是生活随笔為你收集整理的Chapter4-1_Speech_Synthesis(Tacotron)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。