Pourquoi utiliser la transformée de Fourier rapide pour la réduction du bruit au lieu d'un filtre électronique classique?

17

J'aimerais savoir comment supprimer le bruit ambiant d'un enregistrement vocal.

J'ai fait quelques recherches et j'ai remarqué que la plupart des méthodes proposées utilisent la transformée de Fourier rapide. Mais pourquoi ne pouvez-vous pas utiliser un filtre électronique classique pour supprimer les fréquences de bruit? Pourquoi s'embêter à faire une FFT?

Jazis
la source
Parce que fft donne une sortie de meilleure qualité ??
Solar Mike
4
Comparez le prix d'un système DSP 5GS / s avec celui d'un tas d'inducteurs et de bouchons ...
PlasmaHH
1
Vous pouvez peut-être effectuer un filtrage plus complexe avec un fft. les "filtres électroniques classiques" suppriment simplement toutes les fréquences dans une certaine plage. Aussi, voici votre badge étudiant, un cadeau de moi à vous.
Andrew Pikul
1
J'ai 2 problèmes avec votre question: (1) Qu'entendez-vous par "filtre électronique classique"? (2) Le fait que quelque chose soit fait dans un sens (FFT) ne signifie PAS qu'il NE PEUT PAS être fait dans un autre sens (filtre); il peut y avoir quelques inconvénients à le faire dans l'autre sens. Vous supposez cependant qu'il n'est pas possible de faire avec un filtre électronique classique (quoi que vous entendiez par là), ce qui est probablement faux.
Curd
Quel est le format de votre enregistrement vocal (analogique vs numérique)? La latence est-elle un problème (en direct ou après coup)? Quelle est la durée de l'enregistrement (une chanson par rapport aux jours d'enregistrement)?
copper.hat

Réponses:

25

J'aimerais savoir comment supprimer le bruit ambiant d'un enregistrement vocal.

Eh bien, il est stocké numériquement maintenant, non? prévoyez-vous de placer votre microphone à côté du haut-parleur après un filtre analogique pour le réenregistrer?

Assez déconner, je serai sérieux.


Afin d'atténuer davantage un filtre dans une gamme de fréquences plus petite, c'est-à-dire de rendre la courbe de réponse en fréquence plus verticale, il vous suffit d'augmenter l'ordre du filtre.

C'est quelque chose qui est assez facile à faire dans Matlab. C'est aussi quelque chose qui est faisable de faire du post-traitement. Il s'agit également de répétabilité, si vous appliquez le filtre par une journée ensoleillée aujourd'hui, alors vous vous attendez à ce qu'il fonctionne de manière identique à demain quand il pleut. Vous vous attendez à ce qu'il fonctionne exactement de la même façon, non?

Dans les circuits analogiques, vous avez tous ces "5% résistance", "1% condensateur", et tout le reste. Donc, si vous voulez faire quelque chose d' exact, vous devrez certainement couper le circuit par la suite pour qu'il corresponde parfaitement au filtre souhaité. Si vous voulez augmenter l'ordre du filtre ... alors malheureusement ... cela rendra le filtre beaucoup plus grand physiquement. Au lieu de prendre la taille d'une carte de crédit, elle prendra la taille, je ne sais pas, dépend de l'ordre du filtre et de ce que vous êtes d'accord.

En ce qui concerne la répétabilité, faire quelque chose aujourd'hui .. chaud .. demain .. plus froid ... les résistances changeront très légèrement, la réponse en fréquence changera, quelques Hz là-bas, certains là-bas, plus vous aurez de composants dans vos circuits , il est plus probable que vos composants changeront leurs valeurs. Et puis vous avez de l'humidité, oxydante ...

Et voici la punchline que j'aurais dû dire en premier, vous ne pouvez pas vraiment le post-traiter, à moins d'avoir des cassettes. Je ne suis pas sûr à 100% du support musical analogique utilisé pour enregistrer / supprimer facilement. Les disques LP seraient un cauchemar ...

Et n'oublions pas le prix. L'un est un logiciel, si vous l'écrivez vous-même, il est essentiellement gratuit, l'autre nécessite des composants, des pièces physiques.

