语音增强相关技术综述
1 非監(jiān)督語(yǔ)音增強(qiáng)技術(shù)
2 監(jiān)督語(yǔ)音增強(qiáng)技術(shù)
3 github上提供的源代碼及分析
3.1 Dual-signal Transformation LSTM Network
簡(jiǎn)介
https://github.com/breizhn/DTLN
- 用于實(shí)時(shí)噪聲抑制的堆疊雙信號(hào)變換 LSTM 網(wǎng)絡(luò) (DTLN) 的 Tensorflow 2.x 實(shí)現(xiàn)。
- 這個(gè)存儲(chǔ)庫(kù)提供了在 python 中訓(xùn)練、推斷和服務(wù) DTLN 模型的代碼。 它還提供了 SavedModel、TF-lite 和 ONNX 格式的預(yù)訓(xùn)練模型,可用作您自己項(xiàng)目的基線。 該模型能夠在 RaspberryPi 上以實(shí)時(shí)音頻運(yùn)行。
- 如果你正在用這個(gè) repo 做很酷的事情,請(qǐng)告訴我。 我總是很好奇你用這段代碼或這個(gè)模型做什么。
DTLN 模型被提交給深度噪聲抑制挑戰(zhàn)(DNS-Challenge),論文在 Interspeech 2020 上發(fā)表。
該方法在參數(shù)少于一百萬(wàn)的堆疊網(wǎng)絡(luò)方法中結(jié)合了短時(shí)傅立葉變換 (STFT) 及學(xué)習(xí)分析和合成基礎(chǔ)。該模型接受了挑戰(zhàn)組織者提供的 500 小時(shí)嘈雜語(yǔ)音的訓(xùn)練。 該網(wǎng)絡(luò)能夠?qū)崟r(shí)處理(一幀輸入,一幀輸出)并達(dá)到有競(jìng)爭(zhēng)力的結(jié)果。結(jié)合這兩種類型的信號(hào)變換,DTLN 能夠從幅度譜中穩(wěn)健地提取信息,并從學(xué)習(xí)到的特征基礎(chǔ)中結(jié)合相位信息。 該方法顯示了最先進(jìn)的性能,并且在平均意見得分 (MOS) 方面絕對(duì)優(yōu)于 DNS-Challenge 基線 0.24 分。
有關(guān)更多信息,請(qǐng)參閱論文。 DNS-Challenge 的結(jié)果在此處發(fā)布。 在實(shí)時(shí)賽道上,我們?cè)?17 支球隊(duì)中獲得了競(jìng)爭(zhēng)激烈的第 8 名。
我們的實(shí)驗(yàn)
目前主要實(shí)驗(yàn)了DTLN模型對(duì)音頻進(jìn)行降噪處理之后,對(duì)于識(shí)別準(zhǔn)確率的影響。我分別使用該模型對(duì)之前劃分的高質(zhì)量和低質(zhì)量音頻以及不做劃分的音頻進(jìn)行降噪處理,處理后的音頻測(cè)試結(jié)果如下:
| 無(wú)劃分 | 0.5699 | 0.5054 |
| 高質(zhì)量 | 0.7241 | 0.6207 |
| 低質(zhì)量 | 0.3143 | 0.1429 |
從表格中可以得出,使用DTLN模型對(duì)音頻進(jìn)行降噪之后,無(wú)論是針對(duì)高質(zhì)量好還是低質(zhì)量音頻又或者是原始音頻都會(huì)使準(zhǔn)確率下降。
接下來(lái)還會(huì)繼續(xù)調(diào)研其它降噪模型以及語(yǔ)音增強(qiáng)的方法。
3.2 Speech Enhancement based on DNN (TF-Masking, Spectral-Mapping), DNN-NMF, NMF
NMF based SE
非負(fù)矩陣分解 (NMF) 可用于從混合數(shù)據(jù)中分離目標(biāo)源。 所有源的基矩陣是通過(guò)連接各個(gè)源的基矩陣來(lái)構(gòu)建的,以便基矩陣和編碼矩陣的相應(yīng)部分的乘積成為分離的目標(biāo)源。
DNN-NMF based SE
在 DNN-NMF 模型 [1] 中,使用深度神經(jīng)網(wǎng)絡(luò) (DNN) 來(lái)估計(jì)編碼向量,以提高具有源子空間重疊的目標(biāo)數(shù)據(jù)提取算法的性能。
DNN based SE
使用DNN的語(yǔ)音增強(qiáng)主要有兩組,即基于掩碼的模型(TF-Masking)[2]和基于映射的模型(Spectral-Mapping)[3]。 TF-Masking 模型描述了干凈語(yǔ)音與背景干擾的時(shí)頻關(guān)系,而頻譜映射模型對(duì)應(yīng)于干凈語(yǔ)音的頻譜表示 [2]。
Statistical model based SE
https://github.com/eesungkim/Speech_Enhancement_MMSE-STSA
Implementations
- Settings
Sampling Rate : 16kHz
512-point Hamming window with 75% overlap. - Dataset
干凈的語(yǔ)音數(shù)據(jù)取自 TIMIT 數(shù)據(jù)庫(kù)。 我們?yōu)橛?xùn)練集選擇了 62 個(gè)話語(yǔ),為測(cè)試集選擇了 10 個(gè)話語(yǔ)。 完整的 TIMIT 數(shù)據(jù)集將進(jìn)一步增強(qiáng) PESQ 性能。 NOISEX-92 數(shù)據(jù)庫(kù)中的工廠、雜音、機(jī)槍噪聲用于訓(xùn)練和測(cè)試。
來(lái)自 5 位男性和 5 位女性演講者的 10 句話用于績(jī)效評(píng)估。 所有模型都經(jīng)過(guò) 3 種類型(工廠、嗡嗡聲、機(jī)槍)噪聲的訓(xùn)練,這些噪聲匯集在一起,以檢查所提出的算法是否可以同時(shí)學(xué)習(xí)各種類型的源特征。
References
[1] T. G. Kang, K. Kwon, J. W. Shin, and N. S. Kim, “NMF-based target source separation using deep neural network,” IEEE Signal Processing Letters, vol. 22, no. 2, pp. 229-233, Feb. 2015.
[2] Wang, DeLiang, and Jitong Chen. “Supervised speech separation based on deep learning: An overview.” IEEE/ACM Transactions on Audio, Speech, and Language Processing (2018).
[3] Xu, Yong, et al. “A regression approach to speech enhancement based on deep neural networks.” IEEE/ACM Transactions on Audio, Speech and Language Processing, Jan. 2015.
3.3 Speech-enhancement with Deep learning
簡(jiǎn)介
該項(xiàng)目旨在構(gòu)建語(yǔ)音增強(qiáng)系統(tǒng)以減弱環(huán)境噪聲。
音頻有許多不同的表示方式,從原始時(shí)間序列到時(shí)頻分解。 表示的選擇對(duì)于系統(tǒng)的性能至關(guān)重要。 在時(shí)頻分解中,頻譜圖已被證明是音頻處理的有用表示。 它們包括表示以時(shí)間和頻率為軸的短時(shí)傅立葉變換 (STFT) 序列的 2D 圖像,以及表示每個(gè)時(shí)間幀頻率分量強(qiáng)度的亮度。 在這種情況下,它們似乎是將 CNNS 架構(gòu)直接應(yīng)用于聲音的自然領(lǐng)域。 在幅度譜圖和相位譜圖之間,幅度譜圖包含信號(hào)的大部分結(jié)構(gòu)。 相位譜圖似乎只顯示出很少的時(shí)間和光譜規(guī)律。
在這個(gè)項(xiàng)目中,我將使用幅度譜圖作為聲音的表示(參見下圖),以預(yù)測(cè)要減去噪聲語(yǔ)音譜圖的噪聲模型。
該項(xiàng)目分解為三種模式:數(shù)據(jù)創(chuàng)建、訓(xùn)練和預(yù)測(cè)。
準(zhǔn)備數(shù)據(jù)
為了創(chuàng)建訓(xùn)練數(shù)據(jù)集,我收集了來(lái)自不同來(lái)源的英語(yǔ)語(yǔ)音干凈的聲音和環(huán)境噪聲。
干凈的聲音主要來(lái)自 LibriSpeech:一個(gè)基于公共領(lǐng)域有聲讀物的 ASR 語(yǔ)料庫(kù)。 我也使用了一些來(lái)自 SiSec 的數(shù)據(jù)。 環(huán)境噪聲來(lái)自 ESC-50 數(shù)據(jù)集或 https://www.ee.columbia.edu/~dpwe/sounds/。
在這個(gè)項(xiàng)目中,我專注于 10 類環(huán)境噪音:滴答聲、腳步聲、鈴鐺、手鋸、鬧鐘、煙花、昆蟲、刷牙、吸塵器和打鼾。 這些類如下圖所示(我使用來(lái)自 https://unsplash.com 的圖片創(chuàng)建了此圖像)。
為了創(chuàng)建用于訓(xùn)練/驗(yàn)證/測(cè)試的數(shù)據(jù)集,音頻以 8kHz 采樣,我提取的窗口略高于 1 秒。 我對(duì)環(huán)境噪聲進(jìn)行了一些數(shù)據(jù)增強(qiáng)(在不同時(shí)間取窗口會(huì)產(chǎn)生不同的噪聲窗口)。 噪音已經(jīng)混合到干凈的聲音中,噪音水平隨機(jī)化(20% 到 80%)。 最后,訓(xùn)練數(shù)據(jù)包括 10 小時(shí)嘈雜的聲音和干凈的聲音,以及 1 小時(shí)的聲音驗(yàn)證數(shù)據(jù)。
為了準(zhǔn)備數(shù)據(jù),我建議在與代碼文件夾分開的位置創(chuàng)建 data/Train 和 data/Test 文件夾。 然后創(chuàng)建以下結(jié)構(gòu),如下圖所示:
您將相應(yīng)地修改 noise_dir、voice_dir、path_save_spectrogram、path_save_time_serie 和 path_save_sound 路徑名稱到采用程序默認(rèn)參數(shù)的 args.py 文件中。
將您的噪音音頻文件放入noise_dir 目錄,將您干凈的語(yǔ)音文件放入voice_dir。
在 args.py 中指定要?jiǎng)?chuàng)建為 nb_samples 的幀數(shù)(或?qū)⑵渥鳛閰?shù)從終端傳遞)我默認(rèn)情況下讓 nb_samples=50 用于演示,但對(duì)于生產(chǎn),我建議使用 40 000 或更多。
然后運(yùn)行 ??python main.py --mode=‘data_creation’。這將隨機(jī)混合來(lái)自 voice_dir 的一些干凈的聲音和來(lái)自 noise_dir 的一些噪音,并將嘈雜的聲音、噪音和干凈的聲音的頻譜圖以及復(fù)雜的相位、時(shí)間序列和聲音保存到磁盤(用于 QC 或測(cè)試其他網(wǎng)絡(luò))。它采用 args.py 中定義的輸入?yún)?shù)。 STFT、幀長(zhǎng)度、hop_length 的參數(shù)可以在 args.py 中修改(或?qū)⑵渥鳛閰?shù)從終端傳遞),但使用默認(rèn)參數(shù),每個(gè)窗口將轉(zhuǎn)換為大小為 128 x 128 的頻譜圖矩陣。
用于訓(xùn)練的數(shù)據(jù)集將是嘈雜聲音的幅度譜圖和干凈聲音的幅度譜圖。
訓(xùn)練
用于訓(xùn)練的模型是 U-Net,一種具有對(duì)稱跳過(guò)連接的深度卷積自動(dòng)編碼器。 U-Net 最初是為生物醫(yī)學(xué)圖像分割而開發(fā)的。 在這里,U-Net 已經(jīng)適應(yīng)去噪頻譜圖。
作為網(wǎng)絡(luò)的輸入,嘈雜聲音的幅度譜圖。 作為輸出模型的噪聲(嘈雜的語(yǔ)音幅度譜圖 - 干凈的語(yǔ)音幅度譜圖)。 輸入和輸出矩陣都使用全局縮放進(jìn)行縮放,以映射到 -1 和 1 之間的分布。
在訓(xùn)練期間測(cè)試了許多配置。對(duì)于首選配置,編碼器由 10 個(gè)卷積層組成(使用 LeakyReLU、maxpooling 和 dropout)。解碼器是具有跳躍連接的對(duì)稱擴(kuò)展路徑。最后一個(gè)激活層是一個(gè)雙曲正切 (tanh),輸出分布在 -1 和 1 之間。為了從頭開始訓(xùn)練,初始隨機(jī)權(quán)重設(shè)置為 He 法線初始化器。
模型使用 Adam 優(yōu)化器編譯,使用的損失函數(shù)是 Huber 損失,作為 L1 和 L2 損失之間的折衷。
在現(xiàn)代 GPU 上訓(xùn)練需要幾個(gè)小時(shí)。
如果您的本地計(jì)算機(jī)中有用于深度學(xué)習(xí)計(jì)算的 GPU,則可以使用以下命令進(jìn)行訓(xùn)練:python main.py --mode=“training”。它采用 args.py 中定義的輸入?yún)?shù)。默認(rèn)情況下,它將從頭開始訓(xùn)練(您可以通過(guò)將 training_from_scratch 設(shè)置為 false 來(lái)更改此設(shè)置)。您可以從 weights_folder 和 name_model 中指定的預(yù)訓(xùn)練權(quán)重開始訓(xùn)練。我讓可用的 model_unet.h5 帶有我在 ./weights 中訓(xùn)練的權(quán)重。 epochs 和 batch_size 指定訓(xùn)練的 epoch 數(shù)和批大小。最佳權(quán)重在訓(xùn)練期間自動(dòng)保存為 model_best.h5。您可以調(diào)用 fit_generator 在訓(xùn)練時(shí)僅將部分?jǐn)?shù)據(jù)加載到磁盤。
就個(gè)人而言,我使用 Google colab 提供的免費(fèi) G??PU 進(jìn)行訓(xùn)練。我在 ./colab/Train_denoise.ipynb 放了一個(gè)筆記本示例。如果您的驅(qū)動(dòng)器上有很大的可用空間,您可以將所有訓(xùn)練數(shù)據(jù)加載到驅(qū)動(dòng)器,并在訓(xùn)練時(shí)使用 tensorflow.keras 的 fit_generator 選項(xiàng)加載其中的一部分。就我個(gè)人而言,我的 Google 驅(qū)動(dòng)器上的可用空間有限,因此我預(yù)先準(zhǔn)備了 5Gb 的高級(jí)批次以加載到驅(qū)動(dòng)器進(jìn)行培訓(xùn)。定期保存重量并為下一次訓(xùn)練重新加載。
最后,我獲得了 0.002129 的訓(xùn)練損失和 0.002406 的驗(yàn)證損失。在其中一次訓(xùn)練中制作的損失圖下方。
預(yù)測(cè)
對(duì)于預(yù)測(cè),嘈雜的語(yǔ)音音頻被轉(zhuǎn)換為略高于 1 秒的 numpy 時(shí)間序列窗口。 每個(gè)時(shí)間序列通過(guò) STFT 變換轉(zhuǎn)換為幅度譜圖和相位譜圖。 嘈雜的語(yǔ)音頻譜圖被傳遞到 U-Net 網(wǎng)絡(luò),該網(wǎng)絡(luò)將預(yù)測(cè)每個(gè)窗口的噪聲模型(參見下圖)。 使用經(jīng)典 CPU,一旦轉(zhuǎn)換為幅度譜圖,一個(gè)窗口的預(yù)測(cè)時(shí)間約為 80 毫秒。
然后從嘈雜的語(yǔ)音頻譜圖中減去模型(這里我應(yīng)用了直接減法,因?yàn)樗阋酝瓿晌业娜蝿?wù),我們可以想象訓(xùn)練第二個(gè)網(wǎng)絡(luò)來(lái)適應(yīng)噪聲模型,或應(yīng)用匹配濾波器,例如在信號(hào)處理中執(zhí)行的 )。 “去噪”幅度譜圖與初始相位相結(jié)合,作為逆短時(shí)傅立葉變換 (ITFT) 的輸入。 然后可以將我們的降噪時(shí)間序列轉(zhuǎn)換為音頻(參見下圖)。
讓我們來(lái)看看在驗(yàn)證數(shù)據(jù)上的表現(xiàn)!
下面我展示了一些來(lái)自警報(bào)/昆蟲/吸塵器/鈴鐺噪聲的驗(yàn)證示例的結(jié)果。 對(duì)于它們中的每一個(gè),我都顯示了初始的嘈雜語(yǔ)音頻譜圖、網(wǎng)絡(luò)預(yù)測(cè)的去噪頻譜圖以及真正干凈的語(yǔ)音頻譜圖。 我們可以看到,該網(wǎng)絡(luò)能夠很好地概括噪聲建模,并生成略微平滑的語(yǔ)音頻譜圖,非常接近真正的干凈語(yǔ)音頻譜圖。
更多關(guān)于驗(yàn)證數(shù)據(jù)的頻譜圖降噪示例顯示在存儲(chǔ)庫(kù)頂部的初始 gif 中。
References
Jansson, Andreas, Eric J. Humphrey, Nicola Montecchio, Rachel M. Bittner, Aparna Kumar and Tillman Weyde.Singing Voice Separation with Deep U-Net Convolutional Networks. ISMIR (2017).
https://ejhumphrey.com/assets/pdf/jansson2017singing.pdf
Grais, Emad M. and Plumbley, Mark D., Single Channel Audio Source Separation using Convolutional Denoising Autoencoders (2017).
https://arxiv.org/abs/1703.08019
Ronneberger O., Fischer P., Brox T. (2015) U-Net: Convolutional Networks for Biomedical Image Segmentation. In: Navab N., Hornegger J., Wells W., Frangi A. (eds) Medical Image Computing and Computer-Assisted Intervention – MICCAI 2015. MICCAI 2015. Lecture Notes in Computer Science, vol 9351. Springer, Cham
https://arxiv.org/abs/1505.04597
K. J. Piczak. ESC: Dataset for Environmental Sound Classification. Proceedings of the 23rd Annual ACM Conference on Multimedia, Brisbane, Australia, 2015.
DOI: http://dx.doi.org/10.1145/2733373.2806390
總結(jié)
以上是生活随笔為你收集整理的语音增强相关技术综述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 这些有笑点的故事,只有程序员才能get
- 下一篇: (pytorch-深度学习)使用pyto