我正在考虑制作一个程序,它会使用仅包含鼓声的音频文件自动生成鼓标签。
我曾考虑使用FFT在xxxx ms间隔内获得平均光谱峰值,然后将其与包含特定鼓组和声音的所有鼓声部分(小鼓,坟墓,基鼓等等)的表格进行比较齿轮。
但我觉得它不会那么容易。你们有什么建议可以用来解决我的问题吗?
// Eric
答案 0 :(得分:3)
除了一个微不足道的信号之外,任何事情都不容易。几乎所有西方“古典”和商业音乐都具有重合鼓声。
1:叠加:原始源在频域中以与在时域中相似的方式加在一起。每个FFT bin包含来自当前正在播放的所有乐器的贡献(以及那些无阻尼且仍然衰减或同情共振的乐器)。取消各种来源很难 - 当然也不能与光谱库进行比较。
2:FFT的定义在时域中播放音频,并在该窗口周期的每个bin 中产生基函数的幅度和相位。您可以说最好的是内容出现在窗口期间与鼓声相对应的bin中。如果要计算1024点FFT,则窗口持续时间为44.1kHz时为23ms。从音乐角度来看,在120bpm的第16个音符相距31.3ms。您可能会使用较小的FFT。
3:打击乐器信号往往看起来很像噪音 - 至少在乐器受到打击时。也就是说,能量在整个频谱上会扩散,而且没有明显的主导频率。在撞击之后,调谐的打击乐开始看起来更“色调”。
您可能需要查看时域方法来准确检测起始点(起始检测)。从那里,您可以查看信号的时域或频域特征,以尝试推断出有问题的仪器。对于正在播放的音乐类型的先验知识,您可能还可以做很多事情,这样您就可以预测可能存在的模式。
这是更广义的音频源分离问题的特例。这个领域有很多学术活动,因此有很多发表论文描述了方法。寻找源分离,音乐信息检索,音频特征检测