java - 如何从Java中的音频文件中提取数值

标签 java audio audio-analysis

我需要对声音进行分析,以检查声音是否受到阻碍或删除。

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!");
            }
        });
    }
}

但是我将在两种声音之间进行比较,并且需要提取数值进行分析。

最佳答案

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文件的完全相同时,此功能才起作用。

关于java - 如何从Java中的音频文件中提取数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42379234/

相关文章:

javascript - 我可以使用webAudio API从Chrome访问本地音频输出流吗?

java - 如何检测大型音频文件(5 分钟)中的已知声音(约 10 秒的短音频)

jquery - 将jquery整合到WordPress中

javascript - 停止播放任何当前音频

php - 依次播放两个音频文件

netbeans - jar 文件不工作

javascript - Web Audio API 的 AnalyserNode 替代 Node.js

java - 为 MAC 设置 java

java - JPA/Hibernate在获取数据时非常慢

java - 编译器无法在带有 for、if/else return 语句的方法中找到变量