Stack Overflow на русском Asked by demo on November 24, 2021
Получаю массив байт с микрофона:
void createAudioRecorder() {
final AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
8192, //частота сэмплинга
AudioFormat.CHANNEL_IN_MONO, //количество каналов
AudioFormat.ENCODING_PCM_16BIT, //формат PCM
2048);
final byte[] buffer = new byte[myBufferSize];
recorder.startRecording();
final boolean isRecording = true;
Thread recordingThread = new Thread(new Runnable() {
public void run() {
while (isRecording) {
// читаем байты с микрофона в буфер
recorder.read(buffer, 0, 1024); //читаем кусками по 1024
//дальше что-то с этим делаем (видимо раскладываем на частоты)
for (int i = 0; i < buffer.length; i++) {
System.out.println(buffer[i]);
}
}
}
});
recordingThread.start();
}
В данном случае buffer
– это массив байт.
Не могу разобраться, как из массива "цифр" можно получить частоты аудио?
Массив имеет примерно следующий вид:
...
2020-07-20 21:16:27.699 19289-19330/? I/System.out: -23
2020-07-20 21:16:27.699 19289-19330/? I/System.out: -1
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 4
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 0
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 7
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 0
...
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 20
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 0
2020-07-20 21:16:27.699 19289-19330/? I/System.out: 33
...
Вы запрашиваете поток данных в виде AudioFormat.ENCODING_PCM_16BIT
- что означает в переводе на нормальный язык PCM - Pulse Code Modulation - грубо говоря оцифрованная амплитудная модуляция сигнала. Простая синусоида (то есть 1 частотный сигнал) в PCM выглядит примерно так:
Для того, чтобы получить частоты вам надо сделать Фурье преобразование, точнее FFT (Fast Fourier Transformation)
Например так
Answered by Barmaley on November 24, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP