python 合唱效果和音频数据的含义
Posted
技术标签:
【中文标题】python 合唱效果和音频数据的含义【英文标题】:python chorus effect and meaning of audio data [closed] 【发布时间】:2014-02-19 17:27:29 【问题描述】:能否请您解释或指出正确的方法来思考如何在wav文件上实现两种音效。
所以我读取 wav 文件并将其转换为 int 值(在 numpy
数组中)
array([59383, 58290, 60629, ..., 52606, 51982, 56274], dtype=uint16)
首先,我不确定我是否清楚数组中的这些值真正代表什么?
每个值都是模拟输出设备在某个时刻会产生的 65535 (unsigned int16
) 幅度级别之一,这对吗?
理论上可以通过以下步骤实现合唱效果:
-
复制原始数组
弱化这个复制的数组(乘以一些
value < 1
)
并将这个复制的数组添加到原始数组中
实际上,我不知道如何正确添加它们。我是否应该简单地逐个添加值,对两个数组进行卷积或交错原始数组并将其修改为副本。 合唱效果也应该有任意时间延迟,我不知道我该如何做到这一点。
如何实现我要添加的数据的随机性?
【问题讨论】:
既然你还在理解这些概念,我建议你把这个问题带到信号处理论坛,等你理解了这些概念后再回来了解代码细节。 这个问题似乎是题外话,因为这不是(还)一个编程问题 我会尝试在signal processing
提问,谢谢!
【参考方案1】:
你基本上有正确的想法。这里有几点:
1)波形文件是线性信号与时间,所以你的理解是正确的。 (许多音频事物都是对数的,因此认为它可能是非线性的并非不合理——例如,LP 是以非线性方式编码的。)
2) 如果要进行数学运算,请先转换为 float
或 int32
,以免超出 int16
的限制。
3) 要及时偏移,请使用 numpy 切片。也就是说,类似于new = old[1000:]+old[:-1000]
。请注意,您需要将相同长度的部分添加在一起,因此如果添加时移,则无法将其添加到完整数组中,因为时移会更短。
4)至于添加“随机时间”,您可以在上面添加一个随机时间。为了使时间在整个加法过程中不断变化,您需要扭曲原始信号,这将更加复杂。
【讨论】:
非常感谢您的回答!它为我澄清了一些事情。以上是关于python 合唱效果和音频数据的含义的主要内容,如果未能解决你的问题,请参考以下文章