Vous êtes sur la page 1sur 6

Table des matières

1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
3 Réalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1 Banc de filtres d’analyse : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Décimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Quantification/Codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.4 Interpolation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.5 Filtres de synthèse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

MP-Traitement Numérique du Signal MINDS1 - ENIT i


C OMPRESSION DE LA PAROLE PAR CODAGE EN SOUS - BANDES

1 Introduction

Le codage en sous-bande est une technique très utilisée pour la compression des signaux audio. Elle
consiste à subdiviser le signal en sous-bandes fréquentielles et à adapter la technique de codage à chaque sous-
bande, en vue de minimiser le débit total tout en assurant une ’bonne’ qualité, selon des critères perceptuels
objectifs et subjectifs. On trouve cette technique essentiellement dans les applications suivantes :
— recommandation ITU-T G.722 pour le codage haute qualité de la parole à des débits de 64/56/48
kbps ;
— norme MPEG pour le codage audio de haute qualité ;
— compression de l’image.
Ce projet consiste à implémenter cette technique sous Matlab, avec une architecture simple et, à la tester sur
un exemple audio. Cette technique fait appel aux principales notions théoriques vues dans le cours, à savoir, le
filtrage, la décimation, l’interpolation et la quantification. Ce qui offrira une illustration pratique et concrète de
ces notions, permettant de mieux les aprréhender tout en maîtrisant Matlab.

2 Principe

L’objectif de cette technique est de réaliser un codage, de haute qualité avec un débit minimal, d’un si-
gnal donné. Le principe consiste à subdiviser le spectre du signal en sous-bandes et à concevoir, pour chaque
sous-bande, une technique de compression adéquate. Les sous-bandes sont généralements choisies selon leur
importance perceptuelle (énergétique ou entropique).
On distingue essentiellement deux phases :
— Analyse
— Banc de filtres d’analyse : permettant de subdiviser le signal en sous-bandes.
— Décimation : permettant de réduire la fréquence d’échantillonnage.
— Quantification/Codage : permettant de représenter les différents échantillons par des codes bianires.
— Synthèse
— Décodage : permet de transformer les codes binaires en échantillons.
— Interpolation : restituer la fréquence d’échantillonnage pour chaque sous-bande.
— Banc de filtre de synthèse : restituer chaque composante dans sa bande de départ.

MP-Traitement Numérique du Signal MINDS1 - ENIT 1


Table des matières

F IGURE 1 – Analyse

F IGURE 2 – Synthèse

MP-Traitement Numérique du Signal 1AMINDS - ENIT 2


Table des matières

3 Réalisation

3.1 Banc de filtres d’analyse :

La première étape consiste à découper le signal en M sous-bandes, en utilisant un banc de filtres numé-
riques. Ces filtres doivent être conçus avec les propriétés suivantes :
— une bonne séparation entre les sous-bandes ;
— sans repliement de spectre ni distorsion (amplitude, phase) ;
— restitution ’parfaite’ du signal après découpage.
Une solution, consiste à utiliser des filtres symétriques de type Quadrature Mirror Filters (QMF).
Travail demandé
On se propose ici de réaliser deux filtres RIF, permettant de découper le signal en M = 2 sous-bandes, BF et
HF.
1. Procéder à la lecture du signal audio contenu dans le fichier 0 voix.wav 0 en le stockant dans le signal s.
Indication : [s, Fe ] = audioread(0 voix.wav 0 ).

2. En utilisant la méthode de la fenêtre et en choisissant une fenêtre rectangulaire, réaliser un filtre passe-
bas d’ordre p = 7, et de fréquence de coupure fc = F4e , permettant de récupérer la bande BF du signal.
Sa réponse impulsionnelle sera notée hb .
Indication : fonction fir1 pour générer les coefficients du filtre et rectwin pour la fenêtre rectangulaire.

3. Représenter sa réponse fréquentielle (gain en amplitude et phase). Commenter.


Indication : utiliser la fonction freqz.

4. Choisir maintenant une fenêtre de Hamming et comparer.


5. Que devient la réponse fréquentielle pour un ordre p = 24 ? Interpréter.
6. Appliquer ce filtre sur le signal s et représenter le spectre du signal résultant, s1 .
7. Proposer maintenant un filtre passe-haut, hh permettant de récupérer la bande HF du signal. Représen-
ter sa réponse fréquentielle.
8. Appliquer ce filtre sur le signal s et représenter le spectre du signal résultant, s2 .
9. Examiner la qualité du signal reconstruit,s − r, à partir de s1 et s2 et, conclure quant au choix des deux
filtres. Indication : utiliser la fonction soundsc pour écouter les deux signaux s et sr .
10. Représenter dans le domaine temporel les signaux, s et sr . Commenter.
11. Si l’on a à choisir entre des filtres RIF et RII, lequel choisira-t-on ? Justifier. vous pouvez essayer avec des
filtres RII avec la fonction butter ou cheby

3.2 Décimation

Après filtrage, chacun des deux signaux, s1 et s2 , est représenté par Fe échantillons par seconde, alors qu’il
occupe une bande B = Fe
4 . Il faudra donc réduire la fréquence d’échantillonnage à celle de Nyquist Fe0 = Fe
2 .
Ce qui permettra de réduire le nombre d’échantillons par seconde, et donc le débit binaire résultant, sans pour
autant affecter le contenu spectral de chaque signal. Cette opération est réalisée par un sous-échantillonnage de
facteur M = 2.
D’une façon générale, pour un signal x échantillonné à la fréquence Fe , le sous-échantillonnage d’un facteur

