Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 音乐转录_Java_Fft_Onset Detection_Audio - Fatal编程技术网

Java 音乐转录

Java 音乐转录,java,fft,onset-detection,audio,Java,Fft,Onset Detection,Audio,我在做一个复调音乐转录项目。我读过一些论文,也看过一些解释类似任务的文章。我对问题领域的许多方面感到非常困惑。希望有人能帮助我 到目前为止,我已经从给定的mp3中获得了一个解码音频数据流 我已经了解到开始检测是转录的第一步。是否有可用的java库可用于检测OnSet 接下来,正如我所读到的,检测基频也是通过使用FFT来完成的 我想知道FFT在这些任务中的使用。(我对FFT不太熟悉)。对于起始检测和F0检测,绝对有必要执行FFT。 如果没有,还有什么其他的方法。 我可以对我拥有的音频流执行FFT吗

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

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

我已经了解到开始检测是转录的第一步。是否有可用的java库可用于检测OnSet

接下来,正如我所读到的,检测基频也是通过使用FFT来完成的

我想知道FFT在这些任务中的使用。(我对FFT不太熟悉)。对于起始检测和F0检测,绝对有必要执行FFT。 如果没有,还有什么其他的方法。 我可以对我拥有的音频流执行FFT吗,或者为了操纵这些音频数据,必须执行其他操作吗

非常感谢。

这包含了许多可能对您有用的信息


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

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

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

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


对不起,我帮不了什么忙。。。但我只是想指出,你要做的是非常困难的。也许你应该从更简单的事情开始,比如检测一个音符的正弦波旋律。祝你好运

此字段称为机器侦听

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

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

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

要检测复调音乐中旋律的基频,您可以试用MELODIA vamp插件(仅限非商业用途):

如果你想自己实现一个旋律提取算法,你必须查看当前最先进的研究成果,一个好的起点可能是MIREX melody extraction年度评估活动:


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

回答得好。我见过的最好的商业例子是Celemony Melodyne的DNA:他们取得的成就令人印象深刻,尽管它不是直接用于转录的。