Как слушать вход микрофона и анализировать в режиме реального времени? - PullRequest
12 голосов
/ 21 ноября 2010

Привет, к сожалению, я не смог выяснить звук на iPhone. Лучшее, к чему я приблизился, - это классы AVAudioRecorder / Player, и я знаю, что они не годятся для обработки звука.

Так что мне интересно, сможет ли кто-нибудь объяснить мне, как «слушать» микрофонный вход iPhone в кусках, скажем, 1024 сэмпла, анализировать сэмплы и делать что-то еще. И продолжайте так до тех пор, пока мое приложение не закроется или не скажет, что оно остановилось. Я не собираюсь сохранять какие-либо данные, все, что мне нужно, - это анализировать данные в реальном времени и делать с ними что-то в реальном времени.

Я попытался понять пример "aurioTouch" яблок, но он слишком сложен для понимания.

Так может ли кто-нибудь объяснить мне, как я должен поступить об этом?

Ответы [ 3 ]

12 голосов
/ 22 ноября 2010

Если вы хотите проанализировать аудиовход в режиме реального времени, то это не намного проще, чем пример приложения Apple aurioTouch для iOS с исходным кодом (есть также зеркальный сайт ).Вы можете получить в Google немного больше информации об использовании Audio Unit RemoteIO API для записи, но вам все равно придется разобраться в части анализа DSP в реальном времени.

API Audio Queue немного проще для получения входных буферов необработанных аудиоданных PCM с микрофона, но не намного проще и имеет большую задержку.

Добавлено позже: естьтакже версия aurioTouch, преобразованная в Swift здесь: https://github.com/ooper-shlab/aurioTouch2.0-Swift

2 голосов
/ 21 ноября 2010

Класс AVAudioPlayer / Recorder не доставит вас туда, если вы захотите обработать звук в реальном времени. Основы Audio Toolbox и Audio Unit - это то, что нужно. Проверьте здесь для руководства аудио программирования Apple, чтобы увидеть, какой фреймворк соответствует вашим потребностям. И поверьте мне, эти вещи низкого уровня не легки и плохо документированы. У CocoaDev есть несколько обучающих программ , где вы можете найти примеры кодов. Кроме того, есть аудио библиотека DSP DIRAC , которую я недавно обнаружил для управления темпом и высотой звука. Я не особо разбирался в этом, но вы могли бы найти это полезным.

1 голос
/ 21 ноября 2010

Если все, что вам нужно, это сэмплы с минимальным объемом обработки операционной системой, вам, вероятно, нужен API Audio Queue; см. Руководство по программированию служб Audio Queue * .

AVAudioRecorder предназначен для записи в файл, а AudioUnit больше подходит для «подключаемой» обработки звука (а со стороны Mac AU Lab на самом деле довольно крутой).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...