Perché utilizzare la trasformata di Fourier veloce per la riduzione del rumore anziché un filtro elettronico classico?


17

Mi piacerebbe sapere come rimuovere il rumore ambientale da una registrazione vocale.

Ho fatto alcune ricerche e ho notato che la maggior parte dei metodi proposti utilizza la rapida trasformata di Fourier. Ma perché non puoi usare un filtro elettronico classico per rimuovere le frequenze del rumore? Perché preoccuparsi di fare una FFT?


Perché fft offre un output di qualità migliore ??
Solar Mike,

4
Confronta il prezzo di un sistema DSP 5GS / s con quello di un gruppo di indutori e tappi ...
PlasmaHH,

1
Forse puoi fare un filtro più complesso con un fft. i "filtri elettronici classici" rimuovono semplicemente tutte le frequenze in un determinato intervallo. Inoltre, ecco il tuo badge studente, un regalo da parte mia.
Andrew Pikul,

1
Ho 2 problemi con la tua domanda: (1) Cosa intendi con "filtro elettronico classico"? (2) Il fatto che qualcosa sia fatto in un modo (FFT) NON significa che NON può essere fatto in un altro modo (filtro); ci possono essere solo alcuni svantaggi di farlo nell'altro modo. Supponete, tuttavia, che non sia possibile avere a che fare con il filtro elettronico classico (qualunque cosa intendiate con quello), il che probabilmente è sbagliato.
Cagliata il

Qual è il formato della tua registrazione vocale (analogica o digitale)? La latenza è un problema (live vs. after the fact)? Quanto dura la registrazione (una canzone rispetto ai giorni di registrazione)?
Copper.hat il

Risposte:


25

Mi piacerebbe sapere come rimuovere il rumore ambientale da una registrazione vocale.

Bene, ora è archiviato in digitale, giusto? quindi hai intenzione di mettere il microfono vicino all'altoparlante dopo un filtro analogico per ri-registrarlo?

Basta scherzare, sarò serio.


Per fare in modo che un filtro si attenui di più in un intervallo di frequenze più piccolo, ovvero rendendo la curva di risposta in frequenza più verticale, è sufficiente aumentare l'ordine del filtro.

Questo è qualcosa che è ragionevolmente facile da fare in Matlab. È anche qualcosa che è fattibile per eseguire la post-elaborazione. Riguarda anche la ripetibilità, se applichi il filtro in una giornata di sole oggi, ti aspetti che funzioni in modo identico a domani quando piove. Ti aspetti che funzioni esattamente allo stesso modo, giusto?

Nei circuiti analogici hai tutti questi "resistori al 5%", "condensatori all'1%" e tutte le altre cose. Quindi, se vuoi fare qualcosa di esatto, dovrai sicuramente tagliare il circuito in seguito in modo che corrisponda perfettamente al filtro desiderato. Se vuoi aumentare l'ordine del filtro ... allora purtroppo .. renderà il filtro molto più grande fisicamente. Invece di assumere le dimensioni di una carta di credito, occuperà le dimensioni di, non lo so, dipende dall'ordine del filtro e da cosa stai bene.

Per quanto riguarda la ripetibilità, fare qualcosa oggi .. caldo .. domani .. più freddo ... le resistenze cambieranno leggermente, la risposta in frequenza cambierà, un paio di Hz lì, alcuni lì, più componenti avrai nei tuoi circuiti , è più probabile che i componenti cambino i loro valori. E poi hai l'umidità, l'ossidazione ...

Ed ecco la battuta finale che avrei dovuto dire prima, non puoi davvero post-elaborarlo, a meno che tu non abbia dei nastri a cassetta. Non sono sicuro al 100% quale supporto musicale analogico venga utilizzato per registrare / eliminare facilmente. I dischi LP sarebbero un incubo ...

E non dimentichiamo il prezzo. Uno è il software, se lo scrivi tu stesso è essenzialmente gratuito, l'altro richiede componenti, parti fisiche.

Ma non pensare che i filtri analogici siano cattivi, hanno ottenuto i loro usi, come la rimozione di brutte armoniche nei grandi motori a corrente continua o la fabbricazione di motori passo-passo ultra silenziosi per le stampanti 3D uniformando la corrente. E tonnellate di altri usi. - Inoltre, se lo risolvessi con un filtro analogico, nessuno penserebbe che sarebbe una cattiva soluzione.

Credo di rispondere indirettamente al motivo per cui FFT è un modo migliore per farlo, post-elaborazione saggia. La linea di fondo è che è molto più economico da fare. Puoi anche applicare un filtro notch se sai a quale frequenza è il rumore. O un filtro bandtop più largo, noto anche come.

E l'ultima cosa che voglio aggiungere ... woaw questa risposta è così lunga, mi dispiace. Ma se usi un filtro analogico e ... fai un casino con i tuoi calcoli e poi pensi che sia tutto a posto e dandy e lo usi in qualche evento serio, come intervistare il re di Svezia (Knugen). E hai incasinato il dimensionamento di un condensatore, invece di filtrare il rumore a 16kHz, stai filtrando il "rumore" a 4kHz. Se invece lo gestisci in modo digitale, allora si tratta solo di modificare alcune variabili, non è necessario dissaldare -> saldare un altro componente. Anche l'intervista è rovinata.


