Vous êtes sur la page 1sur 9

Filière D’ingénieurs :

Systèmes Intelligents , communicants & Mobiles (SICOM)


Travaux pratiques
Traitement du signal est de l’image

Echantillonnage &

Quantification des signaux

Cette manipulation en une séance présente les problèmes rencontrés lors de la


conversion d'un signal à temps continu en un signal à temps discret sur lequel on effectue
par ailleurs un codage adapté à une représentation informatique. Les différents tests
proposés font appel à des signaux musicaux ou de parole afin d'évaluer les effets des
opérations d'échantillonnage et de codage sur la qualité auditive. Ces signaux sont stockés
dans des fichiers dont le format est reconnu par la carte SoundBlaster et dont la
représentation (fréquence d'échantillonnage 32 kHz et codage sur 16 bits ) est telle qu'on
peut la considérer comme idéale. Les tests seront effectués avec le logiciel Matlab dont la
documentation est disponible à l’aide de la commande Help du logiciel.
TPs TSI /SICOM/FST FES F.ABDI

I) Introduction

Pour envisager un traitement numérique sur un signal, il est nécessaire de procéder à


une opération d'échantillonnage qui peut se décrire ainsi : x N ( n) = x A ( nT ) où x A est le
signal à temps continu et x N le signal numérique résultant de l'échantillonnage avec une
période T . Il est alors possible de donner la relation entre les transformées de Fourier de ces
+∞
1 +∞ ⎛ ν − k ⎞ +∞
− 2πjνn
ˆ
signaux : x N (ν ) = ∑ x A ⎜ˆ ˆ
⎟ avec x N (ν ) = ∑ x N (n )e et xˆ A ( f ) = ∫ x A (t )e − 2πjft dt .
T k =−∞ ⎝ T ⎠ n = −∞ −∞

1 1 1 ⎛ν ⎞
Ainsi lorsque xˆ A ( f ) = 0 pour f > , on obtient pour ν < : xˆ N (ν ) = xˆ A ⎜ ⎟ ; une
2T 2 T ⎝T ⎠
restitution du signal numérique par un dispositif approprié redonnerait exactement le signal
d'entrée x A ( t ) .

Exemple :

La condition précédente est respectée avec des signaux audio x A ( t ) pour lesquels
xˆ A ( f ) = 0 pour f > 16 kHz (spectre des fréquences audibles) lorsque la fréquence
1
d'échantillonnage vaut = 32 kHz .
T

L'étape suivante consiste à quantifier les échantillons obtenus précédemment ;


l'acquisition du signal donne pour chaque échantillon un code numérique j choisi parmi J
codes et la restitution reconstruit un signal à J niveaux à partir du code numérique
précédent (signal que l'on veut aussi proche que possible du signal d'entrée). Le nombre de
code est en général une puissance de deux ( J = 2 B ) de sorte qu'on puisse représenter le code
j sur un mot binaire de longueur B .

Exemple :

Si le signal d'entrée vérifie x A ( t ) < 1 V , on peut envisager une quantification


⎛ x ( n) ⎞ 2
uniforme sur J = 2 B niveaux : j = E ⎜ N ⎟ avec q = ; q est le pas de quantification. La
⎝ q ⎠ J
⎛ 1⎞
restitution aboutit à un signal prenant J valeurs possibles : x Nq ( n) = q ⎜ j + ⎟ . La
⎝ 2⎠
combinaison des deux opérations peut se représenter ainsi :

x
x q

2
TPs TSI /SICOM/FST FES F.ABDI

II) Travail à effectuer

A) Prise en main du matériel

Double-cliquer sur l’icône de Matlab pour lancer ce programme. Choisir comme


chemin d'accès où vous enregistreriez vos fichiers et résultats ( C:\USER/…).

Il vous sera fourni les fichiers suivants :

Wavread.m (fichier Matlab : génération d'un vecteur à partir d'un fichier WAVE)
katchatu.wav (fichier WaveStudio : extrait Concerto pour Violon (Aram Katchaturian) )
parole.wav (fichier WaveStudio : extrait son de test European Broadcasting Union)
phrase.wav (fichier WaveStudio : enregistrement avec micro)
schubert.wav (fichier WaveStudio : extrait Mélodie Hongroise (Franz Schubert))
stsaens1.wav (fichier WaveStudio : extrait n°1 Havanaise (Camille Saint-Saëns))
stsaens2.wav (fichier WaveStudio : extrait n°2 Havanaise (Camille Saint-Saëns))

B) Echantillonnage et restitution des signaux (Nyquist et Shannon-Whittaker).

1. Réaliser sous Matlab le programme permettant l’échantillonnage (fe=1000Hz) et


l’affichage des deux signaux 𝑥 𝑡 𝑒𝑡 𝑦 𝑡 sur une durée de 0.01s.
𝑥 𝑡 = cos(2𝜋200𝑡)
𝑦 𝑡 = cos(2𝜋800𝑡)
2. Tracer les signaux échantillonnés ainsi que les signaux continus (blocage d’ordre 1)
de 𝑥 𝑡 𝑒𝑡 𝑦 𝑡 sur la même figure.
3. Analyser le résultat affiché .Conclure.

