Vous êtes sur la page 1sur 2

Département ATE / Licence 3 en Electronique

Semestre 1/ Janvier 2021


TP1 Manipulation 2 : Sous-échantillonnage
Module : Traitement du Signal Echantillonnage et Quantification (A faire dans un script)

1. Varier la fréquence d’échantillonnage de 𝒇𝒆 à , , , et écouter, à chaque fois, le son obtenu.


Objectif
Pour ce faire, taper le code suivant :
 Lire et enregistrer un son non compressé, type WAVE
 Extraire les informations de numérisation : fréquence d’échantillonnage et taille du code de quantification ... ... ...

 Varier la fréquence d’échantillonnage, et voir l’effet sur le son perçu y=piste1;


for i=[1, 2,4,8]
 Varier la taille du code de quantification, et voir l’effet sur le son perçu ainsi que sur la taille du fichier WAVE y2=y(1:i:end); % Prendre un échantillon sur i échantillons du vecteur y
newfe= fe/i; % Nouvelle fréquence d’échantillonnage du son newfe
Les commandes Matlab que seront utilisées dans ce TP wavplay(y2,newfe); % Lecture du son obtenu à la fréquence newfe
Commandes Matlab explication N2=length(y2) % Calcul et affichage de la longueur du son obtenu
[y,fe,NQ]=wavread(‘filename.wav’)  Permet de lire le fichier son ‘filename.wav’. Les échantillons du pause, % Le pgme fait un arrêt, taper sur la touche entrée pour
signal sonore sont sauvegardés dans la variable vecteur y. end % poursuivre la boucle
 Permet aussi d’avoir la Fréquence d’échantillonnage et la Taille du
code de quantification, sauvegardés respectivement dans les 2. Quel est l’effet du sous-échantillonnage sur la qualité du son ? ............................................................................
variables : fe et NQ
 plus d’information sur y
.......................................................................................................................................................................................
 si le son est enregistré en mode mono, y serait un vecteur 3. En comparant entre la valeur de N (manipulation 1) et les valeurs de N2 (manipulation 2), déduire le taux de
colonne de taille 𝑁 : (𝑁 × 1) compression du signal pour chaque valeur de la fréquence d’échantillonnage : 𝒏𝒆𝒘𝒇𝒆 = 𝒇𝒆/𝒊 ?
 si le son est enregistré en mode stéréo, y serait une matrice de
deux colonnes, de taille 𝑁 chacune : (𝑁 × 2) 𝒏𝒆𝒘𝒇𝒆 𝑓𝑒 𝑓𝑒 𝑓𝑒 𝑓𝑒
2 4 8
waveplay(y,fe); Permet de jouer une piste audio y sur la sortie audio du PC, à la 𝑵/𝑵𝟐 1
fréquence fe
sound(A,fe,NQ) ;
Cependant, cette commande, permet de convertir une matrice
quelconque à un signal audible de fréquence d’échantillonnage fe, codé Manipulation 3 : Quantification
sur NQ bits (8 ou 16 bits seulement).
(A faire dans un script)
wavwrite(y,fe,NQ,‘filename.wav’) Permet d’enregistrer les valeurs du vecteur y dans un fichier son de type
WAVE , portant le nom ‘filename.wav’. 1. Varier la taille du code de quantification du fichier son par les valeurs : 24, 16, 8, en créant les fichiers sons
Ce fichier son est à la fréquence fe et est quantifié avec un code de 'test_son24.wav', 'test_son16.wav' et 'test_son8.wav' selon le programme suivant :
taille NQ (=8,16,24,32)
for NNQ=[24, 16, 8]
wavwrite(y,fe,NNQ,[ 'son',num2str(NNQ),'.wav']); % stocker le son y dans un fichier
Manipulation 1 : Lecture d’un fichier audio et extraction des informations de numérisation % wave avec une fréquence fe et
% codé avec NNQ
(A faire dans la fenêtre des commandes)
1. Lire le fichier audio 'speech_dft.wav' [Y,fe,NQ]=wavread(‘speech_dft.wav’); [yy,fe,nQ]=wavread(['son',num2str(NNQ),'.wav']); % lecture du fichier crée plus
% haut
a. Quelle est la fréquence d’échantillonnage fe ?
............................................................................................. wavplay(yy,fe); % écoute du son
pause, % taper sur la touche entrée pour
b. Quelle est la taille du code de quantification NQ ? end % poursuivre
..............................................................................................
2. Trouver la taille de la variable y [N,k]=size(Y)
2. Aller dans le dossier C:\Users\Invité\Documents\MATLAB, et comparer entre les tailles des
a. Est-il un son mono ou stéréo ? fichiers sons crées et celle du fichier son original
............................................................................................. Fichiers son Taille (k octets) Taux de compression
b. Quelle est la taille de la piste audio (son mono) ou des 'speech_dft.wav' 1
deux pistes audio (son stéréo) ? 'test_son24.wav'
.............................................................................................
3. Ecouter la piste audio1 (son mono ou stéréo) lue en question1 piste1=Y(:,1); 'test_son16.wav'
wavplay(piste1,fe); 'test_son8.wav'
4. Tracer la piste audio 1 en fonction des indices plot(piste1);
5. Tracer la piste audio 1 en fonction du temps t=(0:N-1)*1/fe ;
plot(t,piste1);
Manipulation 4 : Traçons des signaux 4 S4. Signal rectangulaire :
3 1 |𝑡| ≥
S1. Signal non-périodique constitué de sinusoïdes : 1. Pour tracer le signal 𝑟𝑒𝑐𝑡 =
2 0 𝑎𝑖𝑙𝑙𝑒𝑢𝑟𝑠
Tracer le signal 𝟐 𝐜𝐨𝐬(𝒙) + 𝟐 𝐬𝐢𝐧(𝟏, 𝟓 𝒙) pour 𝑥 = [−2𝜋 ,2 𝜋]
avec un pas de 𝜋/10 .
1
On peut utiliser la commande rectpuls(t,T) :
x = -2*pi:pi/10:2*pi;
0 qui pour un vecteur t, crée une impulsion rectangulaire de largeur T centrée sur 0t.
y = 2*cos(x)+2*sin(1.5*x) -1

