【问题标题】:Java - Get notes from .mp3 audio? [closed]Java - 从 .mp3 音频中获取笔记? [关闭]
【发布时间】:2016-04-26 23:37:49
【问题描述】:

我正在尝试创建一个程序来查找用户添加的 .mp3 文件的注释。到目前为止我所拥有的是:

public void audioToNotes(String path){
    File f = new File(path);
    AudioInputStream ais = AudioSystem.getAudioInputStream(f);
}

然后我就卡住了。 对不起,如果这是一个菜鸟问题,我是来学习的,我只是一个初学者。

编辑: 我上网浏览了一下,发现了这段代码:

AudioInputStream din = null;
        final AudioFormat baseFormat = in.getFormat();
        final AudioFormat decodedFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
                baseFormat.getSampleRate(),
                16,
                baseFormat.getChannels(),
                baseFormat.getChannels() * 2,
                baseFormat.getSampleRate(),
                false);

【问题讨论】:

  • 您想要音符,就像您想要 440 Hz 注册为 A4 一样? MP3 文件是纯音还是真实音乐?这对于 StackOverflow 问题可能过于模糊。
  • 你用谷歌搜索了吗?你读过mp3 格式吗?
  • 比如用户给一个Darude-Sandstorm什么的mp3文件,这个程序就找到了笔记。例如:C D E C C F D B
  • 是的,我用谷歌搜索过这个,我已经阅读了音频转换和相关的内容,但不是专门针对 .mp3
  • 所以去阅读它,然后尝试实现它。

标签: java audio


【解决方案1】:

频率检测与 MP3 格式没有直接关系。

据我所知,没有一个 API 可以让你这样做

notes = analyze(audioSignal)

其中 notes 是音高的集合。

对于周期性波形,您可以对此音频信号进行 FFT。那里有 DSP 库。仍然不是自动的。

注意信号处理并不容易,它涉及到相当多的数学。

【讨论】:

  • 我以前从未与这些人合作过:你能给我一个例子,或者给我一个链接吗?那会很有帮助:)
  • 我同意!我正在学习电子和信息通信技术,发现这个项目非常困难,尤其是对于 12 岁的孩子。声调识别本身应该没有那么难,但我认为OP想阅读mp3并导出音符而不必播放它。
  • @FloydSomeone 声音可以被观察为正弦波。这些正弦波有频率。在高等数学中,您可以进行傅立叶变换,这将允许您观察频率而不是波。
  • 顺便说一句。这是一个非常好的 DSP 交互式教程。 jackschaedler.github.io/circles-sines-signals/index.html
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
相关资源
最近更新 更多