4
Hans Majonnäs Honung Carl XVI Gustaf
pipe

@pipe Tackar, det behövdes. (Grazie, ne avevo bisogno.)
Harry Svensson,

Domanda di follow-up (perché questa risposta dipende troppo da una definizione letterale di analogico). Perché scegliere FFT per filtrare il rumore anziché i classici filtri polinomiali?
slebetman,

@slebetman non aspettarti che io risponda a questo.
Harry Svensson,

Questa è stata una risposta abbastanza solida! Grazie fratello e grazie a tutti quelli che hanno risposto, non mi aspettavo tanto aiuto! Farò sicuramente altre domande in questo forum. Grazie ancora!
Jazis,

7

Ma perché non puoi usare un filtro elettronico classico per rimuovere le frequenze del rumore?

Chi dice che non puoi? È così che è stato fatto nei giorni precedenti l'elaborazione digitale del segnale. Il problema è che filtrare il rumore è sempre un compromesso tra mantenere intatto il segnale desiderato (parlato, musica) mentre si abbassa il rumore.

Per i nastri a cassetta e altri sistemi di registrazione su nastro analogici sono stati utilizzati sistemi come DNL e Dolby che filtrano solo quando il segnale è debole, il che significa che il rumore è più udibile. Quindi quando il segnale è più forte il filtro si attenua. Vedi: Articolo di Wikipedia sulla riduzione del rumore

Il parlato può essere limitato a una banda di frequenza stretta come da 300 Hz a 3 kHz pur essendo perfettamente comprensibile. Potresti creare un semplice filtro analogico per quella banda, ma ciò limiterebbe la quantità di rumore soppressa. Per filtrare in modo più efficace le frequenze al di fuori di questa banda richiederebbe un filtro analogico complesso. Tali filtri sono difficili da progettare, costruire e produrre.

È qui che entra in gioco l'elaborazione del segnale digitale. Nel dominio digitale è molto più semplice implementare filtri complessi con molti poli e zeri. Inoltre, poiché la posizione (nel dominio della frequenza) di questi poli e zeri è collegata all'orologio del DSP (Digital Signal Processor), che è un accurato (cristallo) clock, il filtro sarà molto più accurato rispetto a un'implementazione analogica .


+1 per menzionare il compromesso tra il mantenimento dei segnali desiderati e la rimozione indesiderata. Il problema è che il parlato e il rumore occupano le stesse frequenze, quindi un filtro FFT può rimuovere il rumore "baseline", cioè dopo aver analizzato l'ampiezza del rumore ad ogni frequenza senza parlato , che può essere rimosso dove c'è discorso. Ecco come funzionano i filtri antirumore FFT in Audacity ecc. Ecc.
Ingegnere invertito

Non sono sicuro di ciò che rende i filtri analogici particolarmente difficili da progettare e costruire .. Tutto ciò di cui hai sostanzialmente bisogno sono uno o due opamp e alcuni resistori e condensatori. E poiché gli opamp di solito sono disponibili in doppi pacchetti, è necessario solo un chip. Di solito userei il filtro analogico per fare il filtro passa-basso per assicurarmi che ci sia poco segnale ad alta frequenza con alias nel segnale. In seguito non puoi liberartene con FFT. D'altra parte non è un problema fare il filtro passa-banda FFT quando si ha una "registrazione" pulita da elaborare.
Barleyman,

@Barleyman non sono sicuro di ciò che rende i filtri analogici particolarmente difficili da progettare e costruire, mi riferivo a filtri di alto ordine come il 4 ° ordine e superiori. Sono d'accordo che un paio di opamps. resistori e condensatori possono fare quasi qualsiasi filtro di ordine ma hai già provato a progettarne uno? Ho, ok, un simulatore, ma poi hai già incontrato condensatori standard non abbastanza precisi . A ordini superiori il valore preciso dei componenti diventa sempre più importante.
Bimpelrekkie,

Anche l'aliasing non è più un problema del genere, dato che ora abbiamo ADC e DAC sigma-delta con frequenze di campionamento molto elevate, quindi è sufficiente un semplice RC.
Bimpelrekkie,

@Bimpelrekkie Ne ho disegnati diversi, nulla al giorno d'oggi .. Ai giorni nostri avresti usato un libro con alcune scelte di parametri precalcolati con cui avresti passato un po 'di tempo a fare casino per ottenere dei ragionevoli valori dei componenti. La precisione non è un grosso problema se non stai cercando di essere troppo selettivo. RC non svolge davvero il lavoro se si sta tentando di effettuare, ad esempio, la registrazione audio. Con -20dB / decade dovresti mettere il filtro a 2.2kHz per ottenere un qualche tipo di filtraggio alla frequenza di Nyquist. Cherbychew del 3 ° ordine farebbe meglio a 12kHz fc. Il 5 ° ordine ti porterebbe a -46dB che è "abbastanza buono"
Barleyman il

5

Bene, il primo passo per capire perché abbiamo bisogno di FFT è capire come funziona il filtro digitale.

