【问题标题】:Comparing two different audio files doesn't work比较两个不同的音频文件不起作用
【发布时间】:2015-07-24 06:19:18
【问题描述】:

我想比较两个音频文件,例如 mp3 和 wav。我使用musicg进行指纹比较。

Wave record1 = new Wave(music1.toString());
Wave record2 = new Wave(music2.toString());
FingerprintSimilarity Similarity=record1.getFingerprintSimilarity(record2);
System.out.println(Similarity.getSimilarity());

musicg 仅适用于 wav,因此我使用 JAVE 将 mp3 转换为 wav

    File temp = new File("temp.wav");
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("pcm_s16le");
    audio.setBitRate(new Integer(128000));
    audio.setChannels(new Integer(2));
    audio.setSamplingRate(new Integer(44100));
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("wav");
    attrs.setAudioAttributes(audio);
    Encoder encoder = new Encoder();
    encoder.encode(source, temp, attrs);

现在的问题是,当我尝试比较两个未转换指纹的 wav 时,效果很好,但是当我比较两个必须转换的不同音频时,它总是返回两个音频相同。 Wave 创建record1record2 相同的频谱图,当我给它两个不同的音频时。

【问题讨论】:

  • 只是一个想法:我看到您正在使用“temp.wav” - 是否使用相同的临时文件将两个文件覆盖到 wav?这样两个文件实际上只是引用同一个文件,并且实际上是在比较自己?
  • 谢谢,我不知道我是怎么想念的……花了 6 小时以上的时间,并没有看到那个简单的错误。我瞎了……
  • 没问题。我添加了一个你可以勾选的答案:)

标签: java audio compare fingerprint


【解决方案1】:
File temp = new File("temp.wav");

两个 Waves 都由同一个文件支持。 :)

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    相关资源
    最近更新 更多