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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Chapter3-2_Speech Separation(TasNet)

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

文章目錄

  • 1 TasNet總體架構
  • 2 Encoder和Decoder
  • 3 Separator
  • 4 TasNet回顧
  • 5 More
    • 5.1 Unknown number of speakers
    • 5.2 Multiple microphones
    • 5.3 Visual information

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

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

文章索引:

上篇 - 3-1 Deep Clustering, PIT

下篇 - 4-1 Tacotron

總目錄

1 TasNet總體架構

TasNet的全程是Time-domain Audio Separation Network,它是一個可以end-to-end去train的一個網絡。整個網絡可以認為由三個部分組成,分別是Encoder,Separator和Decoder。Encoder相當于是一個Fourier Transformer,可以吃未經處理過的mixed audio原始聲音信號,然后吐出一個特征維度為512維的特征向量。Separator會吃這個特征向量,然后吐出兩個mask,這兩個mask再作用到encoder吐出的feature map上,得到兩個separated feature map。最后還有一個decoder,decoder吃這兩個feature map。吐出separated audio。

2 Encoder和Decoder

TasNet的Encoder和Decoder都是linear transformer,可以看成是兩個矩陣。Encoder的輸入是一個非常短的聲音訊號,只有16個samples,可以看作16維的向量,吐出的是一個512維的向量,Decoder的輸入是一個512維的向量,吐出的是一個16維的向量。我們可能會很直覺的認為Encoder里的線性變換和Decoder里的線性變換應該是inverse的,但實際情況是,做了這樣的限制之后,模型的效果并不好。對于Encoder而言,如果這個Encoder就是Fourier Transformer的話,那它的輸出應該都是正的。但是做了這樣的限制,效果也不好。

所以,就是不用做這些限制,直接train就行。

3 Separator

這個Separator是很多層dilated convolution的堆疊。它吃的是Encoder的輸出,會把這個輸出經過多個dilation不斷成倍增長的dilated convolution。最后對得到的結果做一個transform和sigmoid得到兩個mask。這個sigmoid可以不加,mask 1和mask 2中對應位置的元素之和也不需要是1。

實際情況下,這個dilated convolution是有很多層的,最后一層的dilation=128,也就是說有8層(27=1282^7=12827=128)。然后,這個過程一般會重復3次,這個repeat的次數是可以調整的超參數。這么做的目的就是,當Separator在輸出某個mask值的時候,看過足夠長的語音信號。比如下圖的這種結構,模型單個mask值的輸出會考慮1.53s長度的語音。由于用到的cnn太多了,其中還用到了Depthwise Separable Convolution的技術來輕量化模型。

在最初的時候,其實Separator用的是LSTM,但是為什么變成了CNN呢?原因就是訓練的時候,我們都是從句子的開頭開始放進LSTM去train的,這樣一來LSTM就沒法適應一句話從中間截斷送進來的情況,也就是說LSTM很傲嬌,剛開始看到的不是句子的開頭,就壞掉了。而CNN是time invariant的,它無所謂句子的開頭在哪里。從下圖中不難看出,總體的表現也是CNN更好。

4 TasNet回顧

我們再來回顧一下TasNet的整個架構。如下圖所示,圖中用的是一個真實的例子畫出來的圖像,紅色和藍色分別代表不同的speaker,可見TasNet學到的mask可以很好地把兩個speaker的聲音給分開來。對了,TasNet在train的時候要用上篇中提到的PIT的技巧。

最后再來看一下TasNet的效果究竟如何。下圖是Wavesplit這篇文章中對不同方法在WSJ0-2mix上結果的對比。不難看出TasNet比Deep Clustering要好很多。但是,在實際情況下,Deep Clustering的泛化能力會比TasNet要好。比如WSJ0-2mix是一個英文的數據集,TasNet在這個數據集上train了之后,給它說中文,它就搞不懂,但是Deep Clustering在這個數據集上train了之后可以把中文給Seperate了。這也是比較奇怪的地方。

5 More

上一篇,以及這篇講的只是Speech Separation中的滄海一粟,還有很多的東西可以講,這里再稍微拓展一下。

5.1 Unknown number of speakers

當我們不知道輸入的信號中有多少speakers的時候,Deep Clustering也許還可以嘗試一下調整一下cluster的個數,但TasNet就真的失效了。那當我們不知道speaker的個數的時候,該咋辦?下圖提供了一種思路,就是我們train一個network,這個network每次只分離出一個人的聲音,然后不斷循環下去,同時這個network還要神奇地知道我分到什么時候的時候,聲音中就剩下2個speakers了,它就可以停了。

5.2 Multiple microphones

當我們有多個麥克風的時候該怎么辦?其實我們現在使用的大部分設備都是多個麥克風的,用傳統的做法的話,有一些處理的技巧,但是用deep learning的話,就直接多輸入硬train一發就結束了。

5.3 Visual information

在視頻當中,我們還可以用到圖像的信息。Google有給出過這樣面的一個Demo,可見 Looking to Listen: Audio-Visual Speech Separation。大致的思想是在訓練的時候加入了人臉的信息,這樣的做法,就可以用PIT的訓練方式了。這里不做太多的介紹。

總結

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

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