python - 使用 Wav 文件进行卷积房间脉冲响应 (python)

标签 python audio signal-processing convolution acoustics

我编写了以下代码,该代码应该将回声放在可用的声音文件上。不幸的是,输出是一个非常嘈杂的结果,我不太明白。有人可以在这方面帮助我吗?有没有跳过的步骤?

#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/

相关文章:

python - 读取大文件并制作字典

java - Java麦克风TargetDataLine灵敏度/最大输入振幅

Python DSP,自动增益控制(AGC)

c# - MessageBoxIcon。播放声音有问题吗?

c# - 来自过滤器代码的音频点击/弹出

python - 测量两个不规则图之间的相似性

c++ - 分频波形

python - 将 unicode 字符串打印到控制台正常,但在重定向到文件时失败。怎么修?

python - 如何在 python 数据帧中的确定行之后添加一个空行?

python - 运行时错误: Disconnected graph for GANs because input can't be obtained