Java 从麦克风检测特定频率

Java 从麦克风检测特定频率,java,audio,Java,Audio,我试图捕捉来自麦克风的音频,我想检查声音的频率。如果我的频率大于1316.8,那么我将开始录制1分钟 我正在努力将字节数据转换为频率 我使用了Javax.sound来捕获来自麦克风的音频,我也做了录音部分 AudioFormat format = new AudioFormat(44100, 16, 2, true, true); DataLine.Info targetInfo = new DataLine.Info(TargetDataLine.class, format);

我试图捕捉来自麦克风的音频,我想检查声音的频率。如果我的频率大于1316.8,那么我将开始录制1分钟

我正在努力将字节数据转换为频率

我使用了
Javax.sound
来捕获来自麦克风的音频,我也做了录音部分

  AudioFormat format = new AudioFormat(44100, 16, 2, true, true);

    DataLine.Info targetInfo = new DataLine.Info(TargetDataLine.class, format);
    DataLine.Info sourceInfo = new DataLine.Info(SourceDataLine.class, format);

    try {
        TargetDataLine targetLine = (TargetDataLine) AudioSystem.getLine(targetInfo);
        targetLine.open(format);
        targetLine.start();

        SourceDataLine sourceLine = (SourceDataLine) AudioSystem.getLine(sourceInfo);
        sourceLine.open(format);
        sourceLine.start();

        int numBytesRead;
        byte[] targetData = new byte[targetLine.getBufferSize() / 5];

我希望输出与来自麦克风的每个声音的频率相同。

您可能应该查看fft(快速傅立叶变换)库,以将PCM数据分析为组成频率。从头开始写下你想要的东西是一个挑战。史蒂夫·史密斯(Steve Smith)的书《数字信号处理的科学家和工程师指南》是一本免费下载的书,该书将解释这一理论,并展示用BASIC编写的实现这一点的代码。