中文語者分離(分割)

Chinese Speech Separation (Speaker Separation)

從多個聲音信號中提取出目標信號;多個說話人情況的語音辨識問題,比如雞尾酒會上很多人講話

那些語音處理 (Speech Processing) 踩的坑
中文語音識別中文語音增強(去噪)中文語者識別

https://github.com/Deep-Learning-101

https://huggingface.co/DeepLearning101

投入約150天如同語音踩的坑來說,比較常碰到因為網路架構在做參數調整時導致loss壞掉等等,而因數據集造成的問題少很多,網路上也比較容易找到更多的數據集,然後也有非常多的比賽有各種模型架構的結果可以參考,但是一樣是英文數據,而語音坑最好的就是只要有了像是 aishell 等的數據集,你想要切割或合併成一個語音,都不是太大的問題;例如我們就是把數據集打散混合,再從中隨機挑選兩個人,然後再從中分別挑出語音做混合;如是長度不同,選擇短者為參考,將長者切到與短者相同;最後產出約 train: 5萬多筆,約 32小時、val:1萬多筆語音,約10小時、test:9,千多筆語音,約 6小時,而這個數據集是兩兩完全重疊,後來為了處理兩兩互不完全重疊,再次另外產出了這樣的數據集:train:9萬多筆語音,計112小時、val:2萬多筆語音,計 26.3 小時、test:2萬多筆語音,計 29.4 小時。

中間也意外發現了Google brain 的 wavesplit,在有噪音及兩個人同時講話情形下,感覺效果還不差,但沒找到相關的code,未能進一步驗證或是嘗試更改數據集。還有又是那位有一起用餐之緣的深度學習大神 Yann LeCun繼發文介紹 完去噪後,又發文介紹了語音分離;後來還有像是最早應用在NLP的Transformer等Dual-path RNN (DP-RNN) 或 DPT-NET (Dual-path transformer) 等應用在語音增強/分割,另外VoiceFilter、TasNet 跟 Conv-TasNet還有sudo-rm等等也是語音分割相關,當然更不能錯過臺大電機李宏毅老師一篇SSL-pretraining-separation的論文 (務必看完臺大電機李宏毅老師的影片),最後也是多虧李老師及第一作者黃同學的解惑,然後小夥伴們才又更深入的確認並且解決問題。

這裡做數據時相對簡單一點,直接打散混合,再從中隨機挑選兩個人,然後分別挑出語音做混合,若長度不同,選擇短者為參考,將長者切到與短者相同,兩兩完全重疊或者兩兩互不完全重疊等都對效果有不小的影響;同時也研究了Data Parallel 跟 Distributed Data Parallel 的差異,但是如何才能在 CPU 上跑得又快又準才是落地的關鍵

Dual-Path Transformer Network: Direct Context-Aware Modeling for End-to-End Monaural Speech Separation

不考慮重疊情況下的語音切割

Unbounded Interleaved-State Recurrent Neural Network (UIS-RNN):https://github.com/google/uis-rnn

58 同城

優點:

缺點:

VoiceFilter

VoiceFilter-Lite

使用 Mask 訓練的方式將一段聲音轉換為二個(或多個)聲音。

TasNet & Conv-TasNet

VoiceFilter: Targeted Voice Separation by Speaker-Conditioned Spectrogram Masking

優點:

缺點: