我有一个很大的图书馆,里面有很多预先录制好的音符(大约1200),它们都是一致的振幅。
我正在研究将两个音符分层的方法,这样听起来就像一个和弦,两个音符同时演奏。
不同攻击时间的样本:

正如你所看到的,这些样本有不同的峰值点,它们需要排列起来才能听起来像人类演奏的和弦。
手动对齐攻击点:

第二张图片显示了由ear手动标记的攻击点,但是对于这样一个大的数据集,这是一种不可靠的方法,在这里我希望创建许多chord样本的排列。
我正在考虑一种方法,可以识别两个音频样本的峰值振幅时间,然后在混合音符以创建和弦时对齐这两个峰值振幅时间。但我不知道如何实现这一目标。
我正在考虑使用python混合解决方案,比如这里找到的Mixing two audio files together with python,通过一些调整将音频样本混合在一起。
我正在寻找关于如何识别音频样本中峰值振幅的时间的想法,或者如果您对这个想法可以实现的其他方式有任何想法,我会非常感兴趣的。
发布于 2018-04-20 03:25:44
如果有人真的对这个问题感兴趣,我已经找到了解决问题的办法。这是个小小的转变,但已经取得了很好的效果。
为了找到一个样本的峰值幅度的时间,我在这里找到了这个线程:Finding the 'volume' of a .wav at a given time,上面的答案提供了一个名为AudioFile的scala库的链接,该库提供了一种通过在帧缓冲区窗口中遍历样本来查找峰值振幅的方法。但是,该库要求所有文件都采用.aiff格式,因此创建了第二个示例库,该库由转换为.aiff的所有旧.wav示例组成。
在缩小帧缓冲窗口后,我能够确定在哪个帧中找到了最大的振幅。除以音频样本的采样率(已知为48000),我能够准确地找到峰值振幅的时间。该信息用于创建一个文件,该文件既存储示例文件的名称,又存储其峰值时间。
完成这一任务后,将使用Pydub库http://pydub.com/编写一个python脚本,该库将两个样本配对,并找出它们的峰值幅值之间的差异(t)。峰值振幅时间最低的样品,其长度(t)由仅含静音的.wav附加。
然后将这两个样本叠加在一起,产生精确的混合和弦!
https://stackoverflow.com/questions/49849275
复制相似问题