如何使用Python为wav文件添加噪声?

1 投票
1 回答
5772 浏览
提问于 2025-04-17 17:48

我有一个干净的wav文件,还有一个包含预先生成噪音的wav文件,我想把噪音加到干净的wav文件里,制作一个有噪音的wav文件。

我看到这里说用matlab可以很简单地做到这一点。

那用python怎么做呢?

1 个回答

1
import numpy as np
from scikits.audiolab import wavread, wavwrite

data1, fs1, enc1 = wavread("file1.wav")
data2, fs2, enc2 = wavread("file2.wav")

assert fs1 == fs2
assert enc1 == enc2
result = 0.5 * data1 + 0.5 * data2

wavwrite(result, 'result.wav')

不过,如果你的采样率(fs*)或编码方式(enc*)不同,那你可能需要尝试一些更复杂的方法。(来源于 这里

补充说明

如果你的 data* 数组大小不一样,你可以选择把较短的数组匹配到较长数组的一部分:

min_size = min(len(data1), len(data2))

result = 0.5 * data1[:min_size] + 0.5 * data2[:min_size]

或者你可以把较短的数组“包装”一下,让它的长度和较长的数组一样:

short, long = (data1, data2) if len(data1) < len(data2) else (data2, data1)
n = len(long) / len(short)
new_array = np.tile(short, n)

result = 0.5 * long[:n] * 0.5 * new_array

这些说明不在你问题的范围内。如果你还有其他问题,建议你把这个问题标记为已解决,然后再提一个新问题。

撰写回答