MP-Traitement Numérique du Signal 1AMINDS - ENIT 3


Table des matières

M consiste à garder un échantillon sur M de ce signal. Le signal y résultant, s’écrit dans le domaine temporel :
X
y(m) = x(n)δ(n − mM )

F −e
Ce qui correspond à un spectre périodisé de période M :

1 X Fe
Y (f ) = X(f − k )
M M

Travail demandé

1. Procéder au sous-échantillonnage des signaux s1 et s2 .

2. Représenter les spectres des signaux ainsi obtenus, s1d et s2d .

3.3 Quantification/Codage

Le choix de la technique de quantification et de codage est d’une importance cruciale dans l’opération de
compression. On se propose ici d’utiliser la technique MIC (Modulation par Impulsions Codées), en anglais
PCM, qui consiste à quantifier un signal sur L = 2l niveaux et à représenter chaque niveau par un code de l bits.
L’objectif est d’adapter le choix du codage aux propriétés de chaque sous-bande, de façon à minimiser le débit
binaire totale tout en garantissant une 0 bonne0 qualité du signal reconstruit. Selon l’application, on privéligiera
soit le débit, soit la qualité. Différents critères perceptuels permettent d’évaluer la qualité. On utilisera ici, le
RSB Rapport Signal sur Bruit (erreur de restitution) et, le pouvoir perceptuel humain par écoute.
On se propose ici d’utiliser la forme de quantification scalaire la plus simple, à savoir la quantification uni-
forme. Pour un signal x dont l’amplitude varie dans l’intervalle I = [Amin , sAmax ], la quantification uniforme
Amax −Amin
consiste à subdiviser cet intervalle en L = 2l sous-intervalles de même longueur q = 2l
, appelé pas
de quantification. Chaque échantillon x(n) est représenté par la valeur médiane du sous-intervalle auquel il
appartient, qui est codée sur l bits.

xq (n) = kq + q/2 si kq ≤ x(n) < (k + 1)q

q2
L’erreur de quantification  = x−xq est une variable aléatoire uniforme centrée de variance : σq2 = E 2 =
 
12 .
Le rapport signal sur bruit de quantification est défini par :
 !
E x2
RSB = 10 log10 (1)
E [2 ]

Travail demandé

1. Ecrire une fonction Matlab, 0 unif quant0 , permettant de réaliser la quantification uniforme d’un signal
donné, x. La fonction prendra comme arguments le signal x, les bornes Amin et Amax , et le nombre
de bits l et, retourne le signal quantifié xq ainsi que la valeur du RSB correspondant.

2. Appliquer cette fonction sur les signaux s1d et s2d , pour différentes valeurs de l, choisies entre 2 et 12.
Commenter.

MP-Traitement Numérique du Signal 1AMINDS - ENIT 4


Table des matières

3.4 Interpolation

Dans la phase de synthèse, le signal est reconstruit en effectuant les opérations inverses à la phase d’ana-
lyse. Après décodage, le signal obtenu sur chaque sous-bande contient Fe0 = Fe
2 échantillons par seconde et,
Fe
occupe donc une bande spectrale de largeur 4 . Pour pouvoir synthétiser le signal s de départ, il faut tout
Fe
d’abord rappatrier les deux composantes vers la bande spectrale initiale, de largeur 2 et ce, en ramenant leur
fréquence d’échantillonage à Fe par une opération de suréchantillonnage de facteur M = 2. Le suréchantillon-
nage de facteur M d’un signal x, consiste à insérer M − 1 zéros entre deux échantillons consécutifs de ce
signal. Le signal y résultant s’écrit dans le domaine temporel :


x(n) si m = kn
y(m) =
0 sinon

Dans le domaine fréquentiel, une périodisation du spectre fait apparaître des spectres 0 images0 ou
0 miroirs autour des fréquences kFe /M . Ces spectres seront éliminés par les filtres de synthèse.
Travail demandé
1. Procéder au suréchantillonnage des deux composantes sq1 et sq2 d’un facteur M = 2.
2. Représenter les spectres des signaux résultants. Interpréter.

3.5 Filtres de synthèse

Les mêmes filtres utilisés en analyse sont à nouveau appliqués sur les signaux suréchantillonnés. Ils per-
metteront d’éliminer les spectres miroirs et de garder les bandes utiles des deux composantes pour pouvoir
synthétiser le signal s.
Travail demandé
1. Appliquer les filtres de synthèse sur les deux composantes obtenues après suréchantillonnage et repré-
senter les spectres résultants.
2. Synthétiser le signal ss et déterminer la valeur du décalage temporel résultant. Exprimer-le en nombre
de bits en fonction de l1 et l2 , nombre de bits alloués à chaque sous-bande.
3. Pour différents choix de l1 et l2 , procéder à l’écoute du signal synthétisé en le comparant au signal de
départ, s.
4. Déterminer pour chaque choix, le débit binaire résultant de toute la chaîne ainsi que le RSB (le bruit
étant l’erreur de réstitution.
5. Que sera votre choix pour l1 et l2 ?
6. Réaliser une interface graphique (GUI) sous matlab, permettant de contrôler les différents paramètres
de choix par des boutons et de visualiser les principaux résultats.
7. Essayer d’améliorer la qualité de compression par l’un des deux moyens suivants :
— en utilisant la technique de codage MICDA (ADPCM : Adaptive Differential PCM) ;
— en augmentant le nombre d’étages M (par subdivisions successives en 2 sous-bandes).

MP-Traitement Numérique du Signal 1AMINDS - ENIT 5

Vous aimerez peut-être aussi