WAV至Midi转换 [英] wav-to-midi conversion

查看:245
本文介绍了WAV至Midi转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是该领域的新手-但我需要在Java中执行WAV到MIDI转换. 是否有办法知道WAV到MIDI转换中确切涉及哪些步骤? 我有一个很粗略的主意,因为您需要这样做; 对wav文件进行采样,过滤,使用FFT进行频谱分析,特征提取,然后将提取的特征写入MIDI. 但是我找不到可靠的资源或论文,因为该怎么做? 有人可以为我提供有关如何以及从何处开始的线索吗? WAV到MIDI转换过程是否有可用的开源API?

I'm new to this field - but I need to perform a WAV-to-MIDI conversion in java. Is there a way to know what exactly are the steps involved in WAV-to-MIDI conversion? I have a very rough idea as in you need to; sample the wav file, filter it, use FFT for spectral analysis, feature extraction and then write the extracted features on to MIDI. But I cannot find solid sources or papers as in how to do all that? Can some one give me clues as in how and where to start? Are there any Open Source APIs available for this WAV-to-MIDI conversion process?

预先感谢

推荐答案

比您想象的要复杂得多.

It's a more involved process than you might imagine.

此研究问题通常被称为音乐转录:将音乐(例如,波形)的低级表示转换为MIDI或什至乐谱之类的高级表示的行为

This research problem is often referred to as music transcription: the act of converting a low-level representation of music (e.g., waveform) into a higher-level representation such as MIDI or even sheet music.

您的解决方案的复杂程度将取决于您输入数据的复杂性.大量的研究论文仅针对单声道钢琴或架子鼓上的音乐转录……因为它们易于转录. (相对.)小提琴要硬一些.声音更难听.小提琴加声音加钢琴要难得多.交响乐几乎是不可能的.你得到图片了.

The sophistication of your solution will depend upon the complexity of your input data. Tons of research papers address music transcription only on monophonic piano or drums... because they are easy to transcribe. (Relatively.) Violin is harder. Voice is even harder. Violin plus voice plus piano is much harder. A symphony is nearly impossible. You get the picture.

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

The basic elements of music transcription involve any of the following overlapping areas:

  1. (多)音高估算
  2. 仪器识别,音色建模
  3. 节奏检测
  4. 注意开始/偏移检测
  5. 表单/结构建模

在Google学术搜索或ISMIR程序中搜索有关音乐转录"的论文: http://www.ismir.net .如果您对以上子主题之一更感兴趣,那么我可以进一步指出.祝你好运.

Search for papers on "music transcription" on Google Scholar or from the ISMIR proceedings: http://www.ismir.net. If you are more interested in one of the above subtopics, I can point you further. Good luck.

话虽这么说,但现有的解决方案我们都可以在网上找到.随时尝试.但是,当您这样做时,请用肉眼和耳朵来评估它们.哪种类型的音频信号会导致转录失败?

That being said, there are existing solutions that we can all find on the web. Feel free to try them. But as you do, evaluate them with a critical eye and ear. What types of audio signals would cause transcription to fail?

啊,您只在钢琴上这样做.好的,这是可行的.音乐转录已经发展到可以很好地翻译单音钢琴的水平.拉赫玛尼诺夫协奏曲仍然会带来问题.

EDIT 2: Ah, you are only doing this for piano. Okay, this is doable. Music transcription has advanced to the point where it can transcribe monophonic piano pretty well. A Rachmaninov concerto will still pose problems.

我们的建议取决于您的最终目标.您声明"需要 Java 中执行...".因此,听起来好像您只是想让某件东西起作用,而不管它如何到达您那里.在那种情况下,我与他人100%同意:使用存在的东西.

Our recommendations depend upon your end goal. You state "need to perform... in Java." So it sounds like you just want something to work regardless of how it gets you there. In that case, I agree 100% with others: use something that exists.

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

That's actually an interesting question; all of the MIR libraries I know are typically C/C++/Python/Matlab. But not Java. The EchoNest has a Java API, but I don't think it does note-level transcription. http://developer.echonest.com. ( It does note-level transcription. The returned data includes pitch, timbre, beat, tatum, and more. But I find polyphony is still a problem.)

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

Oh, Marsyas is Java-based. Cool. I thought it was just C++. http://marsyas.info/ I recommend this. It's developed by George Tzanetakis, a professor in MIR. It does signal-level analysis and should be a good option.

现在,如果这是一次有趣的学习体验,我想您可以使用Java中的声音处理实用程序来尝试WAV信号并查看结果.

Now, if this is for a fun learning experience, I think you can use the sound manipulation utilities in Java to experiment with the WAV signal and see what comes out.

此页面比我更能描述MIR软件:我们使用的工具

This page describes MIR software better than I can: The Tools We Use

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

For Matlab, you may be interested in the MIR Toolbox

这是常见数据集的漂亮页面: MIR数据集

Here is a nice page of common datasets: MIR Datasets

这篇关于WAV至Midi转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