Audio Super Resolution with Neural Networks
論文:Audio Super Resolution with Neural Networks
代碼: Github
CV方向的超分辨研究已經(jīng)非常多了,但是音頻方向的超分辨研究卻相對(duì)較少。作者的這篇文章就是開(kāi)山之作,已經(jīng)發(fā)表在ICLR2017上,從項(xiàng)目主頁(yè)的Demo來(lái)看,效果還不錯(cuò)。但是作者也指出了幾個(gè)問(wèn)題:
- 如果想把這個(gè)模型用在自己的數(shù)據(jù)上,需要多搜集一些自己的數(shù)據(jù)訓(xùn)練,意思就是換個(gè)數(shù)據(jù)集可能就不好使了,畢竟每個(gè)數(shù)據(jù)集有一些差別
- 作者的低分辨率音頻是通過(guò)低通濾波下采樣得到的,所以對(duì)于不同的低通濾波方式,算法產(chǎn)生的效果差別就很大。如果是你自己的低分辨率音頻,你根本不知道這個(gè)音頻是哪種低通濾波產(chǎn)生的,所以效果可能會(huì)打折扣
- 如果是用人聲訓(xùn)練出來(lái)的模型,應(yīng)用到鋼琴,音樂(lè)上,效果就會(huì)很差
總體思想
輸入低分辨率的音頻時(shí)間序列,訓(xùn)練一個(gè)Encoder-Decoder模型,輸出高分辨率的音頻時(shí)間序列。思路和CV的超分辨其實(shí)差不多。就是在低分辨率音頻信號(hào)中插入高分辨細(xì)節(jié)。
網(wǎng)絡(luò)結(jié)構(gòu)如下:
左邊輸入的是原始低分辨率的音頻信號(hào),通過(guò)B個(gè)下采樣的Blocks(每次下采樣,feature map維度減半,濾波器大小翻倍),然后再通過(guò)B個(gè)上采樣Blocks(每次上采樣,feature map維度擴(kuò)大一倍,濾波器大小減小一半)。底層特征通常對(duì)應(yīng)wavelet-style features, 高層特征對(duì)應(yīng)phonemes。每個(gè)Block的結(jié)構(gòu)如下:
其中,上采樣的Block和下采樣對(duì)應(yīng)的Block還使用Skip Connection。上采樣的DimShuffle是借鑒Subpixel shuffling layer。
還有,作者輸入的音頻信號(hào)到底是以什么樣的形式輸入的?
結(jié)合源代碼和論文發(fā)現(xiàn),作者首先把一段音頻時(shí)間序列(就是一維數(shù)組,每個(gè)數(shù)組元素代表時(shí)間維度上的幅值,這里有個(gè)介紹音頻信號(hào)的入門(mén)文章)進(jìn)行下采樣(下采樣方式:先進(jìn)行8階切比雪夫?yàn)V波器濾波,然后降采樣,然后插值上采樣。這樣就保證了低分辨率音頻序列和高分辨長(zhǎng)度一致。總之和圖像數(shù)據(jù)超分辨的處理方式差不多),這樣就得到了低分辨音頻序列,而高分辨音頻序列就是下采樣之前的序列。這樣就有了訓(xùn)練樣本對(duì),整個(gè)模型就可以訓(xùn)練起來(lái)了。
實(shí)驗(yàn)結(jié)果
下圖是作者的實(shí)驗(yàn)結(jié)果,最左邊是參考的頻譜圖,左二是輸入,左三是插值算法的結(jié)果,左四是作者的結(jié)果??梢钥闯?,作者的方法確實(shí)較好的恢復(fù)了高頻信息。
總結(jié)
- 根據(jù)SNR,LSD兩個(gè)評(píng)價(jià)指標(biāo)來(lái)看,效果不錯(cuò)。不過(guò)在領(lǐng)域遷移方面,以及降采樣方式適應(yīng)方面,效果不好。應(yīng)用場(chǎng)景十分受限
- 可以實(shí)時(shí),處理1s的音頻只需要0.11s。而且不同于seq2seq任務(wù),超分辨不需要等所有上下文輸完才進(jìn)行處理
- 作者實(shí)驗(yàn)發(fā)現(xiàn),skip connection,residual connection很重要
讀完這篇論文的整體感覺(jué)就是很簡(jiǎn)單粗暴,就像超分辨的開(kāi)山之作一樣,也許好用的方法總是簡(jiǎn)單的!最起碼,在事后看起來(lái)是那么簡(jiǎn)單!