繁体   English   中英

比较android中的两种声音

[英]compare two sounds in android

我正在使用musicg库在两个音频声音之间进行比较。 其中一个先保存,然后通过记录检测另一个。 音乐图书馆有口哨演示; 问题是当我要将检测到的声音(它是一个缓冲区)转换为wav并为其获取指纹时,它返回nullpointerexption。

这是在MainAcivity.java中

这是在DetectorThread.java中

  

如此;

1-如何将Byte []转换为wav?

2,我可以在线程内调用class或Mothed吗? 因为我想知道,每次我呼叫其中一个时,都不会检测到任何东西!

3-我根本不编辑记录线程>这会引起问题吗? 请帮我。

读取缓冲区不包含任何wave标头。 这些只是音频字节。 我已经开始实施可能有用的课程。 但这还不是最终的

public class WavApi extends DetectionApi {
  Wave waveToMatch;

  public WavApi(Wave wave) {
    super(wave.getWaveHeader());
    this.waveToMatch = wave;
  }

  public boolean matches(byte[] audioBytes) {
    Wave wave = new Wave(waveToMatch.getWaveHeader(), audioBytes);

    FingerprintSimilarityComputer fpc = new FingerprintSimilarityComputer(waveToMatch.getFingerprint(), wave.getFingerprint());
    FingerprintSimilarity similarity = fpc.getFingerprintsSimilarity();

    //--- TODO: find optimal condition to decide whether {audioBytes} matches {waveToMatch} or not
    float sim = similarity.getScore() * 100f;
    int pos   = similarity.getMostSimilarFramePosition();

    if (pos >= 0 && sim > 0)
        return true;
    //----

    return false;
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM