2010-11-21 11 views
10

Ciao purtroppo non sono stato in grado di capire l'audio sull'iPhone. Il meglio che ho incontrato sono le classi AVAudioRecorder/Player e so che non sono utili per l'elaborazione audio.Come ascoltare l'ingresso microfonico e analizzare in tempo reale?

Quindi mi chiedo se qualcuno sarebbe in grado di spiegarmi come "ascoltare" l'ingresso del microfono dell'iPhone in blocchi di 1024 campioni, analizzare i campioni e fare cose. E continua così fino a quando la mia app non termina o dice di fermarsi. Non sto cercando di salvare alcun dato, tutto quello che voglio è analizzare i dati in tempo reale e fare cose in tempo reale con esso.

Ho tentato di provare a capire l'esempio di "aurioTouch" di mele, ma è troppo complicato per me da capire.

Quindi qualcuno può spiegarmi come dovrei farlo?

risposta

11

Se si desidera analizzare l'input audio in tempo reale, non è molto più semplice di Apple aurioTouch iOS sample app with source code (c'è anche a mirror site). Puoi avere maggiori informazioni su google sull'utilizzo dell'API RemoteIO Audio Unit per la registrazione, ma dovrai comunque calcolare la porzione DSP dell'analisi in tempo reale.

L'API della coda audio è leggermente più semplice per ottenere i buffer di ingresso dei dati audio PCM grezzi dal microfono, ma non è molto più semplice e ha una latenza più elevata.

aggiunto in seguito: C'è anche una versione di aurioTouch convertito in Swift qui: https://github.com/ooper-shlab/aurioTouch2.0-Swift

+3

Lo fa arrivare più semplice, vi consiglio di utilizzare [Novocaine] (https://github.com/alexbw/novocaine) e [ NVDSP] (https://github.com/bartolsthoorn/NVDSP) (Sono l'autore di quest'ultimo) – bartolsthoorn

+0

Link in questa risposta è rotto ora. –

+0

Ho aggiornato il collegamento – Bobrovsky

1

Se tutto ciò che si desidera è un campione con una quantità minima di elaborazione da parte del sistema operativo, probabilmente si desidera l'API della coda audio; vedi Audio Queue Services Programming Guide.

AVAudioRecorder è progettato per la registrazione su un file e AudioUnit è più per l'elaborazione audio "collegabile" (e sul lato Mac di cose, AU Lab è in realtà piuttosto interessante).

2

La classe AVAudioPlayer/Recorder non ti porterà lì se desideri eseguire un'elaborazione audio in tempo reale. La struttura degli strumenti audio e delle unità audio è la strada da percorrere. Controlla here per la guida alla programmazione audio di Apple per vedere quale struttura è adatta alle tue necessità. E credimi, queste cose di basso livello non sono facili e sono scarsamente documentate. CocoaDev ha uno tutorials dove puoi trovare codici di esempio. Inoltre, c'è una libreria DSP audio DIRAC che ho scoperto di recente per il tempo e la manipolazione del pitch. Non l'ho esaminato molto ma potresti trovarlo utile.

Problemi correlati