python合唱效果与音频数据的意义

python合唱效果与音频数据的意义,python,audio,numpy,audio-streaming,audioeffect,Python,Audio,Numpy,Audio Streaming,Audioeffect,你能解释一下或者指出一种正确的方式来思考如何在wav文件上实现两种声音效果吗 所以我读取wav文件并将其转换为int值(在numpyarray中) 首先,我不确定我是否清楚数组中的这些值到底代表什么? 每个值都是65535(unsigned int16)量级中的一个,模拟输出设备将在某个时刻产生,这对吗 理论上,合唱效果可以通过以下步骤实现: 复制原始数组 削弱此复制的数组(乘以某些值

你能解释一下或者指出一种正确的方式来思考如何在wav文件上实现两种声音效果吗

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

首先,我不确定我是否清楚数组中的这些值到底代表什么? 每个值都是65535(
unsigned int16
)量级中的一个,模拟输出设备将在某个时刻产生,这对吗

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

  • 复制原始数组
  • 削弱此复制的数组(乘以某些
    值<1
  • 并将复制的数组添加到原始数组中
  • 实际上,我不知道如何正确地添加它们。我应该简单地一个接一个地添加值,对两个数组进行卷积,或者交错原始数组和修改后的副本。 另外,合唱效果应该具有任意的时间延迟,我不知道如何才能做到这一点


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

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

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

    2) 如果要进行数学运算,请首先转换为
    float
    int32
    ,这样就不会超出
    int16
    的限制

    3) 要在时间上进行偏移,请使用numpy切片。也就是说,类似于
    new=old[1000:][old[:-1000]
    。请注意,您需要同时添加相同长度的节,因此如果添加时间偏移,则无法将其添加到完整数组中,因为时间偏移将更短


    4) 至于添加“随机时间”,你可以在上面添加一个随机时间。要使时间在整个添加过程中不断变化,您需要扭曲原始信号,这将更加复杂。

    由于您仍然理解这些概念,我建议您将此问题带到信号处理论坛,理解概念后再回来获取代码详细信息。这个问题似乎离题了,因为这不是(尚未)编程问题。我将尝试在
    信号处理
    上提问,谢谢!非常感谢您的回答!它为我澄清了一些事情。
    array([59383, 58290, 60629, ..., 52606, 51982, 56274], dtype=uint16)