Remarque
• Le signal échantillonné : affichage des points discrets (à l’aide de la fonction plot
avec un symbole passé en argument : ‘+’, ‘∗’, ‘o’, etc).
• Le blocage d’ordre 0 : affichage “continu” par interpolation par des rectangles (à
l’aide de la fonction stairs).
• Le blocage d’ordre 1 : affichage “continu” par interpolation par des triangles (à
l’aide de la fonction plot sans argument de style de ligne : en effet le style de ligne
par défaut est une ligne continue donc cet affichage consiste à relier les points
discrets par des segments).
• Le diagramme en bâtons : affichage des points discrets par bâtons(à l’aide de la
fonction stem).

I. Reconstitution du signal

La reconstitution consiste à réaliser une interpolation continue entre les


échantillons à chaque période d’échantillonnage.

Il existe différents interpolateurs allant du simple au compliqué.

3
TPs TSI /SICOM/FST FES F.ABDI

• Interpolateur d’ordre 0: Maintient la valeur constante entre 2 échantillons


successifs.
• Interpolateur d’ordre 1: Interpole par le segment de droite qui relie 2 échantillons
successifs
• Interpolateur idéal: qui remplace chaque valeur numérique par un sinus cardinal.

Dans l'énoncé du théorème d'échantillonnage, Shannon a également donné


son corollaire qui précise qu'un signal x(t) peut être reconstruit à partir des valeurs
échantillonnées en utilisant la fonction d'interpolation suivante :

Cela signifie qu’on remplace chaque valeur numérique par un sinus cardinal
et le signal peut être reconstruit avec la somme de ces sinus cardinaux temporels
centrés sur les instants d'échantillonnage t = nTe et d'amplitudes égales aux valeurs
échantillonnées x(n) :

4
TPs TSI /SICOM/FST FES F.ABDI

Soit le signal x(t) défini par :

𝑥 𝑡 = cos 2000𝜋𝑡 + sin 4200𝜋𝑡

1. En utilisant une fréquence d’échantillonnage de 8000 Hz, représenter sur une durée
de 0.002s :
a. le signal échantillonné du signal x(t).
b. le signal analogique x(t) (utiliser un très grand nombre de points sur la durée
de représentation)
2. Tracer la fonction sinus cardinal à l’aide de la fonction sinc de Matlab.
3. Ecrire un script Matlab (fichier toutes.m) traçant toutes les fonctions Sinc
représentant les échantillons (utiliser la boucle for).
4. Ecrire un scriptMatlab (fichier uneaune.m) traçant les fonctions Sinc représentant
chaque échantillon une à une (après la commande ENTER).
5. Ecrire un scriptMatlab (fichier interpo.m) traçant le signal reconstruit en utilisant la
sommation des fonctions Sinc de la question précédente.
6. Réaliser un Menu qui permet d’effectuer toutes les opérations précédentes d’une
manière interactive.

C) Quantification

Lancer l'application Matlab et exécuter la commande signal=wavread('schubert');

Interpréter les informations affichées et vérifier que le signal a une amplitude égale au
plus à 1 en utilisant par exemple les fonctions min et max.

Dans la suite, on considérera que tous les signaux ont une amplitude normalisée de 1
et que le codage sur 16 bits permet de négliger les effets de celui-ci.

Sélectionner 1024 échantillons du vecteur généré et en faire un représentation


graphique (utiliser la fonction plot).

B) Effets de la quantification

5
TPs TSI /SICOM/FST FES F.ABDI

1) Ecrire une fonction Matlab réalisant l'opération de quantification linéaire décrite en


introduction. Pour cela, sélectionner dans le menu File la rubrique New puis M-File. La
première ligne du texte est le nom de la fonction (Exemple result = quantlin (signal,B)).
Sauvegarder le fichier avec l'extension convenable (Exemple fichier quantlin.m).
L'exécution de la fonction s'effectue directement sous Matlab (Exemple ligne de commande
res = quantlin (sig,8);) au même titre que les fonctions déjà fournies (Exemple fonctions
wavread et quantlog). Faire appel à la fonction floor. Visualiser le résultat pour différente
valeurs de B et interpréter.

2) Ecrire une fonction Matlab (fichier testlin.m) calculant le bruit de quantification (


x(n) − x q (n) )qu’on représentera graphiquement, et la puissance moyenne du signal d'erreur
2
1 N −1
(
de quantification e = ∑ x( n) − x q ( n)
N n=0
)
pour différentes valeurs de J = 2 B avec

B = {4,8,12}. Choisir pour N une valeur de l’ordre de 10000 (extraire une tranche du signal
complet). La fonction aura comme paramètre le vecteur contenant le signal et retournera un
tableau contenant les erreurs pour les valeurs de B proposées.

3) Refaire les opérations précédentes avec la fonction quantlog fournie (fichier


testlog.m). Comparer et interpréter les résultats (utiliser la fonction plot).

