Преобразование звука в частоту в Android
Возможный дубликат:
Обнаружение шага в реальном времени
Определите звуковую частоту звука, полученного через микрофон
Я разрабатываю свой собственный гитарный тюнер для Android. Здесь мне придется использовать частоту гитарной ноты. Поэтому я хочу знать, как преобразовать звук, поступающий через микрофонный порт, в его частоту в Android?
2 ответа
РЕДАКТИРОВАТЬ: ссылка не работает --- Эта проблема уже решена здесь---
Подведу итоги работы:
Запись материала:
int minSize = AudioRecord.getMinBufferSize(sampleRate,AudioFormat. CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); AudioRecord audioInput = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); minSize); ... short[] buffer = new short[readSize]; audioInput.startRecording(); audioInput.read(buffer, index, readSize); // record data from mic into buffer
Проанализируйте частоту, используя БПФ.
Я бы сказал, что вы записываете около 4 секунд применения FFT. Как hotpaw2 говорит, что вы должны использовать алгоритмы оценки высоты тона, чтобы определить диапазон частот записанного звука от ударных.
Вам потребуется алгоритм оценки основного тона (было опубликовано много таких, как автокорреляция, ASDF/AMDF, кепстральная обработка, спектр гармонических произведений, RAPT, YAAPT и т. Д.). Одна только оценка частоты не подходит для настройки гитары, поскольку высота ноты отличается от спектральной частоты.