近期比较忙,

抽空出来5.1开源献礼.

但凡学习音频降噪算法的朋友,肯定看过一个算法.

<<语音增强-理论与实践>> 中提及到基于对数的最小均方误差的降噪算法,也就是LogMMSE.

资料见:

<<Speech enhancement using a minimum  mean-square error log-spectral amplitude estimator.>>

-----Ephraim, Y. and Malah, D. (1985)

之前也是花了不少时间去查阅降噪相关的思路,

但是最终发现前人的思路,有很多局限性或者说弊端.

一般都是提出一种数学先验的假设,换句话说,在paper里讲点故事.

然后最终,故事的结局都是it works.

但实际应用却差强人意.

而一般的图像降噪流程,见图:

也就是,一个降噪算法的基本组成部分有:

1.噪声提取(用于提取噪声)

2.静音检测(一般检测是否为人声,减少误判)

3.数学先验假设(用于降噪)

当然最小均方误差的降噪思路,用在图像上一样适用.

但是,大多数音频降噪算法仅仅适配某种特殊情况(特例).

工程化应用时,会发现,

一个坑接着一个坑,

然后不得不妥协.勉强能用就行,

要求太高不现实.

而当年看了logMMSE的思路之后,就很清楚地明白,

这思路是可行的,但是特别鸡肋.

话说如此,但是对作为学习信号处理,音频降噪来说,

这个是一个特别好的入门示例算法.

至少经过实践之后,你心中能有了个大概的印象.

音频降噪是一个什么样的工作,会碰到什么样的难点.

logmmse的各种实现,在github搜索一下,都能找得到.

这里,并不打算解析logmmse的算法细节.

只是分享一段非常简单有效的类似logmmse算法的c语言实现.

说是类似,不如说,

思路来自logmmse,只是更加的简洁明了.(自我以为)

自己动手,丰衣足食.

稍微改进一下,可以进一步适配各种环境和情况,

当然也不是那么容易,

例如:

+vad.

+延时记忆机制诸如此类

代码基于本人最近开源的基于傅里叶变换的重采样算法.

https://github.com/cpuimage/FFTResampler

题外话:

在之前为了找各种重采样算法,费心死了.

所以,写一个通用简洁的重采样算法是我的一个待办事项.

重采样算法算是暂时结束了.

https://github.com/cpuimage/resampler

https://github.com/cpuimage/FFTResampler

这两个平时应该是够用了,

下一步要继续做的话,

可能就是音频超分辨率算法了.

除了懒,没别的,能复用就复用了.

回到主题上,这个简易的算法用来去除平稳噪声或底噪,是非常合适的,

当然当前开源实现的算法,是非实时的,

当然稍微改进下可以应用在实时的环境.

值5.1放假之际,开源出来,给大家参考学习.

权当抛砖引玉,一起玩耍.

项目地址:

https://github.com/cpuimage/SimpleAudioDenoise

若有其他相关问题或者需求也可以邮件联系俺探讨。

当然一些基础性的问题,一概忽略.

有时间给我写邮件,不如多看点资料书籍.

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