Quindi, fondamentalmente, hai una struttura, come un registro a scorrimento, con un numero di elementi di memoria, un input e un output. Un valore campione entra nell'input, viene spostato nel registro e si sposta sull'output. In ogni fase del registro, viene moltiplicato per un numero chiamato coefficiente di filtro.

Questa idea funziona bene quando si dispone di un registro rapido che esegue moltiplicazioni rapide e i campioni arrivano lentamente uno per uno.

Nella vita reale, invece, molto probabilmente otterrai un frame composto da un numero di campioni. Quando vuoi filtrarlo, contrai i campioni con i coefficienti di filtro. È come fare l'approccio precedente, ma sembra solo un po 'diverso.

Ora arriva la parte FFT. Si scopre che la convoluzione cresce in complessità numerica molto rapidamente con il numero di campioni. D'altra parte, la FFT è inizialmente numericamente complicata, ma il numero di operazioni necessarie aumenta molto più lentamente con l'aumento dei coefficienti di filtro rispetto alla convoluzione.

Ciò che significa sopra è che sopra un certo numero di campioni, sarà molto più veloce convertire un segnale nel dominio della frequenza usando un FFT, filtrare il segnale nel dominio della frequenza e poi riconvertirlo usando IFFT. Il trucco che stiamo usando è una delle proprietà della convoluzione, vale a dire che la convoluzione nel dominio del tempo può, in alcune circostanze, essere modellata come moltiplicazione nel dominio della frequenza.

Quindi per riassumere, se il numero di coefficienti di filtro che hai è sufficientemente grande, FFT è più veloce. Il "grande" potrebbe essere piccolo come un centinaio.


3
Penso che per "filtro elettronico classico" intendesse un filtro analogico, non convoluzione.
jalalipop,

1
@jalalipop Potrebbe essere, ma volevo esplicitamente spiegare la parte FFT. Al momento, abbiamo già avuto una risposta che spiega perché vorremmo avere filtri digitali anziché analogici.
AndrejaKo

2

I metodi basati su FFT (dovrai ancora lavorare con le finestre e le modifiche di sovrapposizione, aggiunta o sovrapposizione) hanno come vantaggio principale che il design sia solidamente nel dominio della frequenza e un filtro Wiener o sottrazione spettrale o un numero di altri sistemi che si basano su statistiche del segnale e un modello funzionano davvero fondamentalmente nel dominio della frequenza.

Al contrario, la cancellazione dell'eco e varie varianti non si basano su un modello del rumore ma su una registrazione imperfetta fortemente correlata al rumore. Questi vengono fatti usando vari filtri (di solito FIR) per sottrarre una stima del rumore dal segnale e aggiornare i filtri al fine di mantenere minima la correlazione del segnale rimanente con il canale del rumore. Per queste tecniche, FFT non è poi così utile (quando sono consentiti notevoli ritardi del segnale risultante e degli aggiornamenti del filtro, possono essere impiegati come componenti in una FIR blackbox con ritardo per motivi di prestazioni ma non sono davvero utili per il loro capacità di rappresentazione del dominio della frequenza).


solidamente nel dominio della frequenza . Non sarebbe un vantaggio particolare se non fosse perché i toni e le note hanno il tono di fondo e le proprietà di tonalità.
Mathathler,

2

I filtri analogici sono abbastanza facili da progettare, ma il limite è che è necessario continuare ad aggiungere elementi di filtro fisici per ottenere il filtraggio dell'arresto di banda di determinate frequenze. E devi regolare i valori dei componenti se vuoi spostare le tacche. Un singolo opamp può eseguire una tacca di arresto della banda, quindi è necessario aggiungere un altro amplificatore per ogni tacca desiderata. Per una tacca più selettiva occorrerebbero due amplificatori per tacca.

In termini pratici, probabilmente saresti meglio servito da un filtro passa basso del 3 ° ordine che puoi fare con un singolo opamp o forse un filtro passa basso del quinto ordine che richiede due. Usa i filtri passa-basso per attenuare le frequenze sopra la frequenza di Nyquist (1/2 frequenza di campionamento) con un certo margine e avrai un campione digitale di alta qualità da post-processare. Con una registrazione pulita come quella, puoi quindi applicare i filtri FFT per creare filtri passa-alto, passa-banda e passa-banda secondo necessità.


1

Il filtro invariante a tempo lineare che fa un "filtro elettronico classico" è solo una moltiplicazione "stupida" nel dominio di Fourier. Ma le informazioni che trovi in ​​una FFT ti dicono più dettagli della semplice risposta di un filtro, che è solo una combinazione lineare di quei componenti. Utilizzando tali informazioni è possibile orientare l'elaborazione dei dati e adattarli ai dati. Il rumore ha alcune caratteristiche che la voce e i toni musicali chiari non hanno, per esempio la correlazione tra le sfumature non è quasi la stessa per il rumore come per la voce o la musica.

Quindi, se siamo in grado di identificare le correlazioni tra i componenti di frequenza, ovvero trovare un "tono di fondo" in qualche modo, possiamo orientare il filtro e renderlo più adatto ai dati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.