Tag: goertzel算法

使用Goertzel算法检测频率

我正在尝试编写一个程序,用于使用Goertzel算法检测频率。 然而,当我将算法应用于我从AudioRecord read()方法获得的数据时,幅度不会在目标频率上达到峰值(.ie:它通常在低频上达到峰值)。 我误会了什么吗? protected void detect() { double[] dbSample = new double[bufferSize]; short[] sample = new short[bufferSize]; max_magnitude = 0; while(isRecording){ int bufferReadResult = recorder.read(sample,0,bufferSize); for (int j=0;j<bufferSize&&j<bufferReadResult;j++) { dbSample[j] = (double)sample[j]; } } int freq=0; while(freq<=20000){ Goertzel g = new Goertzel(RECORDER_SAMPLE_RATE,freq,bufferSize); g.initGoertzel(); for(int i=0;imax_magnitude){ max_magnitude = magnitude; detect_freq = freq; } g.resetGoertzel(); freq+=50; […]