【分享开源】语音降噪算法
哈喽,已经有好久没有跟大家分享一些东西了,刚好看到论坛坛友问了一些问题,就想着本次分享一些,语音降噪的 东西吧。一开始从事无线通信系统这块的项目的时候,走了很多坎坷的道路。从基础的语音采集和转换,到链路的搭建和实现。一步一个坎慢慢下来,虽然现在也还是很多坎,不过慢慢来。(进入正题)
本次分享的算法是:Melpe里面的 降噪部分,这个算法对 机械噪音,白噪音效果较好。Melpe本身是语音编解码算法,但是它自带了一个降噪的算法,测试效果也不错。
分享2个工程,一个是原始工程,原始工程是直接在 win32上面的,然后如果直接移植到 arm上运行效率很低,然后对一些函数做了一些优化,用arm的dsp库。
使用方法也很简单,详细看下图:
最重要是看效果。
原始波形:
带噪音音频波形:
降噪之后的波形:
分享以上,感兴趣的朋友可以自己看一下具体的实现流程。
强{:8:} eric2013 发表于 2023-10-17 15:17
强
{:6:} TI之前的工程师太强了,算法几十年都效果这么好。 顶一个 感谢分享,试试效果。。。 在pc上处理了下,不知道啥问题,看起来不太对。:'( 131202110 发表于 2023-10-30 18:32
在pc上处理了下,不知道啥问题,看起来不太对。
你用的是什么工程哇,vs 工程吗,vs工程可以直接打开的运行的。我看现象应该是 数据的 输入大小不对。
我忘了说 一些参数了:
1. 输入语音采样率必须是 8K、单声道。16bit以内,如果是32bit可以缩方到16bit.
2. NoiseSuppression 函数输入的 语音 数组是 22.5ms帧,换算过来就是 180个采样sample。加上是16bit的,那么输入的数据大小必须是 180 * 2Byte = 360 Byte.如果输入数据不对就会转换成你这样。
由崎星空 发表于 2023-11-1 13:48
你用的是什么工程哇,vs 工程吗,vs工程可以直接打开的运行的。我看现象应该是 数据的 输入大小不对。
...
使用vs工程,输入语音采样率8k,单声道,uint8_t转成int16_t,180个数据处理一次。 131202110 发表于 2023-11-6 13:50
使用vs工程,输入语音采样率8k,单声道,uint8_t转成int16_t,180个数据处理一次。
你发来我看看是不是处理的不对 vs工程+wav语音 131202110 发表于 2023-11-7 14:28
vs工程+wav语音
看了你改的内容了,你的wav文件格式是8bit的。需要放大到16bit.因为你是直接把 8bit赋值到了16bitd数组里面,其实实际上这个值会变成很小,因为你默认的wav是8bit的,但是处理的是16bit,它的滤波器会把你的赋值较低的部分给删除掉,因此你看起来你的波形有很大区别,这样也会音质受损。
建议:把8bit转成16bit在处理。可以直接把数据源文件转为16bit。
记录一下 学习了
页:
[1]