Dol*_*hin 9 midi wav file-conversion pitch-tracking
我是这个领域的新手 - 但我需要在java中执行WAV-to-MIDI转换.有没有办法知道WAV-to-MIDI转换涉及的步骤究竟是什么?我有一个非常粗略的想法,因为你需要; 对wav文件进行采样,对其进行滤波,使用FFT进行频谱分析,进行特征提取,然后将提取的特征写入MIDI.但我找不到如何做到这一切的可靠来源或论文?有人可以给我提供线索,如何以及从何处开始?是否有任何开源API可用于此WAV-to-MIDI转换过程?
谢谢
Ste*_*joa 27
这是一个比你想象的更复杂的过程.
该研究问题通常被称为音乐转录:将音乐的低级表示(例如,波形)转换为更高级别的表示(例如MIDI或甚至乐谱)的行为.
您的解决方案的复杂程度取决于输入数据的复杂程度.大量研究论文仅针对单声道钢琴或鼓声进行音乐转录...因为它们易于转录.(相对而言)小提琴更难.声音更难.小提琴加声音加钢琴要困难得多.交响乐几乎是不可能的.你得到了照片.
音乐转录的基本要素涉及以下任何重叠区域:
在Google学术搜索或ISMIR会议论文中搜索有关"音乐转录"的论文:http://www.ismir.net .如果您对上述某个子主题更感兴趣,我可以进一步指出.祝好运.
编辑:话虽如此,我们都可以在网上找到现有的解决方案.随意试试吧.但正如你所做的那样,用批判的眼睛和耳朵来评估它们.什么类型的音频信号会导致转录失败?
编辑2:啊,你只是为钢琴做这个.好的,这是可行的.音乐转录已经发展到可以很好地转录单音钢琴的程度.拉赫玛尼诺夫协奏曲仍将构成问题.
我们的建议取决于您的最终目标.您声明" 需要在Java中执行... ".所以听起来你只是想要一些工作,无论它如何让你在那里.在这种情况下,我同意100%与他人:使用存在的东西.
这实际上是一个有趣的问题; 我所知道的所有MIR库通常都是C/C++/Python/Matlab.但不是Java.EchoNest有一个Java API,但我不认为它会进行音符级转录.http://developer.echonest.com.(编辑:它确实是音符级别的转录.返回的数据包括音高,音色,节拍,tatum等等.但我发现复音仍然是一个问题.)
哦,Marsyas是基于Java的.凉.我以为这只是C++.http://marsyas.info/我推荐这个.它由MIR教授George Tzanetakis开发.它进行信号级分析,应该是一个不错的选择.
现在,如果这是一个有趣的学习体验,我认为你可以使用Java中的声音处理实用程序来试验WAV信号,看看会发生什么.
编辑:这个页面比我更好地描述了MIR软件:我们使用的工具
对于Matlab,您可能对MIR Toolbox感兴趣
这是常见数据集的一个很好的页面:MIR数据集
| 归档时间: |
|
| 查看次数: |
13852 次 |
| 最近记录: |