我有一个干净的 wav 和一个包含预先生成的噪声的 wav,我想将噪声添加到干净的 wav 文件中,以创建一个嘈杂的 wav。
我在这里看到这可以用matlab轻松完成。
这怎么能用python完成?
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
这些注释超出了您的问题范围。如果您还有其他问题,您可能应该将其标记为已解决并提出一个新问题。