把两个音符准确地混合在一起

2024-05-23 23:29:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的图书馆,里面有许多预先录制的音符(大约1200个),它们的振幅都是一致的。你知道吗

我正在研究将两个音符相互叠放的方法,这样听起来就像是两个音符同时演奏的和弦。你知道吗

具有不同攻击时间的示例:Samples with different attack times

正如你所看到的,这些样本有不同的峰值振幅点,需要排列起来,才能听起来像人类演奏的和弦。你知道吗

手动对齐的攻击点:Manually aligned attack points

第二张图显示了通过ear手动对齐的攻击点,但是对于我希望创建许多和弦样本排列的如此大的数据集,这是一种不可行的方法。你知道吗

我正在考虑一种方法,通过这种方法,我可以确定两个音频样本的峰值振幅时间,然后在混合音符时将这两个峰值振幅时间对齐以创建和弦。但我不确定如何进行这样的实施。你知道吗

我正在考虑使用python混合解决方案,比如这里的Mixing two audio files together with python,并进行一些调整,以将音频样本相互混合。你知道吗

我正在寻找如何识别音频样本中峰值振幅的时间的想法,或者如果你对实现这个想法的其他方法有任何想法,我会非常感兴趣。你知道吗


Tags: 数据方法示例图书馆时间手动人类音频
1条回答
网友
1楼 · 发布于 2024-05-23 23:29:44

如果有人真的对这个问题感兴趣,我已经找到了解决问题的办法。这有点牵强,但结果很好。你知道吗

为了找到一个样本的峰值振幅时间,我在这里找到了这个线索:Finding the 'volume' of a .wav at a given time上面的答案提供了到一个名为AudioFile的scala库的链接,这个库提供了一种通过在帧缓冲窗口中遍历一个样本来找到峰值振幅的方法。但是,这个库要求所有文件都是.aiff格式,因此创建了第二个示例库,其中包含所有转换为.aiff的旧.wav示例。你知道吗

在缩小帧缓冲窗口后,我能够确定在哪一帧中找到最高振幅。用这个帧除以音频样本的采样率(已知是48000),我就能准确地找到峰值振幅的时间。该信息用于创建一个文件,其中存储了样本文件的名称及其峰值振幅时间。你知道吗

一旦完成了这项工作,就使用Pydub库http://pydub.com/编写了一个python脚本,它将两个样本配对,并在它们的峰值振幅时间中找到差异(t)。具有最低峰值振幅时间的样本将从仅包含静默的.wav中预先出现长度为(t)的静默。你知道吗

这两个样品,然后叠加到对方产生准确的混合和弦!你知道吗

相关问题 更多 >