Как я могу извлечь числовые значения из аудио файла в Java

Мне нужно сделать анализ звуков, чтобы проверить, не было ли оно затруднено или удалено.

import java.net.URL;
import javax.swing.*;
import javax.sound.sampled.*;

public class LoopSounds {

    public static void main(String[] args) throws Exception {
        URL url = new URL(
            "http://pscode.org/media/leftright.wav");
        Clip clip = AudioSystem.getClip();
        AudioInputStream ais = AudioSystem.
            getAudioInputStream( url );
        clip.open(ais);

        URL url2 = new URL(
            "http://pscode.org/media/100_2817-linear.wav");
        Clip clip2 = AudioSystem.getClip();
        AudioInputStream ais2 = AudioSystem.
            getAudioInputStream( url2 );
        clip2.open(ais2);

        // loop continuously
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        clip2.loop(Clip.LOOP_CONTINUOUSLY);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                // A GUI element to prevent the Clip's daemon Thread
                // from terminating at the end of the main()
                JOptionPane.showMessageDialog(null, "Close to exit!");
            }
        });
    }
}

Но я бы провел сравнение между двумя звуками, и мне нужно извлечь числовые значения для моего анализа.

1 ответ

Решение

AudioInputStream имеет метод read().

Вы можете сделать такую ​​функцию:

public void compareVoices(AudioInputStream ais,AudioInputStream ais2){
    for(int i = 0;i>ais.getFrameLength;i++){
        if(ais.read()!=ais2.read()){
            return(false);
        }
    }
    return(true);
}

Примечание. Эта функция будет работать только в том случае, если эти два WAV-файла абсолютно одинаковы.

Другие вопросы по тегам