我正在使用FFT库
我的代码运行如下:
int bufferSize = AudioRecord.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.DEFAULT, 44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
short[] buffer = new short[blockSize];
double[] toTransform = new double[blockSize];
audioRecord.startRecording();
while (started) {
int bufferReadResult = audioRecord.read(buffer, 0, blockSize);
for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
toTransform[i] = (double) buffer[i] / 22050; // signed 16 bit
}
transformer.ft(toTransform);
}
audioRecord.stop();
我得到一个有效的结果,但问题是输出频率的振幅在某种正弦波中如此振荡,这有点奇怪,因为它应该是常数。
我知道FFT通常有复杂的部分,但上面的库只是给出了真正的价值。这个FFT库是否适合使用,或者我错过了什么?