如何使用python为wav文件添加噪音?

时间:2013-03-03 22:58:55

标签: python wav noise

我有一个干净的wav,还有一个包含预先产生的噪音的wav,我想将噪音添加到干净的wav文件中,以创建一个嘈杂的wav。

我看到here这可以通过matlab轻松完成。

如何用python完成?

1 个答案:

答案 0 :(得分:0)

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*),那么您可能需要尝试更复杂的事情。 (来自here

其他

如果data*数组的大小不同,您可以将最短的数组匹配到较长数组的子集:

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

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

或者你可以wrap最短的数组,以便它与最长的数组的长度匹配:

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

这些说明超出了您的问题范围。如果你有进一步的麻烦,你应该把它标记为已解决并打开一个新问题。