2010-11-21 12 views
10

Hola, lamentablemente, no he podido descifrar el audio en el iPhone. Lo mejor que me he acercado son las clases AVAudioRecorder/Player y sé que no son buenas para el procesamiento de audio.¿Cómo escuchar la entrada de micrófono y analizar en tiempo real?

Así que me pregunto si alguien podría explicarme cómo "escuchar" la entrada de micrófono del iPhone en fragmentos de, digamos, 1024 muestras, analizar las muestras y hacer cosas. Y siga así hasta que mi aplicación termine o le diga que se detenga. No estoy buscando guardar ningún dato, todo lo que quiero es analizar los datos en tiempo real y hacer cosas en tiempo real con él.

He intentado y comprendo el ejemplo de manzanas "aurioTouch", pero es demasiado complicado de entender para mí.

Entonces, ¿alguien me puede explicar cómo debo hacerlo?

Respuesta

11

Si desea analizar la entrada de audio en tiempo real, no es mucho más simple que el aurioTouch iOS sample app with source code de Apple (también hay a mirror site). Puede buscar en Google un poco más de información sobre el uso de la Audio Unit API RemoteIO para la grabación, pero igual tendrá que averiguar la porción DSP del análisis en tiempo real.

La API de Audio Queue es un poco más simple para obtener los búferes de entrada de datos de audio de PCM en bruto del micrófono, pero no mucho más simple, y tiene una latencia más alta.

añadió más tarde: También hay una versión de aurioTouch convertido a Swift aquí: https://github.com/ooper-shlab/aurioTouch2.0-Swift

+3

Se pone más simple, recomiendo que uses [novocaína] (https://github.com/alexbw/novocaine) y [ NVDSP] (https://github.com/bartolsthoorn/NVDSP) (Soy el autor de este último) – bartolsthoorn

+0

El enlace en esta respuesta no está disponible ahora. –

+0

He actualizado el enlace – Bobrovsky

1

Si todo lo que quiere son muestras con una cantidad mínima de procesamiento por el sistema operativo, es probable que desee la API de Audio Queue; ver Audio Queue Services Programming Guide.

AVAudioRecorder está diseñado para grabar en un archivo, y AudioUnit es más para el procesamiento de audio "conectable" (y en el lado de las Mac, AU Lab es realmente genial).

2

La clase AVAudioPlayer/Recorder no lo llevará allí si desea hacer cualquier procesamiento de audio en tiempo real. Los marcos de Audio Toolbox y Audio Unit son el camino a seguir. Consulte here para la guía de programación de audio de apple para ver qué marco se adapta a sus necesidades. Y créanme, estas cosas de bajo nivel no son fáciles y están mal documentadas. CocoaDev tiene algunos tutorials donde puedes encontrar códigos de muestra. Además, hay una biblioteca de audio DSP DIRAC que descubrí recientemente para el tempo y la manipulación de tono. No lo he investigado mucho, pero puede que le resulte útil.

Cuestiones relacionadas