Я использую приложение звукового анализатора в android.I могу генерировать 18 кГц до 20 кГц ультразвукового звука, используя AudioTrack Api.i можно записывать аудио с помощью AudioRecord Api. Но я не могу знаю, как рассчитать частоту формы входных данных микрофона. Я видел несколько вопросов How to get frequency from fft result? и Get frequency wav audio using FFT and Complex class, не давая должной частоты. Пожалуйста, помогите мне. Извините за мое сообщение.Как рассчитать частотный уровень от входных данных микрофона аудиомагнитофона
Это моя частота код вычисления
int bufferSizeInBytes = 1024;
short[] buffer = new short[bufferSizeInBytes];
class Recording extends Thread {
@Override
public void run() {
while (true) {
bufferReadResult = audioInput.read(buffer, 0, bufferSizeInBytes); // record data from mic into buffer
if(bufferReadResult > 0){
calculate();
}
}
}
public void calculate() {
DoubleFFT_1D fft1d = new DoubleFFT_1D(bufferSizeInBytes);//using JTransforms lib
double[] fftBuffer = new double[bufferSizeInBytes * 2];
double[] magnitude = new double[bufferSizeInBytes/2];
// copy real input data to complex FFT buffer
for (int i = 0; i < bufferSizeInBytes - 1; ++i) {
fftBuffer[2 * i] = buffer[i];
fftBuffer[2 * i + 1] = 0;
}
//perform FFT on fft[] buffer
fft1d.realForward(fftBuffer);
// calculate power spectrum (magnitude) values from fft[]
for (int i = 0; i < (bufferSizeInBytes/2) - 1; ++i) {
double real = fftBuffer[2 * i];
double imaginary = fftBuffer[2 * i + 1];
magnitude[i] = Math.sqrt(real * real + imaginary * imaginary);
}
// find largest peak in power spectrum
double max_magnitude = magnitude[0];
int max_index = 0;
for (int i = 0; i < magnitude.length; ++i) {
if (magnitude[i] > max_magnitude) {
max_magnitude = (int) magnitude[i];
max_index = i;
}
}
double freq = max_index * 44100/bufferSizeInBytes;
Log.e("AudioBEacon", "" + freq);
}
}
Это мой output.Please дайте мне знать, где я сделал ошибку.
02-10 12:33:04.450 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21662.0
02-10 12:33:04.451 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21317.0
02-10 12:33:04.453 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21791.0
02-10 12:33:04.471 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21748.0
02-10 12:33:04.472 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21533.0
02-10 12:33:04.474 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21834.0
02-10 12:33:04.491 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21533.0
02-10 12:33:04.493 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21705.0
02-10 12:33:04.511 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21533.0
02-10 12:33:04.512 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21447.0
02-10 12:33:04.513 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21490.0
02-10 12:33:04.531 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21576.0
02-10 12:33:04.551 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21619.0
02-10 12:33:04.591 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21877.0
02-10 12:33:04.613 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21576.0
02-10 12:33:04.633 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21920.0
02-10 12:33:04.653 17013-17063/com.org.sohamsaa.audiobeacontransmitter E/AudioBEacon: 21791.0
Мой диапазон частот 18 кГц до 20 khz.but я не получаю мой frequency.how, чтобы фильтровать frequency.thank вас.
Удалить '(Int)' отливать здесь: 'max_magnitude = (ИНТ) величина [я];' - могут быть и другие проблемы, но это, безусловно, не так. Обратите также внимание на то, что большинство устройств имеют очень слабую чувствительность при> 18 кГц - микрофон обычно имеет плохой ответ выше 15 кГц, и фильтр слияния может также снизить уровни. –
@ Paul R Спасибо за ваш ответ, и я удаляю (int). Но он не работает, и я генерирую 14 кГц, но я не получаю. Это мой результат в журнале E/AudioBEacon: 861.0 E/AudioBEacon: 21404,0 E/AudioBEacon: 21705,0 E/AudioBEacon: 21447,0 E/AudioBEacon: 215,0 E/AudioBEacon: 21705,0 E/AudioBEacon: 344,0 E/AudioBEacon: 473,0 E/AudioBEacon: 430,0 – Siddharthan
что функция окна и как сделать? – Siddharthan