【问题标题】:How to add a ratio parameter to scipy signal convolution in Python?如何在 Python 中为 scipy 信号卷积添加比率参数?
【发布时间】:2020-02-09 05:15:26
【问题描述】:

我正在研究 Python 中的卷积混响和使用 scipy 的卷积 convolve 方法效果很好。但是当我尝试添加一个比率属性来控制总和信号中应该有多少混响时它不起作用:

import numpy as np
from scipy import signal

def addReverb(data, ir_data, ratio=1.0):
    verb = np.multiply(ir_data, ratio)
    verbed_data = signal.convolve(data, verb, method='fft')
    return verbed_data

我确保两个信号(干数据和脉冲响应)具有相同的采样率。如何控制干信号与室内信号的比例?

【问题讨论】:

  • 似乎最好说使用“addReverb”创建的信号将被视为总湿信号,并且应该通过它自己的比率在另一种方法中添加到干信号中,例如: 混合信号 = 干信号 + 比率 * 湿信号

标签: python-3.x audio scipy signal-processing convolution


【解决方案1】:

您可以得到您通过乘法后加入verb[0]+=(1.0-ratio)问什么了。 P>

这不是如何混响的作品,虽然。你的应用比例将使得混响更安静,但他们将持续一样长。在现实世界中,“少混响”是指该混响将更快地消失。 P>

您也许可以做更好的东西听起来是这样的: P>

def addReverb(data, ir_data, ratio=1.0):
    verb = np.abs(ir_data)
    verb = np.multiply(verb, 1.0/np.max(verb)) # make sure the highest value is 1
    verb = np.power(verb, 1.0/ratio) # a higher power makes the reverb die out more quickly
    verbed_data = signal.convolve(data, verb, method='fft')
    return verbed_data

此过程是有点不可靠的。它假定混响是通过延迟尖锐回声制成,适用的比率对所有这些回波。 P>

这真的会更好回去的过程中所产生ir_data和使用不同的参数重做。 P>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-07
    • 2021-01-31
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多