我编写了以下代码,该代码应该将回声放在可用的声音文件上。不幸的是,输出是一个非常嘈杂的结果,我不太明白。有人可以在这方面帮助我吗?有没有跳过的步骤?
#convolving a room impulse response function with a sound sample both of stereo type
from scipy.io import wavfile
inp=wavfile.read(sound_path+sound_file_name)
IR=wavfile.read(IR_path+IR_file_name)
if inp[0]!=IR[0]:
print "Size mismatch"
sys.exit(-1)
else:
rate=inp[0]
print sound_file_name
out_0=fftconvolve(inp[1][:,1],IR[1][:,0])
out_1=fftconvolve(inp[1][:,1],IR[1][:,1])
in_counter+=1
out=np.vstack((out_0,out_1)).T
out[:inp[1].shape[0]]=out[:inp[1].shape[0]]+inp[1]
wavfile.write(sound_path+sound_file_name+'_echoed.wav',rate,out)
最佳答案
向声音文件添加回声就是这样...添加回声。您的代码看起来并不像是将两个声音添加在一起;而是将两个声音添加到一起。看起来它正在将输入声音转换成其他声音。
您的数据流应如下所示:
source sound ------------------------------>|
| + ----------> target sound
---------> convolution echo --------->|
请注意,您的回声将比原始声音更长(即它有一个“尾部”。)
将两个声音添加在一起只需将两个声音中的每个单独样本添加在一起即可产生新的输出波。我认为 vstack
不会这样做。
关于python - 使用 Wav 文件进行卷积房间脉冲响应 (python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026242/