Mais ne pensez pas que les filtres analogiques sont mauvais, ils ont leur utilité, tels que la suppression d'harmoniques désagréables dans les gros moteurs à courant continu, ou la fabrication de moteurs pas à pas ultra silencieux pour les imprimantes 3D en lissant le courant. Et des tonnes d'autres utilisations. - Aussi, si vous le résolviez avec un filtre analogique, personne ne penserait que ce serait une mauvaise solution.

Je crois que je réponds indirectement pourquoi la FFT est une meilleure façon de procéder, après le traitement. L' essentiel est que c'est beaucoup moins cher à faire. Vous pouvez également simplement appliquer un filtre coupe-bande si vous savez à quelle fréquence se situe le bruit. Ou un filtre coupe-bande plus large, alias.

Et la dernière chose que je veux ajouter ... woaw cette réponse est si longue, je suis désolé. Mais si vous utilisez un filtre analogique et que vous ... vous trompez avec vos calculs et que vous pensez que tout va bien et que vous l'utilisez dans un événement grave, comme un entretien avec le roi de Suède (Knugen). Et vous avez gâché le dimensionnement d'un condensateur, au lieu de filtrer le bruit à 16 kHz, vous filtrez le "bruit" à 4 kHz. Si vous le traitez à la place numériquement, il suffit de changer certaines variables, vous n'avez pas besoin de dessouder -> souder un autre composant. L'interview est également ruinée.