一种简单高效的音频降噪算法示例(附完整C代码)的更多相关文章

  1. 简洁明了的插值音频重采样算法例子 (附完整C代码)

    近一段时间在图像算法以及音频算法之间来回游走. 经常有一些需求,需要将音频进行采样转码处理. 现有的知名开源库,诸如: webrtc , sox等, 代码阅读起来实在闹心. 而音频重采样其实也就是插值 ...

  2. 基于RNN的音频降噪算法 (附完整C代码)

    前几天无意间看到一个项目rnnoise. 项目地址: https://github.com/xiph/rnnoise 基于RNN的音频降噪算法. 采用的是 GRU/LSTM 模型. 阅读下训练代码,可 ...

  3. 基于傅里叶变换的音频重采样算法 (附完整c代码)

    前面有提到音频采样算法: WebRTC 音频采样算法 附完整C++示例代码 简洁明了的插值音频重采样算法例子 (附完整C代码) 近段时间有不少朋友给我写过邮件,说了一些他们使用的情况和问题. 坦白讲, ...

  4. 音频降噪算法 附完整C代码

    降噪是音频图像算法中的必不可少的. 目的肯定是让图片或语音 更加自然平滑,简而言之,美化. 图像算法和音频算法 都有其共通点. 图像是偏向 空间 处理,例如图片中的某个区域. 图像很多时候是以二维数据 ...

  5. 音频自动增益 与 静音检测 算法 附完整C代码

    前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用于评估一定长度音频的音量强度, 而分析之后,很多类似的需求,肯定是做音频增益,提高音量诸如此类做法. ...

  6. 音频自动增益 与 静音检测 算法 附完整C代码【转】

    转自:https://www.cnblogs.com/cpuimage/p/8908551.html 前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用 ...

  7. 七大查找算法(附C语言代码实现)

    来自:Poll的笔记 - 博客园 链接:http://www.cnblogs.com/maybe2030/p/4715035.html 阅读目录 1.顺序查找 2.二分查找 3.插值查找 4.斐波那契 ...

  8. 经典傅里叶算法小集合 附完整c代码

    前面写过关于傅里叶算法的应用例子. <基于傅里叶变换的音频重采样算法 (附完整c代码)> 当然也就是举个例子,主要是学习傅里叶变换. 这个重采样思路还有点瑕疵, 稍微改一下,就可以支持多通 ...

  9. 自动曝光修复算法 附完整C代码

    众所周知, 图像方面的3A算法有: AF自动对焦(Automatic Focus)自动对焦即调节摄像头焦距自动得到清晰的图像的过程 AE自动曝光(Automatic Exposure)自动曝光的是为了 ...

随机推荐

  1. tcl之控制流-for

  2. JZOJ 3521. 道路覆盖

    Description ar把一段凹凸不平的路分成了高度不同的N段,并用H[i]表示第i段高度.现在Tar一共有n种泥土可用,它们都能覆盖给定的连续的k个部分. 对于第i种泥土,它的价格为C[i],可 ...

  3. 实用jquery插件

    jquery toast 一个弹窗插件 jquery.form.min.js 一个Ajax表单插件

  4. 解答室内定位技术新方向:蓝牙AoA定位,值得了解 ——概念了解

    转载搜狐 室内定位一直被炒的非常火的黑科技,也是近年资本追逐的热点,市场上一直有众多宣称可以做到厘米级,米级精度定位的公司,但问题很多,无法大规模商用.近些年有很多人尝试使用蓝牙beacon方式做定位 ...

  5. 猴子吃桃问题 python

    猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第 ...

  6. Apache 设置二级域名

    开启重写模块 LoadModule rewrite_module modules/mod_rewrite.so 编辑配置 NameVirtualHost *:80 <VirtualHost *: ...

  7. tomcat7 配置 https安全访问

    在apache-tomcat-7.0.33-windows-x64.zip配置https,结果在配置SSL时遇到一些问题 1.用JDK自带的keytool来生成私有密钥和自签发的证书,如下: keyt ...

  8. 5,MongoDB 之 "$" 的奇妙用法

    在MongoDB中有一个非常神奇的符号 "$" "$"  在 update 中 加上关键字 就 变成了 修改器 其实 "$" 字符 独立出现 ...

  9. WPF里ItemsControl的分组实现

    我们在用到ItemsControl时,有时会用到分组,如ListBox,ListView,DataGrid.WPF的ItemsControl可以实现分组,是依托于GroupStyle,以ListBox ...

  10. 程序员必看:如何降低APP软件开发的成本?

    程序员必看:如何降低APP软件开发的成本? 作为一名曾经的程序猿,一直想写一点东西给大家分享一下,今天终于动笔了,写写我们在开发的过程中怎样才能更快更好的进行开发,降低app开发成本.无论是个人开发者 ...