Come registrare su .wav dal microfono dopo aver applicato una trasformata di Fourier veloce e un filtro passa alto su di esso?

StackOverflow https://stackoverflow.com/questions/1640638

  •  08-07-2019
  •  | 
  •  

Domanda

Ricevo input dal microfono e applico il fft su di esso. Successivamente, inserisco frequenze superiori a 1KHz con zero (il filtro passa-alto).

Voglio sapere come posso registrare l'input dal microfono dopo averlo passato a fft e dopo l'applicazione del filtro passa-alto.

Sto lavorando con c #, cosa devo fare? : P

È stato utile?

Soluzione

Dopo FFT e filtro, è necessario eseguire una FFT inversa per ripristinare i dati nel dominio del tempo. Quindi vuoi aggiungere quella serie di campioni al tuo file .WAV.

Per quanto riguarda la produzione del file stesso, il formato è ampiamente documentato (Googling per "formato .WAV" dovrebbe generare più risultati di quanto tu non abbia mai usato), e piuttosto semplice. È fondamentalmente una semplice intestazione (chiamata "chunk") che dice che è un file .WAV (o in realtà un file "RIFF"). Quindi c'è un " fmt " pezzo che racconta il formato dei campioni (bit per campione, campioni al secondo, numero di canali, ecc.) Quindi c'è un "dato" " pezzo che contiene i campioni stessi.

Dal momento che sembra che lo farai in tempo reale, il mio consiglio sarebbe di dimenticare di fare il tuo FFT, filtro e iFFT. Un filtro FIR darà essenzialmente gli stessi risultati, ma generalmente molto più velocemente. L'idea di base del filtro FIR è che invece di convertire i tuoi dati nel dominio della frequenza, filtrandoli e convertendoli nel dominio del tempo, converti i tuoi coefficienti di filtro nel dominio del tempo e li applichi (in modo equo) direttamente ai tuoi dati di input. È qui che i DSP guadagnano il loro mantenimento: quasi tutti hanno istruzioni per l'accumulo multiplo, che possono implementare la maggior parte di un filtro FIR in un'unica istruzione. Anche senza quello, tuttavia, ottenere un filtro FIR da eseguire in tempo reale su un processore moderno non richiede alcun vero trucco a meno che non si stia eseguendo un campionamento davvero veloce. In ogni caso, è molto più facile far funzionare un FFT / filtro / iFFT alla stessa velocità.

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