CNN-for-single-channel-speech-enhancement icon indicating copy to clipboard operation
CNN-for-single-channel-speech-enhancement copied to clipboard

對於論文的理解和問題釐清

Open nerv3890 opened this issue 5 years ago • 2 comments

很棒的論文,先謝謝 zhr1201 大大的分享 想在這邊跟您確認我對這篇論文的理解是否正確 也有一些疑問想跟您請教,謝謝!

  1. 模型的架構 嘗試用了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的大小 不知這樣的理解是否正確?

  2. training過程 取 人聲+噪音 頻譜圖每個點 a+bi 的大小當作訓練特徵,也就是 (a^2+b^2)^0.5 當作訓練特徵 取 人聲 頻譜圖每個點 a'+b'i 的大小當作 label 特徵,也就是 (a'^2+b'^2)^0.5 當作label特徵 這樣的理解不知道是否正確?

  3. 實際上在testing時從頻譜圖轉回pcm的方法 輸入pcm轉頻譜圖得 a+bi,輸入特徵 y =(a^2+b^2)^0.5 y過model後得到的輸出特徵 y' 因相位沿用,最後得到的頻譜圖就是 (a+bi) * y' / y 再轉回pcm即是降噪後的輸出 不知這樣的理解是否正確?

  4. phase aware scaling 這一部分沒看很懂 看起來是為了在training過程中減少沿用相位的影響所以有了 sacling 但好奇的是在實際執行model時我們並沒有 clean voice 的角度可以用 這樣不就不能 scaling了?

  5. skip connection 我的理解是在training的過程中會用到,實際testing時則是拿掉 training時則是將
    conv1的輸出(還未過BN和relu)接到 conv10的輸入 conv2的輸出(還未過BN和relu)接到 conv9的輸入 以此類推 不知道這樣理解是否正確?

問了很多問題 先感謝zhr1201大大 謝謝您

nerv3890 avatar Nov 08 '19 10:11 nerv3890

你好, 很高兴你能喜欢。1. 正确 2.基本是这样,但是input和label取了log幅度3.正确4.抱歉我不记得phase aware scaling了。5.skip connection确实可以用,这份代码里我没有用。因为毕竟网络没有很深。但是当然只得试一试。另外test的时候,skip connection不能拿掉。

zhr1201 avatar Nov 08 '19 14:11 zhr1201

非常感謝您的回覆 真是快速

所以

出來的頻譜圖(a+bi)大小(abs(a+bi))您還特別去了log幅度 也就是 log(abs(a+bi))是嗎?

  1. 關於data的standardization 您的做法是,針對每一個 training data (1298) 和 label data (1291) 在頻譜圖(a+bi)上做 normalization 嗎? 還是說針對全部的資料來做? 感謝您的回答~

nerv3890 avatar Nov 11 '19 10:11 nerv3890