音频算法之我思
很长一段时间,扎根在音频领域,各种玩耍。
渐渐上了轨道。
一切的一切仅仅因为相信自己能做好,也必须做好。
不懂就去查,去问,去找资料,去找视频。
渐渐的,我开始懂了,也慢慢有了系统性的理解。
随后经常能发散思维。
最近,
在自动增益,
音频降噪,
语速检测,
相位谱重建各个算法之间穿梭。
慢慢有所产出,有所突破。
特别是在音频降噪领域,
不能算质的飞跃,
但是确实摸到了一些规律。
而写完相位谱重建算法之后,
我也突发奇想,
相位谱既然能通过高斯分布的思路进行重建,
那是不是可以说明,
高斯分布可以用来作为音频算法的信号标准化,归一化。
这是一个值得去研究的方向,
音频信号的高斯归一化。
前面面试了一家公司的时候,
提到说音频通过能量谱可以重建相位谱,
那面试官好像认定我是傻子,
就好像觉得我是在胡扯一样。
真的懒得解释,
实操是验证真理的唯一标准。
而语速检测,
其实有点类似音乐的节拍检测,
只不过一定要去除空白帧,
因为空白从另一个角度来说,
可以认为是停顿,或者说换气。
所以语速检测的思路也可以基本确认。
而自动增益方面,
找资料的时候发现一个神奇的标准,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