Université de Sfax
Faculté des Sciences de Sfax
Filière LSI 1
----------------
AU : 2023-2024
Département d’Informatique et
des Communications
Technologies
Matière : Techniques Multimédias
Multimédia
Enseignante du Cours : Faiza CHARFI.
TP N°3: Traitement du signal audio
1 Introduction
Le son est une onde produite par la vibration mécanique d'un support fluide ou solide et propagée
grâce à l'élasticité du milieu environnant sous forme d'ondes longitudinales. Les signaux audios
proviennent généralement d'une source sonore qui vibre dans la gamme de fréquences audibles. Les
vibrations poussent l'air pour former des ondes de pression qui se déplacent à environ 340 mètres par
seconde. Le son désigne la sensation auditive à laquelle cette vibration est susceptible de donner
naissance Il faut trois phases pour exister : L’émission, la transmission et la réception.
1-1 Les caractéristiques du son
Caractéristiques Description
C’est cette caractéristique du son qui permet de différencier deux sons de
même hauteur et de même intensité. Par exemple on peut jouer un même
Le timbre son (même volume, même fréquence) au piano, à la guitare sans pour
autant qu’il nous paraisse identique. Cette sensation différente est donc
due au timbre, c'est-à-dire à la « forme » du son.
La sonie est l’intensité perçue. Elle se mesure en phones ou en sones.
Cette dimension perceptive du son est essentiellement liée à la pression
acoustique, mais elle est aussi influencée par d’autres facteurs, notamment
La sonie la durée, ou la composition spectrale. La gamme d’intensités que peut
percevoir l’oreille humaine est remarquablement étendue : le son le plus
fort pouvant être perçu sans dommage pour l’oreille se situe environ 120
dB au-dessus du son le plus faible, soit un rapport d’intensité de 1012.
La fréquence La fréquence d’un son indique le nombre d’oscillations complètes de
1
(hauteur du son) l’onde effectuées par seconde. Elle s’exprime en Hertz (Hz), mesure
équivalente à une seconde-1. En d’autres termes une fréquence de un hertz
signifie que l’onde effectue une oscillation complète (d’une longueur égale
à la longueur d’onde) en une seconde. En musique, la fréquence est plutôt
désignée par le nom de hauteur. Ainsi, plus la fréquence d’un son est
élevée, plus celui-ci est aigu.
On parle de sons graves pour une fréquence inférieure à 20 Hz, de sons
mediums pour des fréquences comprises entre 500 et 3000 Hz, et de sons
aigus pour des fréquences supérieures à 3000 Hz.
Figure 1: Fréquence son grave, Son aigue
Pour un son grave, la distance entre deux crêtes est plus grande : il y a
moins d’oscillation en une seconde que quand le son est plus aigue
1-1 Les formats de fichier son
Principaux formats de fichier non compressés : Principaux formats de fichier compressés :
. WAVE : Mis au point par Microsoft et IBM, .MP3 : format de compression permettant
le format Wave PCM est le format son standard d'occuper quatre à douze fois moins d'espace de
de Windows. Il est limité à un poids de 2Go. donné. Pour cela, certaines fréquences inaudibles
.AIFF : format de stockage des sons sur les par l'oreille humaine vont être totalement
ordinateurs Macintosh d'Apple. C'est supprimées dans le fichier. Pour la compression si
l'équivalent du format WAV dans le monde deux fréquences d'intensités différentes sont
Macintosh. présentes en même temps, l'une peut être moins
. RAW : Format audio brut perçue que l'autre par l'oreille, selon que ces deux
fréquences sont proches ou non.
. AAC : Amélioration du format MP3, c'est le
format des fichiers audio supportés par Apple au
sein de son baladeur numérique iPod et de son
logiciel iTunes.
.RA : .ra (real audio), .rv (real video), .rm (real
media), .ram (real audio metadata). Famille de
codecs audio propriétaires (RealNetworks).
Permet de diffuser de la musique sur internet en
utilisant la technique du streaming.
2
Préliminaire
Pour le reste de ce document prenez les fichiers de travail «son.rar » de votre
enseignant, sauvez-le et décompresser le dans votre dossier de travail. Vous allez utiliser
les fichiers audio pour le reste de ce tp
2 Lecture d’un fichier Son
La lecture d’un fichier son se fait avec la fonction « audioread ».
Syntaxe :
>> [y,fs] = audioread(filename)
fs est la fréquence d’échantillonnage.
y est un vecteur de colonne contenant les échantillons des signaux de parole.
l’instruction ci-dessus lit les données depuis « filename » et retourne les données « y » et la
fréquence d’échantillonnage « fs ».
>> [y,Fs] = audioread(filename,samples)
L’instruction ci-dessus lit la plage sélectionnée d’échantillons audio dans le fichier
« filename », où « samples » est sous forme d’un vecteur de la forme [début, fin].
>>[y,Fs] = audioread(___,dataType)
Renvoie des données échantillonnées dans la plage de données correspondant au
« dataType » de « native » ou « double », et peut inclure n'importe quel argument d'entrée
dans les syntaxes précédentes.
Sous MATLAB on peut aussi lire les fichiers selon leur format par exemple la fonction «
wavread » " permet de lire des fichiers son « .wav »
Syntaxe :
>> [y, fs]=wavread('sunday.wav');% cet exemple lit le fichier
« sunday.wav »
2-1 Savoir différencier entre Sonie, timbre, fréquence d’un son
Pour caractériser physiquement un son pur, il suffit de préciser trois paramètres de l'onde
de pression associée : l'amplitude de celle-ci (dont dépendent sa puissance acoustique
surfacique et son niveau en décibels), sa fréquence ou sa période et, enfin, sa phase, dans
le référentiel temporel choisi.
- la hauteur ou la fréquence est l'attribut de la sensation auditive selon lequel les
sons peuvent être rangés sur une échelle, telle qu'une échelle musicale, des graves
vers les aigus », selon que leur fréquence est basse ou haute,
3
la sensation de hauteur (que l'on exprime par les adjectifs « grave » ou « aigu »)
apparaît étroitement liée à la fréquence
Afficher le signal en fonction du temps
Afficher le signal en fonction du temps de 2 fichier son existant dans le dossier de travail
«son.rar » de votre choix et remarquer la différence par rapport à la hauteur.
>>[y, fs]=wavread(' sunday.wav'); % lire le fichier audio
Sunday.wav
>>sound(y, fs);% Lecture des données
sonores
>>time=(1:length(y))/fs;% Vecteur de temps
sur l'axe des x ^
>>figure
>>plot(time, y);% Tracez la forme d'onde
par rapport au temps
On peut ainsi donner un nom à la figure :
>> figure, plot (time, y);
>> title (’signal audio original’) ;
Figure 2: Signal audio original.
- La sonie encore appelée sonorie est l'intensité subjective d'un son, autrement dit,
elle correspond à la sensation de force sonore
la sensation de force sonore, (qui fait dire qu'un son est plus ou moins fort)
semble naturellement liée à l'amplitude, à la puissance ou au niveau du son
Modification de l’amplitude
Nous pouvons changer l’amplitude pour modifier le volume.
Exemple :
>> [y, fs]=wavread('sunday.wav');
4
>>duration=length(y)/fs ;
>> sound(y,fs);
>> pause(duration)
>> sound(3*y,fs);
>> pause(duration)
>> sound(5*y,fs);
Remarque
L’amplitude est augmentée progressivement, afin que nous puissions percevoir le volume
croisant pendant la lecture.
L’instruction pause(duration)est ajouté pour jouer les signaux d’une manière
synchrone (La lecture d’un signal ne démarre pas jusqu’à ce que la lecture précédente soit
terminée).
Affichez deux signaux dans la même figure utiliser le « plot » et le « hold on »
Affichez deux signaux séparément dans des sous fenêtre d’une même fenêtre utiliser
le « suplot »
Figure 2: Exemple de modification d’amplitude.
Modification du timbre
[november,fs]=audioread('november.wav'); % lecture de fichier audio
november
>> size(november);% afficher la taille de november
>> left= november (:,1);
>> right= november (:,2);
5
% Les signaux des canaux gauche et droit sont les deux
colonnes du tableau november:
Le programme suivant est conçu pour adoucir la haute fréquence du signal (aigus). Il conserve la basse
fréquence. L'application de ce filtre numérique a le même effet que de baisser le contrôle des aigus sur
votre chaîne stéréo.
out= november;
for n=2:length(november)
out(n,1)=.9*out(n-1,1)+ november (n,1); % gauche
out(n,2)=.9*out(n-1,2)+ november (n,2); % droite
end
Modification de la fréquence d’échantillonnage/vitesse du
son
>> [y,Fs] = audioread('yesterday.wav')
>> sound(y,fs/2) % plus lent
>> sound(y,fs*2) % plus rapide
La fréquence d'échantillonnage fs indique le temps qui passe entre chaque échantillon (T = 1 / fs).
>> soundsc(y,fs/1.5) % son lent
>> soundsc(y,fs*1.5) % son rapide
Inverser un son
Pour jouer le son à l'envers, on inverse simplement l'ordre des nombres dans les tableaux.
>> y2=flipud(y) ; % Pour inverser le son
Vous pouvez vérifier que le son a été inversé ceci avec la commande « soundsc »
- - Lorsque conditions de présentation, sonie et hauteur sont identiques mais que les
sensations auditives produites diffèrent, on dit que le timbre diffère.
- Il est plus délicat de donner une description subj ective d'un son complexe, même
périodique, et l'on est rapidement amené à introduire des notions tournant
notamment autour de ce que l'on appelle le timbre du son
« On ne sait pas définir le timbre, mais on sait que ce n'est ni la sonie, ni la hauteur ».
6
2.2 Charger le flux du signal audio à partir du fichier. mat
Syntaxe :
>> Load filename
Exemple :
>> load handel.mat ; % cet exemple charge le flux du signal audio du
fichier « handel.mat »
2.3 Lire le fichier audio complet
>>load handel.mat
>>filename = 'handel.wav';
%Créez un fichier WAVE à partir du fichier d'exemple
handel.mat
>>audiowrite(filename,y,Fs);% enregistrer le signal audio sous
le nom handel.wav
%Créez un fichier WAVE (.wav) dans le dossier actuel.
>>clear y Fs
[y,Fs] = audioread('handel.wav');% Relisez les données dans
MATLAB à l'aide d'audioread.
sound(y,Fs);%jouer l’audio
plot(y) ;afficher le signal audio sous forme de courbe
2.4 lire une partie du fichier audio
load handel.mat
filename = 'handel.flac';
audiowrite(filename,y,Fs);
%créer un fichier FLAC à partir de du fichier d’exemple
handel.mat
%Créez un fichier FLAC (.flac) dans le dossier actuel.
samples = [1,2*Fs]; % Read only the first 2 seconds.
clear y Fs
[y,Fs] = audioread(filename,samples);
sound(y,Fs);% Jouer les échantillons
3 Ecriture d’un fichier Son
L’écriture d’un fichier son est fait en utilisant la fonction « audiowrite ».
Syntaxe :
>> audiowrite(filename,y,Fs)
Écrit une matrice de données audio, « y » avec une fréquence d’échantillonnage « Fs », dans un
fichier nommé « filename ».
>> audiowrite(filename,y,Fs,Name,Value)
7
Utilise les options supplémentaires spécifiées par un ou plusieurs arguments de pair
« Name,Value » .
L’exemple ci-dessous permet d’enregistrer le signal audio sous le nom handel.wav.
>> filename = 'handel.wav' ;
>> audiowrite(filename,y,fs);
4 Affichage d’Information d’un fichier audio
Pour obtenir l’information à partir de fichier son, on utilise la fonction « audioinfo ».
Syntaxe
info = audioinfo(filename)
Retourne des informations sur le contenu du fichier audio spécifié par « filename ».
>> Info = audioinfo(yesterday.wav’)
Filename: 'S:\yesterday.wav'
CompressionMethod: 'Uncompressed'
NumChannels: 1
SampleRate: 8192
TotalSamples: 73113
Duration: 8.9249
Title: []
Comment: []
Artist: []
BitsPerSample: 16
Audioinfo : retourne les informations sur le fichier audio sous forme de structure. Info peut contenir
les champs suivants.
Nom de domaine Description Type de données
Filename Fichier, y compris le chemin d’accès absolu vers le Vecteur de caractère
fichier et l’extension de fichier.
CompressionMethod Méthode de compression utilisée. Vecteur de caractère
NumChannels Nombre de canaux audio encodés dans le fichier double
audio.
SampleRate Fréquence d’échantillonnage des données audio dans double
le fichier, en hertz.
TotalSamples Nombre total d’échantillons audio dans le fichier. double
Duration Durée du fichier, en quelques secondes. double
BitsPerSample Nombre de bits par échantillon codée dans le fichier double
8
audio. Valable uniquement pour les WAVE (.wav) et
les fichiers FLAC (.flac).
BitRate Nombre de kilo bits par seconde (kbit/s), utilisé pour double
les fichiers audios compressés.
Valable uniquement pour les MP3 (.mp3) et les
fichiers Audio MPEG-4 (.m4a, .mp4).
Title Spécifie le titre Vecteur de caractère
Artist Spécifie le nom de l’artiste Vecteur de caractère
Comment Spécifie un commentaire Vecteur de caractère
On peut utiliser aussi ces instructions
>>fprintf('Information of the sound file "%s":\n',filename);
>>fprintf ('Duration = %g sec\n',length(y)/fs); % si nous
voulons connaître la durée d'un flux de signaux audio , nous
pouvons utiliser" length( y)/ fs " directement
>>fprintf ('Sampling rate = %g samples/sec\n',fs);
5 Ecouter un fichier son
L’écoute se fait à l’aide de la fonction « sound ».
Syntaxe :
>> sound(y,Fs);
Lorsque Fs n’est pas précisé, la valeur par défaut est Fs=8192 hertz
>>soundsc(y)% met les valeurs de y entre –1 à 1.
6 La génération du son
Les sinusoïdes comprennent des fonctions liées au cosinus et au sinus, qui forment la base des signaux
audio. Les sinusoïdes ont la forme de 𝑥 (𝑡) = 𝐴𝑐𝑜𝑠 (2π𝑓0𝑡 + φ) où A est l'amplitude de pique, f0 est la
fréquence en Hz, et φ est le déphasage en Radians. Les sinusoïdes sont des signaux périodiques avec
une période de 𝑇 = 1/𝑓0 secondes, donc ils se répètent toutes les T secondes.
Les commandes MATLAB ci-dessous créent une sinusoïde avec une amplitude de pique de 0,5,
Fréquence de 500 Hz et phase de pi / 2 radians. La sinusoïde est alors tracée et jouée sur le haut-
parleur. Notez qu'il ya deux fréquences différentes impliquées. La fréquence de la sinusoïde (500 Hz),
qui détermine le pas qui est entendu, et la fréquence d'échantillonnage (fs), qui est le nombre de fois
où la sinusoïde est estimée par seconde.
>> fs = 44100;
>> Ts = 1/fs;
9
>> t = 0:Ts:2;
>> x = 0.5*cos(2*pi*500*t + pi/2);
>> plot(t,x)
>> sound(x,fs)
6.1 Enregistrement d’un signal audio au microphone
Vous pouvez également enregistrer des signaux audio du microphone directement :
% Record your voice for 5 seconds.
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 5);
disp('End of Recording.');
% Play back the recording.
play(recObj);
% Store data in double-precision array.
myRecording = getaudiodata(recObj);
% Plot the waveform.
plot(myRecording);
7 Objectif TP
Ce TP présente, les plus importantes des fonctions Matlab qui sont utilisés pour le traitement du
signal audio.
7.1 Obtenez d'information à partir d'un fichier audio mono.
Ecrire un script MATLAB qui peut lire le fichier "november.wav" et affichera les informations
suivantes dans ce script:
Le nombre de points d'échantillons
Taux d'échantillonnage
Résolution Bits
Le nombre de canaux
Temps d'enregistrement (en secondes)
7.2 Enregistrez fichier Wave.
Ecrire un script MATLAB pour enregistrer 10 secondes de la parole, comme : "Mon nom est
X .... Y et je suis un étudiant au Département de ..... ".
Sauvez le fichier comme myVoice.wav .
Les paramètres d'enregistrement sont :
16 kHz fréquence d'échantillonnage, une résolution de 16 bits.
Le script permettra obtenir des réponses aux questions suivantes :
Quelle est la taille du fichier myVoice.wav?
Combien d'octets sont utilisés dans myVoice.wav pour enregistrer les données
autres que des données audio lui-même ?
7.3 Manipulation d’un signal audio.
Ecrire un script MATLAB pour enregistrer votre dicton «aujourd'hui c’ est mon
anniversaire."
10
Essayez d'expliquer la reproduction observée après avoir essayé le traitement de signaux
suivants:
Multiplier par -1 signaux audios.
Échanger les signaux audios sur l'axe du temps.
Multiplier par 10 les signaux audios.
Remplacer chaque échantillon avec sa racine carrée.
7.4 Expériences sur taux d’échantillonnage :
Ecrire un script MATLAB pour enregistrer votre diction"mon nom est ***" avec un taux de 16
kHz et 8 bits de résolution échantillonnage ou utiliser un fichier existant.
Essayez de ré-échantillonner les signaux audioen abaissant le taux d'échantillonnage à
11 kHz, 8 kHz, 4 kHz,....., et ainsi de suite.
A quel taux d'échantillonnage commenceont à avoir de la difficultés à comprendre le
contenu de la déclaration?
7.5 Expériences avec l'ajout de bruit.
Ecrire un script MATLAB pour enregistrer disant "Mon nom est ***" avec un taux
échantillonnage de 8 kHz et une résolution de 8 bits.
Nous pouvons ajouter du bruit à l'audio en utilisant la séquence suivante:
k = 0,1;
y2 + y = k * randn (longueur (y), 1);% Bruit
Sound (y2, 8000);% Lecture /playback
plot (Y2); % dessin courbe y2
Augmenter la valeur de k de 0,1 à chaque fois et de répondez aux question suivant:
À quelle valeur de K commençons à avoir de la difficulté à comprendre le contenu
en cours de lecture ?
11