python合唱效果和音频数据的含义

时间:2014-02-19 17:27:29

标签: python audio numpy audio-streaming audioeffect

请您解释或指出正确的思考如何在wav文件上实现两种音效的方法。

所以我读了wav文件并将其转换为int值(在numpy数组中)

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

首先,我不确定我清楚数组中的这些值真正代表什么? 是不是每个值都是模拟输出设备在某个时刻产生的65535(unsigned int16)幅度等级之一?

理论上,合唱效果可以通过以下步骤实现:

  1. 制作原始数组的副本
  2. 削弱此复制的数组(乘以某些value < 1
  3. 并将此复制的数组添加到原始数组
  4. 实际上我不知道如何正确添加它们。我应该简单地逐个添加值,进行两个数组的卷积或交错原始数组和它的修改后的副本。 合唱效果也应该任意时间延迟,我不知道如何实现这一点。

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

1 个答案:

答案 0 :(得分:1)

你基本上有正确的想法。以下是几点:

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

2)如果您要进行数学计算,请先转换为floatint32,这样就不会超出int16的限制。

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

4)对于添加“随机时间”,您可以使用上述单个随机时间。为了使整个添加过程中的时间不断变化,您需要扭曲原始信号,这将更加复杂。