Domanda

Come in questo esempio Come per estrarre le informazioni di frequenza da un flusso audio in ingresso (usando PortAudio)? mi incuriosisce PortAudio e NumPy ...

Io non sono sicuro al 100% su FFT, come posso passare NumPy un pezzo e tornare tre valori da -1,0 a 1,0 per bassi, medi e alti?

Non mi importa se questo solo per un canale che posso dare un senso alla parte audio di questo, è la matematica che nuotano davanti a me quando li guardo:)

È stato utile?

Soluzione

In realtà, non usa una trasformata di Fourier per fare questo.

Splitting qualsiasi segnale audio in bassi, medi e alti di solito è fatto utilizzando i filtri. Un è un dispositivo di elaborazione del segnale che attenua certi intervalli di frequenza. I filtri possono essere costruire digitalmente o elettricamente. Ad esempio, vengono utilizzati nei sistemi di crossover audio negli altoparlanti.

Per ottenere la parte di basso a bassa frequenza è necessario utilizzare un filtro passa-basso. Filtro passa basso filtrare le alte frequenze. Essi sono chiamati anche i filtri 'taglio alto.
Per ottenere la metà parte delle frequenze medie si dovrebbe utilizzare un filtro passa-banda. filtri passa-banda del filtro entrambe le frequenze alte e basse. Essi sono anche chiamati 'bell-filtri.
Per ottenere la parte acuti ad alta frequenza è necessario utilizzare un filtro passa-alto. filtri passa-alto filtrare eventuali basse frequenze. Essi sono chiamati anche filtri 'low-cut'.

In realtà, si potrebbe anche usare solo il passa-alto e filtro passa-basso. Se si sottrae entrambi i segnali filtrati dal segnale originale, il risultato sarebbe un segnale filtrato passa-banda. Ciò consente di risparmiare un filtro.

Ogni filtro avrà una frequenza di soglia. La frequenza soglia è una particolare frequenza, da cui il filtro deve iniziare filtraggio. A seconda l'ordine del filtro, il segnale verrà attenuato di 6 dB / oct (1 ° ordine), 12 dB / oct (2 ° ordine), 18 dB / oct (3 ° ordine), ecc per l'applicazione, un disegno di 2 ° ordine è probabilmente bene.
Nota che filtra nel caos generale, con il segnale in qualche modo e maggiore è l'ordine, il più udibile questo può ottenere. Tra l'altro, questo è fisica pura e vera per tutta l'elaborazione del segnale compreso trasformate di Fourier.

L'utilizzo di questi tre filtri è (può essere) equivale a fare una trasformata di Fourier con solo tre punti spettrali.

Altri suggerimenti

Il Fourier Transform , citato nella risposta selezionato alla domanda SO si punta, ti dà lo "spettro" -. una grande collezione di valori che danno l'intensità del suono in ciascuna delle varie gamme / fette di frequenze (espresse, ad esempio, in Hertz)

Come tradurre (diciamo) un migliaio di intensità (uno per ogni fetta 10-Hertz dello spettro, diciamo) in soli tre numeri, come si desidera, è, naturalmente, un bel problema euristica - per esempio si potrebbe semplicemente decidere che varia di frequenze corrispondono a "bassi" e "alti", con tutto nel mezzo essere "metà", e calcolare le intensità medie in ciascuna. Per quel che vale, ritengo una convenzione comune per "basso" è fino a 250Hz, per 6KHz "alti" o superiore (in-between essere il "midrange"), cfr esempio questa pagina - ma è piuttosto una convenzione arbitraria, così, "scegli il tuo veleno" ! -)

Una volta che hai relativi livelli ti consigliamo di normalizzare loro con rispetto gli uni agli altri e li scalare in modo appropriato a mentire nella vostra gamma desiderata (presumibilmente su una scala logaritmica, perché questo è funziona udito come umani ; -).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top