在 Python 中对录音进行去除背景噪音处理可以借助不同的库来实现,以下为你详细介绍使用 pydub 和 noisereduce 这两个库的具体方法。
方法一:使用 pydub 和 noisereduce 库noisereduce 是一个专门用于降噪的 Python 库,而 pydub 可以帮助我们读取和保存音频文件。
安装依赖库pip install pydub noisereduce numpy scipy示例代码
import numpy as np
from pydub import AudioSegment
import noisereduce as nr
import soundfile as sf
def reduce_noise(input_file, output_file):
# 读取音频文件
audio = AudioSegment.from_file(input_file)
# 将音频转换为 numpy 数组
audio_data = np.array(audio.get_array_of_samples())
sample_rate = audio.frame_rate
# 提取前 1 秒的音频作为噪声样本(假设前 1 秒是纯噪音)
noise_data = audio_data[:sample_rate]
# 进行降噪处理
reduced_noise = nr.reduce_noise(y=audio_data, sr=sample_rate, noise_clip=noise_data)
# 将处理后的 numpy 数组转换回 AudioSegment 对象
audio_out = AudioSegment(
reduced_noise.tobytes(),
frame_rate=sample_rate,
sample_width=audio.sample_width,
channels=audio.channels
)
# 保存处理后的音频文件
audio_out.export(output_file, format="wav")
# 使用示例
input_file = "input.wav"
output_file = "output.wav"
reduce_noise(input_file, output_file) 代码解释读取音频文件:利用 pydub 的 AudioSegment.from_file 方法读取输入的音频文件。转换为 numpy 数组:把音频数据转换为 numpy 数组,这样就能使用 noisereduce 库进行处理。提取噪声样本:假设音频的前 1 秒是纯噪音,将这部分音频数据提取出来作为噪声样本。降噪处理:调用 noisereduce 的 reduce_noise 方法,传入音频数据、采样率和噪声样本,得到降噪后的音频数据。保存处理后的音频:将处理后的 numpy 数组转换回 AudioSegment 对象,然后使用 export 方法保存为新的音频文件。方法二:使用 librosa 和 noisereduce 库librosa 是一个强大的音频处理库,同样可以和 noisereduce 配合使用进行降噪。
安装依赖库pip install librosa noisereduce soundfile示例代码
import librosa
import noisereduce as nr
import soundfile as sf
def reduce_noise_librosa(input_file, output_file):
# 读取音频文件
audio, sr = librosa.load(input_file, sr=None)
# 提取前 1 秒的音频作为噪声样本(假设前 1 秒是纯噪音)
noise = audio[:sr]
# 进行降噪处理
reduced_noise = nr.reduce_noise(y=audio, sr=sr, noise_clip=noise)
# 保存处理后的音频文件
sf.write(output_file, reduced_noise, sr)
# 使用示例
input_file = "input.wav"
output_file = "output.wav"
reduce_noise_librosa(input_file, output_file) 代码解释读取音频文件:使用 librosa.load 方法读取输入的音频文件,同时获取音频数据和采样率。提取噪声样本:同样假设音频的前 1 秒是纯噪音,将这部分音频数据提取出来作为噪声样本。降噪处理:调用 noisereduce 的 reduce_noise 方法进行降噪。保存处理后的音频:使用 soundfile.write 方法将处理后的音频数据保存为新的音频文件。通过以上两种方法,你可以在 Python 中对录音进行去除背景噪音处理。需要注意的是,不同的音频文件和噪音情况可能需要调整降噪参数以获得更好的效果。
网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


