2014-02-19 30 views
0

您能否请您解释或指出正确的方法来思考如何在wav文件上实现两个音效。python合唱效果和音频数据的含义

所以我读wav文件,并将其转换为int值(numpy阵列)

array([59383, 58290, 60629, ..., 52606, 51982, 56274], dtype=uint16) 

首先,我不知道我清楚什么阵列这些价值观真的代表什么? 是不是每个值都是模拟输出设备在某个时刻会产生的65535(unsigned int16)量级之一?

理论上合唱效果可以通过以下步骤来实现:原数组

    1. 制作副本削弱这个复制的数组(由一些value < 1相乘)
    2. 这个复制的数组添加到原

    在实践中,我不知道如何正确添加它们。我应该简单地逐个添加值,使两个数组卷积或交错原始数组,并且它是修改后的副本。 也合唱效应应该有任意时间延迟我不知道我怎么能做到这一点。

    我该如何实现我即将添加的数据的随机性?

  • +1

    因为您仍然理解这些概念,所以我建议您将此问题提交给信号处理论坛,然后在理解概念后再回来查看代码的详细信息。 –

    +4

    这个问题似乎是脱离主题,因为这不是(但)编程问题 – jonrsharpe

    +0

    我会尝试问'信号处理',谢谢! – xolodec

    回答

    1

    你基本上有正确的想法。这里有几点:

    1)波形文件是线性信号与时间,所以你的理解是正确的。 (许多音频事物是对数的,所以认为它可能是非线性的 - 例如,LP是以非线性方式编码的。)

    2)如果你打算做数学,先转换为floatint32所以你不要超过int16的限制。

    3)要及时抵消,请使用numpy切片。那就是像new = old[1000:]+old[:-1000]这样的东西。请注意,您需要将相同长度的部分一起添加,因此如果添加时间偏移,则无法将其添加到完整阵列,因为时间轴会更短。

    4)至于添加“随机时间”,你可以用上面的一个随机时间。为了使整个添加过程中的时间不断变化,您需要改变原始信号,这会变得更加复杂。

    +0

    非常感谢您的回答!它为我澄清了一些事情。 – xolodec