ToB企服应用市场:ToB评测及商务社交产业平台
标题:
音频文件降噪及python示例
[打印本页]
作者:
农妇山泉一亩田
时间:
2024-7-20 19:50
标题:
音频文件降噪及python示例
操作体系 :Windows 10_x64
Python版本:3.9.2
noisereduce版本:3.0.2
从事音频相关工作,大概率会碰到降噪问题,本日整理下之前学习音频文件降噪的笔记,并提供Audacity和python示例。
我将从以下几个方面展开:
noisereduce库先容
使用Audacity进行降噪
使用fft滤波降噪
使用noisereduce进行降噪
运行效果截图及视频
配套资源下载
一、noisereduce库先容
pypi地址:
https://pypi.org/project/noisereduce/
GitHub地址:
https://github.com/timsainb/noisereduce
安装命令:
pip install noisereduce
复制代码
noisereduce库用于音频降噪,支持稳态降噪和非稳态降噪,大致先容如下:
其中稳态降噪基于(并不完全是)Audacity的降噪算法,降噪Audacity效果可通过体验,对应的C++实现如下:
https://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cpp
如果链接打不开,可从文末提供的渠道获取该文件。
Audacity的降噪算法需要两个输入:1) 带噪音的音频数据;2) 噪音特性音频数据;
其核心思绪是通过fft在频域进行滤波处置惩罚并还原,具体实现建议阅读源码。
非稳定降噪算法是稳态降噪算法的扩展,但允许噪声门随时间变化。
二、噪音文件预备
Audacity版本:3.1.3
这里使用Audacity进行噪音文件的天生,如果不相识Audacity软件,可参考这篇文章:
https://www.cnblogs.com/MikeZhang/p/audacity2022022.html
1、天生鼓点音轨,模仿正常音频
这里使用鼓点模仿正常音频,具体如下:
2、天生噪音音轨
选择菜单“天生-》噪音”选项,这里选择“白噪音”,振幅选择0.1:
3、合并音轨并导出文件
选中两个音轨,然后混音:
如果想直接使用导出的混音文件(mix1.wav),可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20240720 获取。
三、降噪示例
这里首先描述下怎样使用Audacity进行降噪,其中,Audacity降噪是完全操作层面的事情,不涉及编写代码;进一步的,会提供怎样使用fft进行滤波降噪的示例,主要是模仿稳态降噪算法(并不完全是);末了,会提供怎样使用noisereduce进行降噪的示例。
1、使用Audacity进行降噪
1) 选中噪音特性数据
2) 获取噪音特性数据
3) 选中需要降噪的原始音频,执行降噪操作
降噪后的效果如下:
使用Audacity进行降噪的过程及效果视频,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2024072001 获取。
2、使用fft滤波降噪
傅立叶变更是可逆的,在频域中对信号所做的任何更改都将在将其变更回时域时应用。可使用这一点来过滤音频并去除高频,进而实现降噪,固然该方法仅适用于高频噪音。
直接在频域进行过滤,大致流程如下:
1) 加载混音文件(mix1.wav),使用fft获取频域数据;
2) 加载噪音文件(noise1.wav),使用fft获取频域数据;
3) 在频域进行滤波;
4) 进行ifft逆变更;
5) 导出降噪后的文件;
示例如下(fftTest1.py):
完备源码可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20240720 获取。运行效果如下:
使用fft进行降噪的运行效果视频,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2024072002 获取。
3、使用noisereduce进行降噪
3.1 使用非标准降噪
直接使用noisereduce库进行操作,示例如下(nrTest1.py):
from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = wavfile.read("mix1.wav")
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate)
wavfile.write("clean_nr1.wav", rate, reduced_noise)
复制代码
运行效果如下:
使用noisereduce库进行降噪的运行效果视频,可从如下渠道获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2024072003 获取。
3.2 使用标准降噪
也可以使用标准降噪,提取音频特性文件后过滤,示例如下:
from scipy.io import wavfile
import noisereduce as nr
# load data
rate, data = wavfile.read("mix1.wav")
_, noise_data = wavfile.read("noise1.wav")
# perform noise reduction
reduced_noise = nr.reduce_noise(y=data, sr=rate,
y_noise =noise_data,
stationary = True, # this should be true
#sigmoid_slope_nonstationary = 50,
)
wavfile.write("clean_nr2.wav", rate, reduced_noise)
复制代码
运行效果如下:
三、资源下载
本文涉及源码及相关文件,可以从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 20240720 获取。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4