我目前正試圖執行一些代碼使用Android來檢測通過手機的麥克風播放大量的特定音頻範圍。Android音頻FFT檢索使用audiorecord特定頻率幅度
int channel_config = AudioFormat.CHANNEL_CONFIGURATION_MONO;
int format = AudioFormat.ENCODING_PCM_16BIT;
int sampleSize = 8000;
int bufferSize = AudioRecord.getMinBufferSize(sampleSize, channel_config, format);
AudioRecord audioInput = new AudioRecord(AudioSource.MIC, sampleSize, channel_config, format, bufferSize);
的音頻然後閱讀:
short[] audioBuffer = new short[bufferSize];
audioInput.startRecording();
audioInput.read(audioBuffer, 0, bufferSize);
執行FFT是我被卡住,因爲我有這方面的經驗非常少我已經使用AudioRecord
類設置類。我一直在嘗試使用這個類:
FFT in Java和Complex class to go with it
我然後發送以下值:
Complex[] fftTempArray = new Complex[bufferSize];
for (int i=0; i<bufferSize; i++)
{
fftTempArray[i] = new Complex(audio[i], 0);
}
Complex[] fftArray = fft(fftTempArray);
這很容易被我誤解這個類是如何打算工作,但這些數值會在整個地方跳回來,即使在沉默中也不能代表一致的頻率。是否有人意識到執行此任務的方法,或者我是否過度複雜,試圖只抓取少量頻率範圍,而不是將其繪製爲圖形表示?
嘿,如果你想通了,你能不能請張貼代碼的最終版本? thx – 2013-07-10 14:19:57