gpt4 book ai didi

java - 如何使用 FFT 从 PCM 获取频率数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:34 51 4
gpt4 key购买 nike

我有一组音频数据要传递给读者:

 recorder.read(audioData,0,bufferSize); 

实例化如下:

AudioRecord recorder;
short[] audioData;
int bufferSize;
int samplerate = 8000;

//get the buffer size to use with this audio record
bufferSize = AudioRecord.getMinBufferSize(samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT)*3;

//instantiate the AudioRecorder
recorder = new AudioRecord(AudioSource.MIC,samplerate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,bufferSize);

recording = true; //variable to use start or stop recording
audioData = new short [bufferSize]; //short array that pcm data is put into.

我有一个在网上找到的 FFT 类(class)和一个复杂的类(class)。我试了两天在网上到处找,但无法弄清楚如何遍历 audioData 中存储的值并将其传递给 FFT。

这是我正在使用的 FFT 类:http://www.cs.princeton.edu/introcs/97data/FFT.java这是一个复杂的类:http://introcs.cs.princeton.edu/java/97data/Complex.java.html

最佳答案

假设 audioData 数组包含原始音频数据,您需要从 audioData 数组创建一个 Complex[] 对象,如下所示:

Complex[] complexData = new Complex[audioData.length];
for (int i = 0; i < complexData.length; i++) {
complextData[i] = new Complex(audioData[i], 0);
}

现在您可以将 complexData 对象作为参数传递给 FFT 函数:

Complex[] fftResult = FFT.fft(complexData);

关于java - 如何使用 FFT 从 PCM 获取频率数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604011/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com