NOTA: questo non è un duplicato, ho requisiti specifici oltre alle domande correlate.Come faccio a tracciare lo spettro di un file wav usando FFT?
Per iniziare, voglio tracciare lo spettro di un file audio (.wav) proprio come fa l'audacity (simile: How to draw a frequency spectrum from a Fourier transform).
Finora sono in grado di leggere e scrivere file wav. Ma il mio problema è che non so esattamente quali valori devo passare alla funzione FFT. Dal modo in cui sto usando Exocortex per FFT in C#. La funzione FFT richiede che io passi una serie di numeri complessi con le giuste dimensioni (512, 1024, ... presumo), un parametro intero opzionale per la lunghezza e la direzione del fourier (avanti/indietro).
Domande specifiche:
- Il Complesso (classe) dalla libreria Exocortex ha due valori e cioè reali e immaginari. Ho la matrice di campioni, quindi quale dovrebbe essere reale e quale dovrebbe essere immaginaria?
- Ho il file wav, quindi la variabile deve essere assunta. Come posso passare alla funzione FFT? Dovrei selezionare una dimensione (512/1024/etc), dividere l'intero campione alla dimensione, quindi passare tutto alla FFT?
- Come faccio a sapere quali frequenze devono essere elencati in giù sul asse x?
- Come si tracciano i dati di FFT? (Voglio che l'asse x sia la frequenza e l'asse y in decibel)
Se non ottieni ciò che intendo, prova ad utilizzare Audacity, importa un file audio, quindi fai clic su Analizza> Traccia Spettro. Quelle sono le cose che vogliono ricreare. Per favore rispondi alla mia domanda in dettaglio perché voglio davvero imparare questo. Ho solo un piccolo background su questo. Sono solo un principiante nell'elaborazione del segnale digitale. Inoltre, per quanto possibile, non indirizzarmi verso altri siti FFT perché non rispondono specificamente alla mia domanda.
EDIT:
Ho fatto qualche lettura e scoperto come FFT un dati audio, ma solo in potenze di 2. Quindi, come faccio a fare lo stesso in un file audio con una lunghezza che è non di poteri di 2? Secondo alcuni ho bisogno di usare "finestra". Ho anche fatto qualche ricerca al riguardo e ho scoperto che serve solo una parte della forma d'onda per essere elaborata in seguito. Ricorda sopra che voglio ottenere la FFT del file audio non una parte di esso. Quindi cosa dovrei fare ora? Si prega di aiutare :(
Stai parlando di questo http://sourceforge.net/projects/exocortexdsp/?source=navbar? – Vadim
Per quanto riguarda la nota: 1. Stai chiedendo troppo per una singola domanda. Questo è più materiale per la matematica e otterrai risposte molto migliori (e più) nei forum dedicati. 2. Se i tuoi file contengono un numero di campioni che non è una potenza di due, devi riempirlo con zeri per rendere le sue dimensioni una potenza di due. Questa è una limitazione di FFT. 3. Fondamentalmente si utilizza una finestra per eseguire la FFT su una parte dei dati (se questo è ciò che è necessario). Ma va molto più in profondità, ci sono finestre differenti con effetti diversi. – Vadim
Quello che stai cercando di generare è chiamato [spettrogramma] (http://en.wikipedia.org/wiki/Spectrogram). Sarebbe meglio chiedere come tracciare uno spettrogramma piuttosto che chiedere dello spettro. –