音頻算法之我思

很長一段時間,紮根在音頻領域,各類玩耍。java

漸漸上了軌道。linux

一切的一切僅僅由於相信本身能作好,也必須作好。git

不懂就去查,去問,去找資料,去找視頻。github

漸漸的,我開始懂了,也慢慢有了系統性的理解。面試

隨後常常能發散思惟。算法

最近,性能

在自動增益,學習

音頻降噪,優化

語速檢測,ui

相位譜重建各個算法之間穿梭。

慢慢有所產出,有所突破。

特別是在音頻降噪領域,

不能算質的飛躍,

可是確實摸到了一些規律。

而寫完相位譜重建算法以後,

我也突發奇想,

相位譜既然能經過高斯分佈的思路進行重建,

那是否是能夠說明,

高斯分佈能夠用來做爲音頻算法的信號標準化,歸一化。

這是一個值得去研究的方向,

音頻信號的高斯歸一化。

前面面試了一家公司的時候,

提到說音頻經過能量譜能夠重建相位譜,

那面試官好像認定我是傻子,

就好像以爲我是在胡扯同樣。

真的懶得解釋,

實操是驗證真理的惟一標準。

而語速檢測,

其實有點相似音樂的節拍檢測,

只不過必定要去除空白幀,

由於空白從另外一個角度來講,

能夠認爲是停頓,或者說換氣。

因此語速檢測的思路也能夠基本確認。

而自動增益方面,

找資料的時候發現一個神奇的標準,EBU R128,

這裏就不科普展開了,感興趣的能夠維基一下。

這個算法在FFMPEG裏面有很詳細的實現,

摳出來算法代碼,直接應用,

效果不要太好。

近期,終於回到廣東,

在南京接受了太多的負能量,回來以後真的有得到新生的感受。

世界頓時和平。

相對於深度學習而言,

我仍是比較堅持採用傳統算法去實現降噪增益等處理,

緣由也很簡單,音頻時效性特別重要。

採用深度學習不少時候要作大量的工做才能保證時效性了,

從軟件,硬件的角度來講,音頻不比圖像好處理。

天然挑戰也多了起來,

不過慶幸的是,

在傻逼同樣的堅持以後,

不採用深度學習方案的音頻降噪,

終於達到近乎能夠商用的程度了。

固然最近也在思考算法的下一步優化方案。

繼續驗證思路,繼續改良。

這裏放出linux系統下的可執行文件,供你們評測。

下載地址:https://files.cnblogs.com/files/cpuimage/denoise.zip

解壓後採用命令行: ./denoise sample.wav 

執行後生成降噪後的文件sample_out.wav

如今是自適應降噪強度,

降噪後自動作增益(2018.1.11移除自動增益),

後續計劃加上降噪的強度控制。

噪聲樣本自行尋覓,

比較好找。就不提供了。

在音頻這條路上,

若是我走偏了,你們記得把我拉回來。

 

2018.11.3 補充:

最近在看一些語音加強的算法,找點思路或者說靈感。

不知道是否是我理解有問題,

我發現一些老外作的算法,

存在一些算法邏輯上很繞的問題,

我總有種感受,他們對傅里葉變換理解得不夠深入,

仍是說數學學得很差。

昨晚上一直在理解一份java版本的音頻降噪開源代碼,

看得我一陣蒙圈,

地址是:https://github.com/alexanderchiu/AudioProcessor

做爲學習音頻加強降噪算法,的確是一份相對而言邏輯比較清晰的實現了。

這代碼你們仔細看完必定會跟我有同樣的感覺,就是邏輯思路很繞。

有種雜交水稻的感受,算法效果還能夠。

2018.12.1更新:

優化算法效果,再次減小計算量,提高性能,

而且支持多通道wav。

 

固然如有其餘相關問題或者需求也能夠郵件聯繫俺探討。

郵箱地址是: gaozhihan@vip.qq.com

相關文章
相關標籤/搜索