CNN-for-single-channel-speech-enhancement
CNN-for-single-channel-speech-enhancement copied to clipboard
對於論文的理解和問題釐清
很棒的論文,先謝謝 zhr1201 大大的分享 想在這邊跟您確認我對這篇論文的理解是否正確 也有一些疑問想跟您請教,謝謝!
-
模型的架構 嘗試用了R-CED(10層conv)的架構來搭網路 (我是用pytorch filter width 的部分可以看到conv10是129 (在論文最後一頁 由於網路中間每一層 conv-BN-relu 的輸出都是129x1 的大小 所以在conv10的filter width是129的情況下 (一開始看到這filter想說也太長...129 XD 應該是 129x1 上下各 padding 64左右,這樣最後conv10的輸出才會是129x1的大小 不知這樣的理解是否正確?
-
training過程 取 人聲+噪音 頻譜圖每個點 a+bi 的大小當作訓練特徵,也就是 (a^2+b^2)^0.5 當作訓練特徵 取 人聲 頻譜圖每個點 a'+b'i 的大小當作 label 特徵,也就是 (a'^2+b'^2)^0.5 當作label特徵 這樣的理解不知道是否正確?
-
實際上在testing時從頻譜圖轉回pcm的方法 輸入pcm轉頻譜圖得 a+bi,輸入特徵 y =(a^2+b^2)^0.5 y過model後得到的輸出特徵 y' 因相位沿用,最後得到的頻譜圖就是 (a+bi) * y' / y 再轉回pcm即是降噪後的輸出 不知這樣的理解是否正確?
-
phase aware scaling 這一部分沒看很懂 看起來是為了在training過程中減少沿用相位的影響所以有了 sacling 但好奇的是在實際執行model時我們並沒有 clean voice 的角度可以用 這樣不就不能 scaling了?
-
skip connection 我的理解是在training的過程中會用到,實際testing時則是拿掉 training時則是將
conv1的輸出(還未過BN和relu)接到 conv10的輸入 conv2的輸出(還未過BN和relu)接到 conv9的輸入 以此類推 不知道這樣理解是否正確?
問了很多問題 先感謝zhr1201大大 謝謝您
你好, 很高兴你能喜欢。1. 正确 2.基本是这样,但是input和label取了log幅度3.正确4.抱歉我不记得phase aware scaling了。5.skip connection确实可以用,这份代码里我没有用。因为毕竟网络没有很深。但是当然只得试一试。另外test的时候,skip connection不能拿掉。
非常感謝您的回覆 真是快速
所以
出來的頻譜圖(a+bi)大小(abs(a+bi))您還特別去了log幅度 也就是 log(abs(a+bi))是嗎?
- 關於data的standardization 您的做法是,針對每一個 training data (1298) 和 label data (1291) 在頻譜圖(a+bi)上做 normalization 嗎? 還是說針對全部的資料來做? 感謝您的回答~