2009-09-15 5 views
8

Desidero analizzare l'audio MIC su base continuativa (non solo un campione o campione preregistrato) e visualizzare il grafico della frequenza e filtrare alcuni aspetti dell'audio. L'iPhone è abbastanza potente per questo? Sospetto che la risposta sia sì, dato il riconoscimento vocale di Google e iPhone, Shazaam e altre app di riconoscimento musicale e app di accordatura per chitarra là fuori. Tuttavia, non so quali limitazioni dovrò affrontare.iPhone: potenza della CPU per eseguire il dominio di trasformazione/frequenza DSP/Fourier?

Chiunque gioca con questa zona?

risposta

3

codice di esempio aurioTouch ha un'implementazione FFT.

+1

Grazie. Wow. Gli sviluppatori hanno sentito parlare di commenti? Qualcuno ha fatto una porta obj-c del proprio C++? Non che sia così importante, ma potrebbe renderlo più leggibile. – mahboudz

+0

vDSP e FFT ora fanno parte di os4 con l'aggiunta di Accelerate.framework – slf

3

Le app che ho visto eseguono una sorta di riconoscimento vocale/musicale richiedono una connessione a Internet, quindi è molto probabile che si tratti solo di una sorta di calcolo delle caratteristiche sull'audio e di inviare queste funzionalità tramite http per eseguire il riconoscimento sul server.

In ogni caso, i grafici delle frequenze e il filtraggio sono stati eseguiti prima su CPU inferiori una dozzina di anni fa. L'iPhone non dovrebbe essere un problema.

0

Non puoi semplicemente portare il codice FFT scritto in C nella tua app ... c'è l'opzione del compilatore di numeri che complica l'aritmetica in virgola mobile. Devi metterlo in modalità braccio

+0

Il codice sopra menzionato è già scritto per l'iPhone. – mahboudz

2

"Abbastanza veloce" può essere una funzione delle tue aspettative (o dei tuoi clienti) su quanta risoluzione di frequenza stai cercando e la tua frequenza di campionamento di base.

Un FFT a N punti è nell'ordine dei calcoli N * log2 (N), quindi se non si dispone di MIPS sufficienti, ridurre N è una potenziale area di concessione per voi.

In molte applicazioni, la frequenza di campionamento non è negoziabile, ma se lo fosse, questa sarebbe un'altra possibilità.

+0

La frequenza di campionamento deve essere il doppio della frequenza più alta che potrei cercare, correggere? – mahboudz

+1

corretto. La spaziatura tra i raccoglitori nel dominio della frequenza è una funzione del numero di punti (N) nella FFT e la frequenza di nyquist è sempre nella parte superiore (metà della frequenza di campionamento). – Overdrive

1

ho fatto un app che calcola la FFT diretta

http://www.itunes.com/apps/oscope

Potete trovare il mio codice per la FFT su GitHub (anche se è un po 'ruvido)

http://github.com/alexbw/iPhoneFFT

Apple nuovo iPhone OS 4.0 SDK consente il calcolo integrato della FFT con la libreria "Accelerate", quindi inizierò sicuramente a lavorare con il nuovo sistema operativo se è una parte centrale della funzionalità della tua app.

+0

Penso di averti visto menzionare oscope oggi nella lista CoreAudio. Congratulazioni per averlo fatto su App Store! – mahboudz

+0

Grazie! Grave scocciatura per le limitazioni della velocità di campionamento, ma l'iPhone è ancora un'incredibile piattaforma per l'analisi audio. – alexbw

Problemi correlati