Table des matières PDF

Numérisation et sur-échantillonnage

1. Introduction

La numérisation d'un signal doit se faire en respectant la condition de Nyquist-Shannon. Le spectre du signal ne doit pas s'étendre au delà de la moitié de la fréquence d'échantillonnage. Pour obtenir cette condition, il y a deux méthodes :

La méthode du sur-échantillonnage consiste à échantillonner le signal à une fréquence beaucoup plus grande que la largeur de bande utile, de manière à échantillonner correctement les hautes fréquences présentes dans le signal. On fait subir au signal numérique un filtrage passe-bas avant de réduire sa fréquence d'échantillonnage pour le stockage ou la transmission.

La méthode du sur-échantillonnage est aujourd'hui privilégiée, car les filtres anti-repliement analogiques sont difficiles à réaliser et d'une efficacité limitée.

Un exemple est la numérisation du son pour l'enregistrement haute-fidélité sur CD. Les sons audibles sont dans la bande de fréquence allant de 50 Hz à 20 kHz, mais certaines harmoniques peuvent se trouver au delà de 20 kHz. Pour éviter le repliement de spectre, le son est échantillonné à 196 kHz, avant de subir un filtrage puis une réduction à 44 kHz, fréquence à laquelle il est stocké.

Ces TP ont pour objectif de mettre en place un sur-échantillonnage et le traitement du signal associé (filtrage et réduction). On testera le système sur un signal périodique dont le spectre est très étendu, un signal créneau, avant de le mettre en application sur un signal audio.

2. Matériel et outils numériques

Matériel utilisé :

Outils numériques :

Les deux premiers scripts contiennent des fonctions à utiliser. Il faut les enregistrer dans le dossier personnel de travail. Pour utiliser les fonctions dans un script python, faire les importations suivantes :

from analogiqueNumerique import *
from traitementSignal import *
             

3. Réalisation du système de numérisation et de traitement

Voici les conditions que l'on impose au système :

Toutes les observations et les choix effectués devront être reportés dans le compte-rendu écrit. À la fin de chaque partie, un compte rendu oral devra être fait à l'examinateur.

3.a. Étude du signal de test

Pour tester le système, on utilise un signal créneau, dont le spectre est très riche en harmonique. On choisira la fréquence maximale de ce signal pour que le repliement de spectre soit négligeable.

Faire l'acquisition et l'étude spectrale pour différentes fréquences. Observer le repliement du spectre. Choisir une fréquence pour la suite de l'étude.

3.b. Conception du filtre passe-bas

Expliquer le rôle de ce filtre.

Choisir une fréquence de coupure pour ce filtre, en justifiant.

Concevoir un filtre RIF et étudier sa réponse fréquentielle. On rappelle que la sélectivité du filtre est d'autant plus grande que l'indice de troncature est grand.

3.c. Filtrage et réduction

Effectuer le filtrage du signal créneau numérisé.

Effectuer la réduction pour arriver à la fréquence d'échantillonnage finale.

3.d. Test de qualité

Ce test peut être fait avec un signal en créneau, mais aussi avec un signal sinusoïdal.

Vérifier que le système final n'est pas sujet au repliement de spectre, ou tout au moins que le repliement est très faible. Augmenter si nécessaire la sélectivité du filtre.

4. Numérisation d'un son

La bande son à traiter est disponible sous forme d'un fichier WAV, accessible dans l'espace d'échange. Le son est émis par le convertisseur N/A audio de l'ordinateur (sortie casque). Le patch PureData lectureWAV.pd permet de faire la lecture du fichier. La sortie audio du PC sera reliée à la voie EA0 de la carte Sysam SP5.

Pour lancer la lecture du son dans PureData, activer le DSP, cliquer sur open fichier.wav puis sur start.

Dans un premier temps, on fera une analyse du son en faisant des acquisitions de durée 1 seconde.

Faire plusieurs acquisitions et analyses spectrales. Quelle est la bande spectrale approximative occupée par le son de cet enregistrement ?

On utilise le système de numérisation et de réduction mis au point précédemment pour numériser et stocker cette bande son sans trop altérer sa qualité.

Le choix de la fréquence d'échantillonnage finale (4 kHz) est-il convenable ?

Tester le traitement pour des paquets de 1 seconde.

Pour finir, on pourra tester le traitement en flux continu avec le script acquisitionSansFinFiltrage.py, qui permet de visualiser en temps réel le résultat du filtrage et de la réduction. La représentation temporellle du signal est tracée, mais on pourra modifier le script pour qu'il affiche le spectre calculé sur la fenêtre d'analyse.

5. Annexe : filtrage numérique

Soit un signal numérique constitué par la suite de nombres xn, échantillonnés à la fréquence fe. D'une manière générale, un filtre linéaire est défini par la relation de récurrence suivante :

yn=k=0N-1bkxn-k-k=1M-1akyn-k(1)

La suite yn est le signal de sortie du filtre. Il est donc défini par M coefficients ak et N coefficients bk. Par convention, on a toujours a0=1. Lorsque tous les autres ak sont nuls, le filtre a une réponse impulsionnelle finie (filtre RIF); les coefficients bk définissent alors la réponse impulsionnelle. Lorsque certains coefficients ak sont non nuls (pour k>0), le filtre est dit récursif car la sortie à l'instant n dépend de manière récursive de la sortie aux instants antérieurs. Un tel filtre a en général une réponse impulsionnelle infinie (filtre RII).

Selon l'application visée et la sélectivité souhaitée, on utilisera un filtre RIF ou un filtre RII. Les filtres RIF peuvent être très sélectifs avec un grand nombre de coefficients. Les filtres RII sont plus efficaces lorsque le nombre de coefficients doit être petit (inférieur à 10), mais ils peuvent être instables.

La réponse fréquentielle d'un filtre (gain et déphasage) est obtenue avec sa fonction de transfert en Z :

H(z)=b0+b1z-1+b2z-2+1+a1z-1+a2z-2+(2)

en posant :

z=ej2πffe(3)

Le rapport f/fe doit être inférieur à 1/2 (condition de Nyquist-Shannon).

Le fichier traitementSignal.py contient deux fonctions permettant de calculer le gain et le déphasage :

Ces deux fonctions prennent en argument les listes des coefficients sous forme de tableaux numpy. La fréquence calculée est en fait le rapport de la fréquence réelle sur la fréquence d'échantillonnage. La première fonction répartit les fréquences de manière linéaire sur l'intervalle [0,1/2]. La seconde les répartit de manière logarithmique, c'est pourquoi il faut lui fournir la fréquence minimale fmin.

Le calcul de la sortie par la relation (1) nécessite de fixer les valeurs initiales des M-1 premières valeurs de yn. On choisit généralement des valeurs initiales nulles.

Le calcul directe par la relation (1) est appelé réalisation directe de type 1. Une autre manière de calculer la sortie est d'utiliser un signal intermédiaire wn défini par :

wn=xn-a1wn-1-a2wn-2--aM-1wM-1(4)

La sortie est alors :

yn=b0wn+b1w1+b2w2++bN-1wN-1(5)

On montre que ces deux relations sont équivalentes à la relation (1) (en régime stationnaire). La condition initiale consiste à fixer les M-1 premières valeurs de wk, en général à zéro. Ces deux relations définissent la réalisation directe de type 2. La fonction filtrage effectue le calcul par cette méthode.

Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.