Saya memiliki kode sampel yang menetapkan tingkat pengambilan sampel, titik fft dalam rekaman audio. Kode ini adalah
private static final String FILE_NAME = "audiorecordtest.raw";
private static final int SAMPLING_RATE = 44100;
private static final int FFT_POINTS = 1024;
private static final int MAGIC_SCALE = 10;
private void proceed() {
double temp;
Complex[] y;
Complex[] complexSignal = new Complex[FFT_POINTS];
for (int i=0; i<FFT_POINTS; i++) {
temp = (double)((audioBuffer[2*i] & 0xFF) | (audioBuffer[2*i+1] << 8)) / 32768.0F;
complexSignal[i] = new Complex(temp * MAGIC_SCALE, 0d);
}
y = FFT.fft(complexSignal);
/*
* See http://developer.android.com/reference/android/media/audiofx/Visualizer.html#getFft(byte[]) for format explanation
*/
final byte[] y_byte = new byte[y.length*2];
y_byte[0] = (byte) y[0].re();
y_byte[1] = (byte) y[y.length - 1].re();
for (int i = 1; i < y.length - 1; i++) {
y_byte[i*2] = (byte) y[i].re();
y_byte[i*2+1] = (byte) y[i].im();
}
if (handler != null) {
handler.onFftDataCapture(y_byte);
}
}
Kode itu digunakan untuk merekam file mentah dari rekaman audio. Namun, saya ingin mengubah SAMPLING_RATE
menjadi 16000. Bisakah saya menggunakan FFT_POINTS yang sama yaitu 1024? Jika tidak, Tolong sarankan kepada saya cara menghitungnya dan MAGIC_SCALE. Saya mencoba menggunakan nilai-nilai itu tetapi suaranya muncul noise. Terima kasih. Tautan referensinya ada di sini sebuah>