Harry Svensson
la source
4
Hans Majonnäs Honung Carl XVI Gustaf
pipe
@pipe Tackar, det behövdes. (Merci, j'en avais besoin.)
Harry Svensson
Question de suivi (car cette réponse dépend trop d'une définition littérale de l'analogique). Pourquoi choisir la FFT pour filtrer le bruit au lieu des filtres polynomiaux classiques?
slebetman
@slebetman ne vous attendez pas à ce que je réponde.
Harry Svensson
C'était une réponse assez solide! Merci frère, et merci à tous ceux qui ont répondu, je ne m'attendais pas à autant d'aide! Je vais sûrement poser plus de questions dans ce forum. Merci encore!
Jazis
7

Mais pourquoi ne pouvez-vous pas utiliser un filtre électronique classique pour supprimer les fréquences de bruit?

Qui a dit que tu ne pouvais pas? C'est ainsi que cela a été fait dans les jours précédant le traitement du signal numérique. Le problème est que le filtrage du bruit est toujours un compromis entre garder votre signal recherché (parole, musique) intact tout en réduisant le bruit.

Pour les cassettes et autres enregistrements analogiques, des systèmes comme DNL et Dolby ont été utilisés qui filtrent uniquement lorsque le signal est faible, ce qui signifie que le bruit est plus audible. Ensuite, lorsque le signal est plus fort, le filtre s'estompe. Voir: Article Wikipedia sur la réduction du bruit

La parole peut être limitée à une bande de fréquence étroite comme 300 Hz à 3 kHz tout en étant parfaitement compréhensible. Vous pourriez créer un simple filtre analogique pour cette bande, mais cela limiterait la quantité de bruit supprimée. Pour filtrer plus efficacement les fréquences en dehors de cette bande, il faudrait un filtre analogique complexe. De tels filtres sont difficiles à concevoir, à construire et à fabriquer.

C'est là que le traitement du signal numérique entre en jeu. Dans le domaine numérique, il est beaucoup plus facile de mettre en œuvre des filtres complexes avec de nombreux pôles et zéros. De plus, comme l'emplacement (dans le domaine fréquentiel) de ces pôles et zéros est lié à l'horloge du DSP (Digital Signal Processor), qui est une horloge (à cristal) précise, le filtre sera beaucoup plus précis par rapport à une implémentation analogique .

Bimpelrekkie
la source
+1 pour avoir mentionné le compromis entre conserver les signaux recherchés et supprimer les signaux indésirables. Le problème est que la parole et le bruit occupent les mêmes fréquences, donc un filtre FFT peut supprimer le bruit "de base", c'est-à-dire après avoir analysé l'amplitude du bruit à chaque fréquence sans parole , qui peut être supprimé là où il y a de la parole. C'est ainsi que fonctionnent les filtres de bruit FFT dans Audacity etc etc etc.
Ingénieur inversé
Je ne sais pas ce qui rend les filtres analogiques particulièrement difficiles à concevoir et à construire. Tout ce dont vous avez besoin, c'est d'un ou deux amplificateurs opérationnels et de certaines résistances et condensateurs. Et comme les opamps sont généralement fournis en deux packages, vous n'avez besoin que d'une seule puce. J'utilise généralement un filtre analogique pour effectuer un filtrage passe-bas afin de m'assurer qu'il n'y a pas de signal haute fréquence crénelé dans le signal. Vous ne pouvez pas vous en débarrasser avec la FFT par la suite. D'un autre côté, ce n'est pas un problème de faire un filtre passe-bande FFT lorsque vous avez un "enregistrement" propre à traiter.
Barleyman
@Barleyman ne sais pas ce qui rend les filtres analogiques particulièrement difficiles à concevoir et à construire Je faisais référence aux filtres de haut niveau comme le 4ème ordre et plus. Je suis d'accord que quelques opamps. les résistances et les condensateurs peuvent faire presque n'importe quel filtre d'ordre, mais avez-vous déjà essayé d'en concevoir un? Je l'ai, OK, dans un simulateur, mais vous rencontrez déjà des condensateurs standard standard qui ne sont pas assez précis . À des ordres plus élevés, la valeur précise des composants devient de plus en plus importante.
Bimpelrekkie
De plus, l'aliasing n'est plus un problème, car nous avons maintenant des ADC et DAC sigma-delta avec des fréquences d'échantillonnage très élevées, donc un simple RC est tout ce qui est nécessaire.
Bimpelrekkie
@Bimpelrekkie J'en ai conçu plusieurs, rien de tout cela de nos jours .. À l'époque, vous utilisiez un livre avec des choix de paramètres précalculés avec lesquels vous passeriez du temps à jouer pour obtenir des valeurs de composants raisonnables. La précision n'est pas un gros problème si vous n'essayez pas d'être trop sélectif. RC ne fait pas vraiment le travail si vous essayez par exemple de faire un enregistrement audio. Avec -20 dB / décennie, il faudrait mettre le filtre à 2,2 kHz pour obtenir une sorte de filtration à la fréquence de Nyquist. Cherbychew de troisième ordre ferait mieux à 12 kHz fc. La 5ème commande vous amènera à -46 dB, ce qui est "assez bien"
Barleyman
5

Eh bien, la première étape pour comprendre pourquoi nous avons besoin de la FFT est de comprendre comment fonctionne le filtrage numérique.

Donc, fondamentalement, vous avez une structure, comme un registre à décalage, avec un certain nombre d'éléments de mémoire, une entrée et une sortie. Une valeur d'échantillon entre dans l'entrée, est décalée dans le registre et se déplace vers la sortie. À chaque étape du registre, il est multiplié par un nombre appelé coefficient de filtre.

Cette idée fonctionne bien lorsque vous avez un registre rapide faisant des multiplications rapides et que vous avez des échantillons qui arrivent lentement un par un.

Dans la vraie vie, au lieu de cela, vous obtiendrez très probablement un cadre composé d'un certain nombre d'échantillons. Lorsque vous souhaitez filtrer cela, vous convoluez les échantillons avec les coefficients de filtre. C'est la même chose que pour l'approche précédente, mais cela semble juste un peu différent.

Vient maintenant la partie FFT. Il s'avère que la convolution croît très rapidement en complexité numérique avec le nombre d'échantillons. En revanche, la FFT est à ses débuts numériquement compliquée, mais le nombre d'opérations nécessaires croît beaucoup plus lentement avec l'augmentation des coefficients de filtrage par rapport à la convolution.

Cela signifie qu'au-dessus d'un certain nombre d'échantillons, il sera beaucoup plus rapide de convertir un signal dans le domaine fréquentiel en utilisant une FFT, de filtrer le signal dans le domaine fréquentiel, puis de le reconvertir en utilisant IFFT. L'astuce que nous utilisons est l'une des propriétés de la convolution, à savoir que la convolution dans le domaine temporel peut, dans certaines circonstances, être modélisée comme une multiplication dans le domaine fréquentiel.

Donc, pour résumer, si le nombre de coefficients de filtre que vous avez est suffisamment grand, la FFT est plus rapide. Le «grand» pourrait être aussi petit qu'une centaine.

AndrejaKo
la source
3
Je pense que par "filtre électronique classique", il entendait un filtre analogique, pas une convolution.
jalalipop
1
@jalalipop Peut-être, mais je voulais explicitement expliquer la partie FFT. À l'époque, nous avions déjà une réponse expliquant pourquoi nous aimerions avoir des filtres numériques au lieu d'analogiques.
AndrejaKo
2

Les méthodes basées sur la FFT (vous devrez toujours travailler avec des modifications de fenêtrage et de chevauchement-ajout ou chevauchement-décalage) ont pour principal avantage que la conception est solidement dans le domaine fréquentiel, et un filtre de Wiener ou une soustraction spectrale ou un certain nombre de d'autres systèmes reposant sur des statistiques de signaux et un modèle fonctionnent réellement fondamentalement dans le domaine fréquentiel.

En revanche, l'annulation d'écho et diverses variantes ne reposent pas sur un modèle du bruit mais sur un enregistrement imparfait fortement corrélé au bruit. Celles-ci sont effectuées à l'aide de filtres variables (généralement FIR) pour soustraire une estimation du bruit du signal et mettre à jour les filtres afin de maintenir la corrélation du signal restant au canal de bruit minimale. Pour ces techniques, la FFT n'est pas du tout utile (lorsque des retards considérables du signal résultant et des mises à jour du filtre sont autorisés, ils peuvent être utilisés comme composant dans une FIR blackbox avec retard pour des raisons de performances mais ne sont pas vraiment utiles pour leur capacité de représentation du domaine fréquentiel).


la source
solidement dans le domaine fréquentiel . Ce ne serait pas un avantage particulier si ce n'était pas parce que les tons et les notes ont le ton de fond et les propriétés de tonalité.
mathreadler
2

Les filtres analogiques sont assez faciles à concevoir, mais la limitation est que vous devez continuer à ajouter des éléments de filtre physiques pour obtenir un filtrage coupe-bande de fréquences données. Et vous devez ajuster les valeurs des composants si vous souhaitez déplacer les encoches. Un seul ampli op peut faire une encoche coupe-bande, vous devez donc ajouter un autre amplificateur pour chaque encoche souhaitée. Pour une encoche plus sélective, vous auriez besoin de deux amplificateurs par encoche.

En termes pratiques, vous seriez probablement mieux servi par un filtre passe-bas de troisième ordre que vous pouvez faire avec un seul ampli-op ou peut-être un filtre passe-bas de cinquième ordre qui en nécessite deux. Utilisez le (s) filtre (s) passe-bas pour atténuer les fréquences supérieures à la fréquence de Nyquist (1/2 fréquence d'échantillonnage) avec une certaine marge et vous aurez un échantillon numérique de haute qualité à post-traiter. Avec un enregistrement clair comme celui-ci, vous pouvez ensuite appliquer des filtres FFT pour créer des filtres passe-haut, passe-bande et coupe-bande selon vos besoins.

Barleyman
la source
1

Le filtrage invariant dans le temps linéaire qu'un "filtre électronique classique" fait n'est qu'une multiplication "muette" dans le domaine de Fourier. Mais les informations que vous trouvez dans une FFT vous donnent plus de détails que la réponse d'un filtre, qui n'est qu'une combinaison linéaire de ces composants. En utilisant ces informations, vous pouvez diriger le traitement des données et les adapter aux données. Le bruit a certaines caractéristiques que les voix claires et les sons musicaux n'ont pas, par exemple la corrélation entre les harmoniques n'est pas presque la même pour le bruit que pour la voix ou la musique.

Donc, si nous pouvons identifier les corrélations entre les composantes de fréquence - c'est-à-dire trouver une "tonalité de base" d'une manière ou d'une autre, nous pouvons diriger le filtrage et le rendre plus adapté aux données.

mathreadler
la source