音频加噪 python
时间: 2025-02-22 22:29:26 浏览: 43
### 使用 Python 对音频文件添加噪声
对于向音频文件中添加噪声的需求,可以采用不同的方法来实现这一功能。下面介绍一种基于均匀分布的Musa噪声的方法[^1]:
```python
import numpy as np
import soundfile as sf
def add_musa_noise(audio_path, output_path, noise_strength):
# 读取音频文件
audio, sample_rate = sf.read(audio_path)
# 生成 Musa 噪声
noise = np.random.uniform(-1, 1, len(audio)) * noise_strength
# 将噪声添加到音频信号上
noisy_audio = audio + noise
# 保存带噪声的音频文件
sf.write(output_path, noisy_audio, sample_rate)
# 示例用法
add_musa_noise('input.wav', 'output_with_uniform_noise.wav', 0.1)
```
另一种常见的做法是通过引入高斯白噪声并控制其强度以达到特定信噪比(SNR),这种方法更贴近实际应用场景中的需求[^2][^3]:
```python
import numpy as np
import soundfile as sf
def add_gaussian_noise_with_snr(audio_path, output_path, target_snr_db):
# 加载原始音频数据
audio, sample_rate = sf.read(audio_path)
# 计算原声音频的能量均方根值(RMS)
rms_clean = np.sqrt(np.mean(audio ** 2))
# 根据目标 SNR dB 和干净音频 RMS 来决定所需噪声水平
desired_rms_ratio = 10 ** (-target_snr_db / 20.)
# 创建零均值正态分布随机数作为噪声源
noise = np.random.normal(0., scale=desired_rms_ratio*rms_clean, size=len(audio))
# 合成带有新噪声层的声音片段
noised_signal = audio + noise
# 输出处理后的音频至指定路径
sf.write(output_path, noised_signal, sample_rate)
# 应用实例
add_gaussian_noise_with_snr('clean_input.wav', 'noisy_output.wav', 20)
```
上述两种方式分别展示了如何利用不同类型的概率密度函数——均匀分布与标准正态分布——去构建人工合成的背景噪音,并将其叠加于输入音轨之上。
阅读全文
相关推荐
















