请您解释或指出正确的思考如何在wav文件上实现两种音效的方法。
所以我读了wav文件并将其转换为int值(在numpy
数组中)
array([59383, 58290, 60629, ..., 52606, 51982, 56274], dtype=uint16)
首先,我不确定我清楚数组中的这些值真正代表什么?
是不是每个值都是模拟输出设备在某个时刻产生的65535(unsigned int16
)幅度等级之一?
理论上,合唱效果可以通过以下步骤实现:
value < 1
)实际上我不知道如何正确添加它们。我应该简单地逐个添加值,进行两个数组的卷积或交错原始数组和它的修改后的副本。 合唱效果也应该任意时间延迟,我不知道如何实现这一点。
我如何实现我即将添加的数据的随机性?
答案 0 :(得分:1)
你基本上有正确的想法。以下是几点:
1)波形文件是线性信号与时间的关系,因此您对它的理解是正确的。 (许多音频事物是对数的,因此认为它可能是非线性的并不是不合理的 - 例如,LP是以非线性方式编码的。)
2)如果您要进行数学计算,请先转换为float
或int32
,这样就不会超出int16
的限制。
3)要及时抵消,请使用numpy切片。就是像new = old[1000:]+old[:-1000]
这样的东西。请注意,您需要将相同长度的部分一起添加,因此如果添加时移,则无法将其添加到完整数组中,因为时移将更短。
4)对于添加“随机时间”,您可以使用上述单个随机时间。为了使整个添加过程中的时间不断变化,您需要扭曲原始信号,这将更加复杂。