如何检测声音文件中的某些声音并执行与它们同步的动作?

时间:2014-11-24 02:32:07

标签: java audio javasound

我正在申请一个班级(作为团队的一部分),其目的是帮助您学习弹钢琴。仪器的图像显示在屏幕上,我们有一些课程Octave,您可以在钢琴的某个八度音阶中,以便您可以突出显示相应的键。例如,您可以告诉highlight方法它是哪个,并且它知道要突出显示图像的哪个部分,因为总是有一个要检查的活动Octave对象,它会从距离​​开头的距离找到关键字。图片。到目前为止,我知道这部分没有问题(这是我的团队成员的责任)。

我想要完成的是在用户选择适当的选项后播放声音文件(例如音阶或歌曲),但是键应该在屏幕上与正在播放的正确音符同步。这正是我的问题;我不知道如何处理这个问题,谷歌搜索类似的情况并没有帮助。

所以我要问的是,如果有人可以建议我应该怎么做呢?理想情况下,它应该是通用的(采用高质量的声音文件并突出显示正确的音符,而不是编码要添加的每个文件),因此,有一些方法可能会检测正在发出的音符和音高。用来确定哪个音符在哪个八度音阶,然后我就可以轻松地将这些信息与其他类一起使用。这只是我对如何解决它的想法,但我对你认为可能更好的其他解决方案持开放态度。提前感谢任何建议!

1 个答案:

答案 0 :(得分:3)

你所要求的可能真的困难,特别是在一般情况下。

事实上,你所要求的是Automatic Music Transcription。如今,自动音乐转录准确度is similar to text-to-speech:不太好。

你应该做什么

对于音乐学习应用程序,您应该考虑使用已经编写的转录。例如,您可以阅读描述歌曲中的音符的a midi file,并使用midi文件中的信息来突出显示钢琴的音符。

如果您真的想要自动音乐转录

然后,您应该从reading papers of folks who did it开始,并接受accuracy of about 80%...