留坑
概述
- 微信公眾號- 機器學習算法工程師:入門語音分離,從雞尾酒問題開始!
語音分離(Speech Separation),屬於盲源分離問題,來自於“雞尾酒會問題”。目的是從采集的觀測信號(包括目標語音和干擾語音/噪聲)中分離出目標語音。涉及到信號重構問題。
人類的聽覺系統是除了視覺系統以外最重要的感覺系統,具有多種聽覺功能,比如分辨聲音的方位和距離,感覺聲音的遠近變化,選擇性聆聽感興趣的聲音等。其中,選擇性聆聽就是人類聽覺能夠在嘈雜環境中正常交流的根本原因。1953年,Colin Cherry提出了著名的”雞尾酒會”問題:在嘈雜的室內環境中,比如在雞尾酒會中,同時存在着許多不同的聲源:多個人同時說話的聲音、餐具的碰撞聲、音樂聲以及這些聲音經牆壁和室內的物體反射所產生的反射聲等。在聲波的傳遞過程中,不同聲源所發出的聲波之間(不同人說話的聲音以及其他物體振動發出的聲音)以及直達聲和反射聲之間會在傳播介質(通常是空氣)中相疊加而 形成復雜的混合聲波。因此,在到達聽者外耳道的混合聲波中已經不存在獨立的與各個聲源相對應的聲波了。然而,在這種聲學環境下,聽者卻能夠在相當的程度上聽懂所注意的目標語句。
基於深度學習的方法及相關基礎概述,可參考以下內容:
- 雷鋒網分享/搜狗研究員講解基於深度學習的語音分離
- 騰訊雲/大象聲科分享如何利用深度學習實現單通道語音分離?
TasNet
TasNet(Time-domain Audio Separation Network)是時域的方法(直接輸入混合語音,不經過STFT等變化得到聲音特征),由編碼器、分離網絡、解碼組成,與頻域方法相比,編碼過程不是固定的而是網絡學到的(論文中認為對於語音而言STFT並不一定是最佳編碼方式,有兩點證實了此觀點,論文中對編碼器輸出增加非負的約束會使模型變差,對編解碼器增加互逆的關聯約束使模型變差,即同一信號經過編碼器再經過解碼器得到同一信號),通過分離網絡得到兩個mask,學到的mask與編碼器輸出相乘再經過解碼器得分離的聲音,訓練過程使用前文提到的PIT方法,編解碼器都是一維卷積(相當於全連接層線性變換),實驗結果展示幅度和相位信息都被編碼器學習到了特征之中。
編碼器Encoder實質上是一個線性變換,將16維輸入信號變為512維,這個變換過程相當於做匹配濾波,Encoder的512維的權重就是匹配濾波的權重。而解碼器是與編碼器相反的過程,將編碼器的512維的輸出和分離網絡輸出的mask的點乘結果作為輸入,做線性變換后得到分離的語音信號。在訓練過程中,編碼器和解碼器不一定是可逆的,不需要對編碼器和解碼器做額外要求。
TasNet的分離網絡與WaveNet相似,采用多層的CNN網絡,每一層都是卷積操作,涉及到的卷積主要包括因果卷積和空洞卷積(可以增大感受野,由於語音往往較長,空洞卷積和殘差連接是標配)。最后一層最后一個輸出經過sigmoid函數得到mask(0-1)矩陣,論文中認為對於輸出的mask不需要softmax來歸一化使得輸出和為1,模型可以自己學到,另外sigmoid也不是必須的,生成的mask可以為負值,不用加特殊限制。
TasNet核心工作:提出使用時域音頻分離網絡,即編碼器-解碼器框架直接在時域對信號建模,並在非負編碼器輸出上執行聲源分離。
STFT缺點 | TasNet特點 |
---|---|
1. 提出傅里葉分解並不一定是最優的語音分離信號變換 | 1. N個非負加權基礎信號表示混合語音波形 |
2. STFT將信號轉換為復數域,但不能很好的處理相位譜 | 2. 基礎信號的權重來自於編碼器輸出,基礎信號即解碼器的濾波器 |
3. 頻譜有效分率需要高頻率高分辨率,否則會產生時延 | 3. 估計權重(非負)可以表示為每個聲源對混合權重貢獻的掩模,類似於STFT中的T-F掩模 |
4. 解碼器學習后重建聲源波形 |
可以看出,借鑒了非負矩陣分解NMF的思想。
Conv-TasNet
- IEEE/ACM Transactions on Audio, Speech and Language Processing [SCI]錄用:Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation
- CSDN博客:【論文筆記之Conv-TasNet】: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation
- 知乎文章:TasNet & Conv-TasNet
Conv-TasNet是哥大的一名中國博士生Yi Luo提出的全卷積時域音頻分離網絡,一種端到端時域語音分離的深度學習框架。該框架解決了STFT域語音分離的缺點,包括相位和幅度的解耦,用於分離的混合音頻的次優表示以及計算STFT的高延遲。
Conv-TasNet使用線性編碼器來生成語音波形的表示形式,該波形針對分離單個音軌進行了優化。音軌的分離則是通過將一組加權函數(mask)用於編碼器輸出來實現,即將一組加權函數(掩碼)應用於編碼器的輸出來實現說話人分離。最后使用線性解碼器得到分離出的語音波形。
由卷積的一維擴張卷積塊組成的時域卷積網絡(TCN)計算mask,使網絡可以對語音信號的長期依賴性進行建模,同時保持較小的模型尺寸。
文章所提出的Conv-TasNet系統在分離兩個和三個說話人方面明顯優於以前的時頻掩蔽方法。此外,Conv-TasNet在兩個說話人的語音分離中超過了幾個理想的時頻幅度掩碼,這個結論是通過客觀失真測量和聽眾的主觀質量評估得出的。最后,Conv-TasNet具有較小的模型尺寸以及較短的最小延遲,這使其成為離線和實時語音分離的合適解決方案。
盡管TasNet在因果實現和非因果實現中都優於以前的時頻語音分離方法,但原始TasNet將深度長短時記憶(LSTM)網絡作為分離模塊會大大限制其適用性。第一,在編碼器中選擇較小的核大小(即波形段的長度)會增加編碼器輸出的長度,這使得LSTM的訓練變得難以管理。第二,深度LSTM網絡中的大量參數顯著增加了其計算成本,並限制了其在低資源、低功耗平台(例如可穿戴式聽力設備)中的適用性。文章將說明的第三個問題是LSTM網絡在時間上的長期依賴性,這經常導致分離准確性不一致,例如,當更改了混合信號的起點時。為了減輕TasNet的局限性,作者提出了全卷積TasNet(Conv-TasNet),該網絡在處理的所有階段均僅使用卷積層。受時間卷積網絡(TCN)模型成功的啟發,Conv-TasNet使用堆疊的膨脹一維卷積塊代替深層LSTM網絡進行分離。卷積的使用允許對連續幀或片段進行並行處理,從而大大加快了分離過程,並且還大大減小了模型大小。為了進一步減少參數量和計算成本,作者用深度可分離卷積替換了原始卷積運算。通過這些修改,Conv-TasNet的因果和非因果實現相比LSTM-TasNet在分離准確性上有很大提升。此外,Conv-TasNet的分離准確性在信噪比(SDR)和主觀(平均意見得分,MOS)度量方面都超過了理想時頻幅度掩碼的性能,包括理想二值掩碼(IBM)、理想比例掩碼(IRM)和類似於維納濾波器的掩碼(WFM)。
該框架解決了STFT域語音分離的缺點,包括相位和幅度的解耦,用於分離的混合音頻的次優表示以及計算STFT的高延遲。通過使用卷積編碼器-解碼器體系結構替代STFT來實現改進。 Conv-TasNet中的分離是使用時間卷積網絡(TCN)架構以及深度可分離的卷積運算來完成的,以應對深層LSTM網絡的挑戰。評估表明,即使使用目標說話人的理想時頻掩碼,Conv-TasNet的性能也遠勝於STFT語音分離系統。此外,Conv-TasNet具有更小的模型尺寸和更短的最小延遲,這使其適用於低資源,低延遲的應用程序。
全卷積時域音頻分離網絡(Conv-TasNet)由三個處理階段組成,如下圖所示:
上述流程圖分為:編碼器,分離和解碼器。首先,編碼器模塊將混合信號的短片段轉換為中間特征空間中的相應表示。然后,使用該表示來估計每個源的乘法函數(掩碼)。 最后,解碼器模塊通過轉換掩蔽之后的編碼器特征來重建源波形。
Conv-TasNet的一些局限性必須加以解決,然后才能實現,包括對說話人的長期跟蹤以及對嘈雜和混響環境的泛化。由於Conv-TasNet使用固定的時間上下文長度,因此對單個說話者的長期跟蹤可能會失敗,尤其是在混合音頻中有較長的停頓時。
TCN
時序/時間卷積網絡(Temporal convolutional network,TCN)
FCN與經典的CNN在卷積層之后使用全連接層得到固定長度的特征向量進行分類不同,FCN可以接受任意尺寸的輸入,采用卷積層對最后一個卷積層的feature map進行上采樣, 使它恢復到與輸入相同的尺寸,再進行預測。
TCN 的卷積層結合了擴張卷積與因果卷積兩種結構。使用因果卷積的目的是為了保證前面時間步的預測不會使用未來的信息,因為時間步 t 的輸出只會根據 t-1 及之前時間步上的卷積運算得出。
可以看出,TCN的卷積和普通的一維卷積非常類似,只不過最大的不同是用了擴張卷積,隨着層數越多,卷積窗口越大,卷積窗口中的空孔會越多。
值得一提的是在 TCN 的殘差模塊內有兩層擴張卷積和 ReLU 非線性函數,且卷積核的權重都經過了權重歸一化。此外TCN 在殘差模塊內的每個空洞卷積后都添加了 Dropout 以實現正則化。
論文中跳層連接時直接將下層的特征圖跳層連接到上層,這樣的話對應的通道數channel不一致,所以不能直接做加和操作。為了兩個層加和時特征圖數量,即通道數數量相同,作者通過用1×1卷積進行元素合並來保證兩個張量的形狀相同。
總結,時間卷積網絡是:同時用到一維因果卷積和擴張卷積作為標准卷積層,並將每兩個這樣的卷積層與恆等映射可以封裝為一個殘差模塊(包含了relu函數)。再由殘差模塊堆疊起深度網絡,並在最后幾層使用全卷積層代替全連接層。
優點 | 缺點 |
---|---|
(1)並行性。當給定一個句子時,TCN可以將句子並行的處理,而不需要像RNN那樣順序的處理。 | (1)TCN 在遷移學習方面可能沒有那么強的適應能力。在不同的領域,模型預測所需要的歷史信息量可能是不同的。因此,在將一個模型從一個對記憶信息需求量少的問題遷移到一個需要更長記憶的問題上時,TCN 可能會表現得很差,因為其感受野不夠大。 |
(2)靈活的感受野。TCN的感受野的大小受層數、卷積核大小、擴張系數等決定。可以根據不同的任務不同的特性靈活定制。 | (2)論文中描述的TCN是一種單向的結構,在ASR/TTS等任務上,純單向的結構相當有用的。但文本中大多使用雙向的結構,當然將TCN也很容易擴展成雙向的結構,不使用因果卷積,使用傳統的卷積結構即可。 |
(3)穩定的梯度。RNN經常存在梯度消失和梯度爆炸的問題,這主要是由不同時間段上共用參數導致的,和傳統卷積神經網絡一樣,TCN不太存在梯度消失和爆炸問題。 | (3)TCN是CNN的變種,雖然使用擴展卷積可以擴大感受野,但是仍然受到限制,相比於Transformer那種可以任意長度的相關信息都可以抓取到的特性還是差了點。 |
(4)內存更低。RNN在使用時需要將每步的信息都保存下來,這會占據大量的內存,TCN在一層里面卷積核是共享的,內存使用更低。 |
Demucs
Spleeter等基於頻域的分離技術框架,由於要計算頻譜,存在着延遲較長的缺點。雖然之前也有一些對聲音波形進行處理的方法,但實際效果與頻域處理方法相差甚遠。
Facebook AI研究院提供了兩種波形域方法的PyTorch實現,分別是Demucs和Conv-Tasnet,而且測試結果均優於其他常見的頻域方法。其中Demucs是Facebook人工智能研究院在今年9月提出的弱監督訓練模型,基於受Wave-U-Net和SING啟發的U-Net卷積架構。
與之前的Wave-U-Net相比,Demucs的創新之處在於編碼器和解碼器中的GLU激活函數,以及其中的雙向LSTM和倍增的通道數量。
Spleeter
- CSDN博客:Spleeter工具簡單分析
- 微信公眾號-雷岳甡@青榴實驗室:伴奏提取福音,人聲分離框架Spleeter (qq.com)
伴奏提取神器。僅支持64位計算機系統。基於python開發。
法國音樂流媒體公司Deezer開源的音軌分離軟件spleeter,該項目於2019年年中左右發布於github(源地址deezer/spleeter),屬於代碼交互的機器學習軟件,能將音樂的人聲和各種樂器聲分離,最多支持分離成人聲、鼓、貝斯、鋼琴、其他共5部分(但實踐中通常建議只分為2軌,即伴奏+人聲)。
從功能上,目前預訓練模型為2stems(分離出人聲/伴奏),4stems(分離出人聲/伴奏/鼓/貝斯/其他),5stems(人聲/鼓/貝斯/鋼琴/其他)。性能上,按照spleeter的官網解釋,4stems在使用GPU加速的情況下可以達到100s長度的音樂1s分離完成。從效果上來看,spleeter的各項指標均優於目前的其他開源模型。
spleeter基於頻域進行音軌分離。其網絡結構中,每條音軌對應着一個unet網絡結構。2stems對應着兩個unet,4stems對應4個unet網絡。unet的網絡輸入為音頻幅度譜,輸出為某條音軌的幅度譜。訓練時損失函數為計算出音軌的幅度譜與標准幅度譜的L1距離。預測時稍有不同,通過多條音軌的幅度譜計算出每條音軌占據輸入音頻的能量比例,即每條音軌的mask,通過輸入音頻頻譜乘以mask得到各個音軌的輸出頻譜,計算得到wav。
spleeter訓練時的一組數據為(音樂,伴奏,人聲),要求三者在時間軸上盡量完全一致,提取三者頻譜並計算出幅度譜。將音樂幅度譜分別輸入到人聲U-Net和伴奏U-Net中,得到預測的人聲U-Net和伴奏U-Net,分別計算預測結果和標准結果的距離並取均值。其中伴奏U-Net和人聲U-Net內部參數會隨着數據輸入不斷更新。
預測過程沒有標准的人聲和伴奏,只有混合后的音樂。當預測出伴奏和人聲的幅度譜之后,Spleeter將兩者分別進行平方,得到人聲能量Engv和伴奏能量Enga,然后使用Maskv = Engv/( Engv +Enga)計算出每個時刻人聲在各個頻段音樂的占比,同時使用Maska= Enga /( Engv +Enga)計算出每個時刻伴奏在各個頻段音樂的占比。利用輸入的音樂頻譜分別乘以Maskv和Maska得到人聲和伴奏頻譜,最后使用ISTFT得到人聲和伴奏的WAV音頻文件。
團子
- 官網:人工智能提取伴奏人聲
團子主要由基於MIT協議的開源項目Spleeter制作的,同時在其之上增加了一些功能魔改使效率與音質得到提升。團子是一款在線的音頻分離軟件,團子開放平台也因此誕生,其目標是使第三方開發者和項目可以快速的對接、使用團子的服務。
團子是基於深度神經網絡(DNN)實現的音軌分離所誕生的人工智能,它使用Python/Tensorflow開發。
Speakerfilter-Pro
2020年投遞至ICASSP 2021。
This paper proposes a target speaker extractor, where WaveUNet, CRN, and BGRU-GCNN are used for time-domain feature enhancer, speech separator, and speaker feature extractor, respectively. By leveraging the time-domain modeling ability of WaveUNet and the frequency-domain modeling ability of the CRN, the target speaker can be tracked well.
SpEx
SpEx+: A Complete Time Domain Speaker Extraction Network (researchgate.net)
SpEx+:一個完整的時域說話人提取網絡 - 知乎 (zhihu.com)
Wave-U-Net
[1806.03185] Wave-U-Net: A Multi-Scale Neural Network for End-to-End Audio Source Separation (arxiv.org)
一種用於端到端音頻分離的多尺度神經網絡-CSDN博客
2018年提出的一種用於端到端音頻源分離的多尺度神經網絡,時域。
Wave-U-Net,這是對U-Net體系結構的一維調整,它可以在時域中直接分離源,並且可以考慮大的時間上下文。