1
我有一個乾淨的WAV和一個包含預生成噪聲的WAV,我想將噪聲添加到乾淨的WAV文件中,以創建一個嘈雜的WAV。如何使用python將噪聲添加到wav文件?
我看到here這可以用matlab輕鬆完成。
這怎麼可以用python完成?
我有一個乾淨的WAV和一個包含預生成噪聲的WAV,我想將噪聲添加到乾淨的WAV文件中,以創建一個嘈雜的WAV。如何使用python將噪聲添加到wav文件?
我看到here這可以用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*
),那麼你可能需要嘗試更復雜的東西。 (從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
這些註釋超出了您的問題範圍。如果您還有其他麻煩,您應該將此標記爲已解決並開啓一個新問題。
這不起作用。 data1和data2的長度不一樣。所以我只採集數據[:100000],而我得到的結果是一個非常短的文件(400KB),其中包含非常緩慢的某個樣本。你可以自己嘗試一下,你會看到的。 – speller 2013-03-03 23:31:10
您可能需要驗證生成的波形文件是否具有正確的採樣率,字大小等。由於danodonovan的程序沒有明確設置這些參數,所以很可能它的默認值不是您想要的。 – sizzzzlerz 2013-03-03 23:55:05