音乐转录

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

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

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

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

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

非常感谢。

此字段称为机器侦听。

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

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

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

关于音符开始检测的这个问题包含许多可能对您有用的信息。

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

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

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

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

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

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

如果你想自己实现一个旋律提取算法,你将不得不查看当前最先进的研究,一个好的起点可能是MIREX旋律提取年度评估活动: http:// http://www.music-ir.org/mirex/wiki/Audio_Melody_Extraction

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