Как слушать микрофонный вход и анализировать в реальном времени?
Привет, к сожалению, мне не удалось выяснить звук на iPhone. Лучшее, что я приблизил, это классы AVAudioRecorder/Player, и я знаю, что они не подходят для обработки аудио.
Так что мне интересно, сможет ли кто-нибудь объяснить мне, как "слушать" входной микрофон iPhone в кусках, скажем, 1024 сэмплов, анализировать образцы и делать какие-то вещи. И продолжайте так, пока мое приложение не прекратится или не сообщит, чтобы он остановился. Я не хочу сохранять какие-либо данные, все, что я хочу, - это анализировать данные в реальном времени и делать с ними в реальном времени.
Я попытался попытаться понять пример яблок "aurioTouch", но это слишком сложно для понимания.
Так может кто-нибудь объяснить мне, как я должен это делать?
Ответы
Ответ 1
Если вы хотите анализировать аудио вход в режиме реального времени, он не становится намного проще, чем Apple aurioTouch iOS пример приложения с исходным кодом (есть также зеркальный сайт). Вы можете google немного больше информации об использовании Audio Unit RemoteIO API для записи, но вам все равно придется вычислять часть DSP в режиме реального времени.
API очереди аудио немного проще для получения входных буферов необработанных аудиоданных PCM от микрофона, но не намного проще и имеет более высокую задержку.
Добавлено позже: там также версия aurioTouch, преобразованная в Swift: https://github.com/ooper-shlab/aurioTouch2.0-Swift
Ответ 2
Класс AVAudioPlayer/Recorder не приведет вас туда, если вы хотите обрабатывать аудио в реальном времени. Основы Audio Toolbox и Audio Unit - это путь. Проверьте здесь для руководства по программированию звука Apple, чтобы посмотреть, какая структура соответствует вашим потребностям. И поверьте мне, эти вещи низкого уровня непросты и плохо документированы. В CocoaDev есть несколько руководств, где вы можете найти примеры кодов. Кроме того, есть аудио-библиотека DSP DIRAC Недавно я обнаружил, что для темпа и манипуляции с тангажом. Я не задумывался над этим, но вы можете найти его полезным.
Ответ 3
Если все, что вам нужно, это сэмплы с минимальным объемом обработки ОС, вам, вероятно, понадобится API очереди аудио; см. Руководство по программированию служб очереди аудио.
AVAudioRecorder предназначен для записи в файл, а AudioUnit - больше для "подключаемой" обработки звука (и на стороне Mac, AU Lab на самом деле довольно крутой).