plot(x,y) ; N=6; t=-N:0.1:N; T=2 ;


-2 1
x=rectpuls(t,T);
-3
2. cos(𝑥) + 2. sin(1,5 𝑥) figure, plot(t,x,'linewidth',2); 0.8
𝑡
-4 𝑟𝑒𝑐𝑡( )
-8 -6 -4 -2 0 2 4 6 8 2
2. Tracer le signal rectangulaire rect( ) 0.6

S2. Impulsion (Dirac) :


0.4
1 𝑡=0
1. Pour tracer le signal 𝛿(𝑡) = N=6; t=-N:0.1:N; T=3 ;
0 𝑡≠0 1
x=rectpuls(t+2,T); 0.2
𝛿(𝑡) figure, plot(t,x,'linewidth',2);
On peut utiliser la commande x=dirac(t) : 0.8
0

 qui pour un vecteur t, crée un vecteur x de même taille que t, dont 0.6 -6 -4 -2 0 2 4 6

les valeurs sont nulles sauf pour t=0.


 La valeur x(t=0) est infinie, on la mettra à 1 0.4
1

0.2

N=6; pas=0.1; t=-N:pas:N; 0.8 𝑡+2


𝑟𝑒𝑐𝑡( )
x=dirac(t); 0 3
x(find(x~=0))=1; -6 -4 -2 0 2 4 6
0.6

figure, plot(t,x,'linewidth',2);
0.4

1
Remarque : pour mettre la valeur de 𝑥(𝑡 = 0) à 1, on cherche la valeur non nulle 0.2
(𝑥 ≠ 0), puis, on la met à 1. 0.8
𝛿(𝑡 − 2)
0

2. Tracer le Dirac décalé δ(t − 2) 0.6


-6 -4 -2 0 2 4 6

0.4
N=6; pas=0.1; t=-N:pas:N;
x=dirac(t-2);
0.2
x(find(x~=0))=1;
figure, plot(t,x,'linewidth',2); 0

-6 -4 -2 0 2 4 6

S3. Saut unitaire (échelon):


1 𝑡≥0 1
1. Pour tracer le signal 𝜇(𝑡) =
0 𝑡<0
0.8
𝝁(𝒕)
On peut utiliser la commande x= heaviside(t) : 0.6

qui pour un vecteur t, crée un vecteur x de même taille que t, et dont


les valeurs sont nulles pour t<0, ou sont égales à 1 pour t0. 0.4

0.2

N=6; t=-N:0.1:N;
x=heaviside(t); 0

plot(t,x,'linewidth',2); -6 -4 -2 0 2 4 6

3. Tracer un échelon décalé 𝜇(𝑡 − 2) 1

𝝁(𝒕 − 𝟐)
0.8

N=6; t=-N:0.1:N; 0.6


x=heaviside(t-2);
plot(t,x,'linewidth',2); 0.4

0.2

-6 -4 -2 0 2 4 6

Vous aimerez peut-être aussi