音乐转录

时间:2009-02-28 08:22:03

标签: java fft onset-detection audio

我正在制作一个复音音乐转录项目。我已经阅读了一些论文,并阅读了解释类似任务的文章。我对问题领域的许多方面感到非常困惑。希望有人能够帮助我。

到目前为止,我已经从给定的mp3获得了解码音频数据流。

我已经了解起病检测是转录的第一步。 。是否有可用的java库可用于检测开始。

接下来,如我所读,使用FFT也可以检测基频。

我想知道在这些任务中使用FFT。 (我对FFT不熟悉)。是否必须执行FFT以进行起始检测和F0检测。 如果不是其他方式。 我可以在我的音频流上执行FFT,或者是否需要执行其他操作才能操作这些音频数据。

非常感谢。

4 个答案:

答案 0 :(得分:6)

此字段称为机器侦听。

数字编码音乐的复音转录是机器收听的圣杯之一。这是一个尚未解决的问题,也是一个积极研究的领域。子字段包括:

  • 开始检测
  • 节拍提取(检测度量结构,时间sig等)
  • 音高检测(可能使用自动相关和其他方法,对单声道信号,但在应用于复杂的复音音乐时是一个未解决的问题)
  • 密钥检测(密钥签名检测)。

根据项目的性质,您可能会发现探索SuperCollider编程环境很有用。 SC是一种专为此类项目设计的语言,已经拥有大量的机器监听插件(ugens),以及处理FFT,音频信号等的综合框架。

答案 1 :(得分:3)

question about note onset detection包含许多可能对您有用的信息。

这听起来是一个巨大但非常有趣的项目,祝你好运。

答案 2 :(得分:3)

音乐转录意味着从声音(或音频数据)创建音乐符号。虽然有成就的音乐家,特别是作曲家能够做到这一点,但使用机器这是一项非常困难的任务,据我所知,迄今为止几乎没有成功 - 主要是学术实验。

基本上,要识别笔记,您需要知道它们的起点,结束位置以及它们的音高。傅里叶变换是将时域(音频数据)转换为频域(音高)的最基本方法 - 原则上。在实践中,乐器产生大量的谐波(泛音),如果我们添加复音(许多F0),那就太乱了。

您可以尝试将类似音频数据的50毫秒连续切片输入FFT。通过这种方式,您可以获得每个切片的光谱,然后检测每个切片中最强的峰值,并根据连续切片之间的情况推断出节奏。

对不起,我帮不了多少......但是只是想指出你要做的事情非常困难,严肃认真。也许你应该从更简单的东西开始,比如检测一个音符的正弦波旋律。祝你好运!

答案 3 :(得分:0)

要检测复音音乐中旋律的基频,您可以试用MELODIA鞋面插件(仅限非商业用途):http://mtg.upf.edu/technologies/melodia

如果你想自己实现一个旋律提取算法,你将不得不查看当前最先进的研究,一个好的起点可能是MIREX旋律提取年度评估活动:{ {3}}

那,或只是google“旋律提取”;)