我是这个领域的新手 - 但我需要在 java 中执行 WAV 到 MIDI 的转换。有没有办法知道 WAV 到 MIDI 转换到底涉及哪些步骤?我有一个非常粗略的想法,正如你需要的那样;对 wav 文件进行采样、过滤、使用 FFT 进行频谱分析、特征提取,然后将提取的特征写入 MIDI。但我找不到可靠的来源或论文来说明如何做到这一切?有人可以给我一些线索,告诉我如何开始以及从哪里开始吗?是否有任何开源 API 可用于此 WAV 到 MIDI 转换过程?

预先致谢

有帮助吗?

解决方案

这是一个比您想象的更复杂的过程。

这个研究问题通常被称为 音乐转录: :将音乐的低级表示(例如波形)转换为 MIDI 甚至乐谱等高级表示的行为。

您的解决方案的复杂性将取决于输入数据的复杂性。大量的研究论文仅讨论单音钢琴或鼓上的音乐转录......因为它们很容易转录。(相对而言。) 小提琴更难。声音就更难了。小提琴加声乐加钢琴就更难了。交响乐几乎是不可能的。你明白了。

音乐转录的基本要素涉及以下任何重叠领域:

  1. (多)音高估计
  2. 乐器识别、音色建模
  3. 节律检测
  4. 音符开始/偏移检测
  5. 形式/结构建模

在 Google Scholar 或 ISMIR 会议记录中搜索有关“音乐转录”的论文: http://www.ismir.net. 。如果您对上述子主题之一更感兴趣,我可以进一步指出您。祝你好运。

编辑:话虽如此,我们都可以在网络上找到现有的解决方案。请随意尝试。但当你这样做时,要用批判性的眼睛和耳朵来评估它们。哪些类型的音频信号会导致转录失败?

编辑2:啊,你只是为了钢琴才这样做。好的,这是可行的。音乐转录已经发展到可以很好地转录单音钢琴。拉赫玛尼诺夫协奏曲仍然会带来问题。

我们的建议取决于您的最终目标。你说“需要 去表演...在 爪哇”所以听起来你只是想要一些东西能够发挥作用,而不管它如何让你达到目标。在这种情况下,我100%同意其他人的观点:使用存在的东西。

这实际上是一个有趣的问题;我所知道的所有 MIR 库通常都是 C/C++/Python/Matlab。但不是Java。EchoNest 有一个 Java API,但我认为它不能进行音符级转录。 http://developer.echonest.com. 。(编辑:它 音符级转录。返回的数据包括音高、音色、节拍、塔图姆等。但我发现复调仍然是一个问题。)

哦,Marsyas 是基于 Java 的。凉爽的。我以为这只是C++。 http://marsyas.info/ 我推荐这个。它是由 MIR 教授 George Tzanetakis 开发的。它可以进行信号级分析,应该是一个不错的选择。

现在,如果这是为了获得有趣的学习体验,我认为您可以使用 Java 中的声音操作实用程序来试验 WAV 信号,看看会产生什么结果。

编辑:此页面比我更好地描述了 MIR 软件: 我们使用的工具

对于 Matlab,您可能感兴趣 米尔工具箱

这是常见数据集的一个很好的页面: 米尔数据集

其他提示

这是为是新的领域有非常大的事业,除非你的意思是你所熟悉的一般的信号分析和特征检测,并希望更多的专门研究自动转录。

有为WAV到MIDI转换没有API。 鞋面是用于特征提取插件的框架,但要做到自动转录您将需要使用所有现有的插件的功能,再加上实施,在其中没有还不存在的功能性。

浏览的插件上鞋面下载页面,任何描述你做不理解是,如果你想这样做,你应该开始研究的主题。

如果您不需要自动执行此任务(即,对于一个网站,人们可以上传MP3的,并得到MIDI文件回),那么你应该考虑使用类似的的Melodyne 这已经是在走这相当不错。正如史蒂夫指出,这是一个非常艰巨的任务来完成,再好的算法和解决方案,目前在此刻是不是100%可靠的。

所以,如果你只是在做工作室的工作,需要做一些转换,恐怕也会为您节省一点时间(和许多头痛的)使用已经设计完成这个任务的工具。

海豚,遗憾的是粗暴,但你却完全低估了问题。你想实现什么 - 一个完整的钢琴音色转录涉及了用来播放时需要的研究与谁在该领域工作多年的人大量的所有参数。即使在一组信号处理博士将不得不大量的工作投入,甚至接近你的意思。音乐转录一直需要数十年的工作,甚至工作中途可靠。我建议你选择一个不同的问题,您可以更好地管理莫过于此。

这是一个字段,它仍处于开发高度,然而,也有一些(实验)算法可用。

您可以安装声音注释并使用一些鞋面插件。

例如:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top