1

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

我在这里看到这可以用matlab轻松完成。

这怎么能用python完成?

4

1 回答 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]

或者您可以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

这些注释超出了您的问题范围。如果您还有其他问题,您可能应该将其标记为已解决并提出一个新问题。

于 2013-03-03T23:01:57.750 回答