4) Ecrire une fonction Matlab (fichier linlog.m) traçant les caractéristiques de codage
linéaire et logarithmique pour B = 6 . Pour cela, appliquer le codage sur le signal suivant :
x=(-1:0.001:1) et utiliser la fonction plot. Interprétation.

B) Effets de l'échantillonnage

Les signaux numériques sur lesquels ont été effectuées les opérations de codage
étaient d'amplitude unité et résultaient d'une opération d'échantillonnage à une fréquence
1
telle ( = 32 kHz ) que l'on pouvaient considérer que leur restitution redonnait exactement le
T
signal analogique d'entrée.

Pour simuler une opération d'échantillonnage à une fréquence plus faible sans
traitement préalable du signal analogique, on peut sous-échantillonner le signal numérique
d'un facteur K : xK (n) = x(Kn)

1 32
et restituer le signal ainsi obtenu à la fréquence = kHz .
KT K

Ecrire une fonction Matlab réalisant le sous-échantillonnage avec un facteur K du


signal obtenu par signal=wavread('schubert.wav') ; Visualiser le signal de départ et le
signal obtenu après sous échantillonnage pour différentes valeurs de K (4,8). Interpréter et
commenter les résultats obtenus.

6
TPs TSI /SICOM/FST FES F.ABDI

D) Acquisition d’un signal audio ( à réaliser chez-soi)

Cette partie du TP a pour objetif l’étude de quelques aspects de la chaîne


d’acquisition, de traitement et de restitution du signal audio.

Seront étudiés successivement :

1. L’acquisition d’un signal (musical ou parole) à partir d’un microphone.


2. Le traitement du signal acquis utilisant les différentes fonctions déjà vues durant
les séances précédentes des travaux pratiques.

L’acquisition et le traitement utilisent la carte son de l’ordinateur (Windows)


et Matlab.

Travail à effectuer

Il s’agit de réaliser l’acquisition d’un signal de quelques secondes, soit de


parole, soit de musique. L’objectif est de faire l’acquisition d’un signal brut sur
lequel il sera intéressant de réaliser des traitements. Inutile donc d’utiliser un fichier
MP3 issu du net. Ce signal sera utilisé par la suite comme objet de traitement, il
convient donc toutefois d’en réaliser l’acquisition de manière soignée.

Pour la prise du son (acquisition), utiliser l'entrée-sortie de carte son de


l'ordinateur.

Pour ce faire, concevoir et tester un programme Matlab permettant d'une part


la création d’une entrée analogique pour la carte son, et d'autre part la

7
TPs TSI /SICOM/FST FES F.ABDI

configuration des paramètres de lecture et d’enregistrement des échantillons. Le


programme doit aussi permettre de représenter graphiquement le signal acquis.

Les étapes à suivre sont :

a. Initialisation:
• Créer un objet (entrée) analogique ai pour la carte son :
AI = analoginput('winsound');

b. Configuration:
• Ajouter un canal à l'objet (Nombre de canaux audio : 1 pour mono ou 2 pour
stéréo)
addchannel(AI, 1);%%1 canal
addchannel(AI, 1:1);%% 2 canaux

• Préciser la fréquence d'échantillonnage (Ce paramètre dépend de la carte son


(8000, 11025, 22050, 44100, 48000 ou 96000 Hz))
Fs = 8000;
set (AI, 'SampleRate', Fs)

• Définir la durée de l'acquisition(Période de lecture en seconde >>100ms. 100ms


est le temps nécessaire à Matlab pour faire l’acquisition et l’enregistrement des
échantillons, d’ou l’importance de choisir une période largement supérieure à
100ms)
duration = 3;
set(AI, 'SamplesPerTrigger', duration*Fs);

c. Exécution
• Démarrer l'acquisition,
start(AI)

d. Résultats
• Placer les données en mémoire et les représenter :
data = getdata(AI);
plot(data) ;
e. Fin
• Effacer l'objet de la mémoire
delete(AI)

• Effacer l'objet de l'espace de travail de Matlab :


clearAI

7. Tester l’influence des deux paramètres essentiels en audionumérique : la fréquence


d’échantillonnage et la profondeur de quantification.
c. Varier Fs de 8kHz à 48kHz,
d. Varier la profondeur de quantification de 2 bits à 24bits.

8
TPs TSI /SICOM/FST FES F.ABDI

8. Comparer le résultat :
a. d’une part à l’écoute (restitution),
b. d’autre part sur le spectre (vous pouvez utiliser la fonction spectrogram de
Matlab).

9. Réaliser plusieurs enregistrements avec le micro plus ou moins loin de la source


sonore (5cm à 50cm), afin de tester l’influence de l’effet de proximité́ sur le spectre
du signal.

E) Remarques finales

Enregistrer tous vos fichier Matlab (fichiers dont l'extension est .M) dans le répertoire
d’accès C:\USER\TP\XX où XX est votre nom de binôme (Exemple B1). Ces fichiers
seront vérifiés corrigés et par la suite effacés par l’enseignant responsable.

Vous commenterez les résultats obtenus ainsi que les modes d'emploi de vos
fonctions.

Vous aimerez peut-être aussi