我有一个很大的图书馆,里面藏有许多预先录制的音符(大约1200个),振幅都一致。

我正在研究将两个音符彼此叠加的方法,这样听起来就像和弦,两个音符可以同时演奏。

具有不同攻击时间的样本:

如您所见,这些样本具有不同的峰值振幅点,需要将它们排队才能听起来像人类演奏的和弦。

手动对齐攻击点:

第二张图片显示了人 worker 工分配的攻击点,但是对于如此大的数据集,这是不可行的方法,在此我希望创建和弦样本的许多排列。

我正在考虑一种方法,可以确定两个音频样本的峰值幅度时间,然后在混合音符以创建和弦时对齐这两个峰值幅度时间。但是我不确定如何进行这样的实现。

我正在考虑使用python混合解决方案,例如Mixing two audio files together with python在这里找到的一种,并进行一些调整以将音频样本彼此混合。

我正在寻找有关如何识别音频样本中峰值幅度时间的想法,或者,如果您对可以实现该想法的其他方式有任何想法,我将非常感兴趣。

最佳答案

如果真的有人对此问题感兴趣,我已经找到了解决问题的方法。这有点令人费解,但是却取得了出色的成绩。

为了找到样本的峰值幅度时间,我在这里找到了这个线程:Finding the 'volume' of a .wav at a given time,其中最上面的答案提供了一个链接到一个名为AudioFile的scala库,该库提供了一种通过在帧缓冲区窗口中查看样本来找到峰值amplite的方法。但是,该库要求所有文件均采用.aiff格式,因此创建了第二个样本库,其中包括所有转换为.aiff的旧.wav样本。

减小帧缓冲区窗口后,我能够确定在哪个帧中找到了最大幅度。用该帧除以音频样本的采样率(已知为48000),我能够准确地找到峰值幅度的时间。该信息用于创建一个文件,该文件既存储样本文件的名称,又存储其峰值幅度时间。

一旦完成,将使用Pydub库http://pydub.com/编写一个python脚本,该脚本将两个样本配对,并找出其峰值幅度时间之差(t)。峰值振幅时间最短的样本将从仅包含静默的.wav附加到长度(t)的静默。

然后将这两个样本相互叠加以产生精确混合的和弦!

关于python - 准确地相互混合两个音符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49849275/

10-13 00:02
查看更多