2

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

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

我知道发病检测是转录的第一步。. 是否有任何可用的 java 库可用于检测发病。

接下来,正如我所读到的,也使用 FFT 来检测基频。

我想知道 FFT 在这些任务中的用途。(我对 FFT 不太熟悉)。是否绝对有必要对发病检测和 F0 检测执行 FFT。如果不是还有什么其他方法。我可以对我拥有的音频流执行 FFT,还是必须执行一些其他操作才能操作这些音频数据。

非常感谢。

4

4 回答 4

6

这个领域被称为机器监听。

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

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

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

于 2009-02-28T09:50:39.633 回答
3

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

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

于 2009-02-28T08:43:31.480 回答
3

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

基本上,要识别音符,您想知道它们从哪里开始、在哪里结束以及它们的音高。傅里叶变换原则上是将时域(音频数据)转换为频域(音高)的最基本方法。在实践中,乐器会产生很多谐波(泛音),如果我们添加了复音(很多 F0),那就一团糟。

您可以尝试将音频数据的 50 毫秒连续切片馈送到 FFT。这样,您将获得每个切片的频谱,然后检测每个切片中最强的峰值,并根据连续切片之间发生的情况推断节奏。

抱歉,我帮不上什么忙……但我只是想指出,您正在尝试做的事情非常困难,说真的。也许您应该从更简单的事情开始,例如检测单音正弦波旋律。祝你好运!

于 2009-02-28T08:47:06.510 回答
0

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

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

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

于 2013-01-24T14:16:00.653 回答