TP 4
Analyse de Fourier sur un signal DTMF
I. Objectif
L’objectif du TP est de consolider les connaissances acquises sur la Transformée de Fourier à
travers une application. Celle-ci concerne l’identification des touches d’un clavier numérique
par analyse du son généré. En effet, les appareils de téléphonie fixe ou mobile sont munis
d’un clavier. Lorsqu’une touche est appuyée, un son est émis. Par analyse dans le domaine de
Fourier, il est possible de reconnaitre la touche appuyée par simple analyse du son généré.
[Link] de la signalisation DTMF
II.1 Importance de la signalisation téléphonique vocale
Le réseau téléphonique est conçu pour transporter des signaux vocaux. Néanmoins, il est
souvent demandé de transporter d'autres types de signaux. Un exemple simple et omniprésent
est le numéro téléphonique appelé. En effet, la ligne téléphonique utilisée doit communiquer
avec le bureau central de la compagnie de téléphone pour que le numéro de téléphone appelé
soit transmis. L’appareil téléphonique doit être capable de convertir les séquences de chiffres
appuyées en signaux qui peuvent facilement traverser les circuits conçus pour transmettre la
voix.
Ainsi, les dix chiffres décimaux enrichis des symboles ‘*’ et ‘#’ doivent être convertis en
sons qui ont les mêmes caractéristiques que la voix.
II.2 Définition de la DTMF
Dual-Tone Multi-Frequency signaling (DTMF) est un système de signalisation téléphonique
qui utilise les fréquences vocales sur les lignes téléphoniques afin de signaler la numérotation
entre l’équipement téléphonique utilisé et les équipements de communication et les centres de
commutations. Il a été inventé dans les laboratoires Bell aux états unis et a été standardisé
sous la recommandation ITU-T Q.23.
II.3 Décodage des touches du clavier
Lorsqu’une touche du clavier téléphonique est appuyée, un signal de signalisation est transmis
et est aussi jouée. Ce signal est une superposition de deux sinusoïdes dont les fréquences sont
associées à la touche appuyée.
La figure 1 illustre un clavier téléphonique et les fréquences associées. Ainsi, un clavier peut
être vu comme une matrice de fréquences. Chaque touche est décrite par sa position en ligne
et sa position en colonne. Le couple de fréquence obtenu est le représentant unique de la
touche.
Figure 1 : touches d’un clavier téléphonique et fréquences associées.
III. Analyses temporelle et fréquentielle d’un signal DTMF.
Le fichier ‘[Link]’ est un exemple de signaux de signalisation enregistré lorsqu’une
touche d’un clavier téléphonique est appuyée.
Il a été échantillonné à la fréquence fs=8192 Hz.
1. Tracer le signal dans le domaine temporel selon le vrai axe de temps.
2. Délimiter la partie active visuellement. On appelle partie active la portion du signal où
les composantes harmoniques existent, c’est à dire lorsque les intervalles de silence
contenant du bruit ont été écartés.
3. Tracer la représentation spectrale du signal utile. Pour cela
a. Utiliser la fonction fft.m et appliquer une TF sur Nfft=1024 points.
b. Définir un vrai axe de fréquence en Hz :
F=(-Nfft/2:Nfft/2-1)*(fs/Nfft);
c. Centrer le spectre grâce à la fonction fftshift afin qu’il ressemble au spectre d’un
signal réel.
4. Mesurer visuellement les fréquences des harmoniques. En déduire la touche du clavier
appuyée.
IV. Notion de spectrogramme
Le spectrogramme est une représentation temps-fréquence de type information à 2
dimensions ou l’axe des abscisses est le temps, l’axe des ordonnées est la fréquence et
le contenu de l’image est la valeur du spectre traduite en couleur. En fait, un signal est
décomposé en plusieurs intervalles temporels. Pour chaque intervalle, le spectre est
calculé et est tracé.
Pour tracer un spectrogramme, on utilise le bout de programme MATLAB suivant :
[S,F,T,P] = spectrogram(phone,Nfft,0,Nfft,fs,'yaxis');
surf(T,F,10*log10(abs(P)),'EdgeColor','none');
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('Time');
ylabel('Frequency (Hz)');
On utilise le signal [Link] dans cette partie du TP.
1. Télécharger le signal phone, visualiser et écouter.
2. Visualiser ce spectrogramme et identifier visuellement les touches appuyées.
V. Synthèse du son d’une touche
Une fois les fréquences des touches définis dans le paragraphe II.c, il est possible de
synthétiser sous MATLAB les sons vocaux des touches du clavier de manière très simple.
Ecrire un code MATLAB qui génère un signal composé de deux sinusoides caractérisés
comme suit :
a. fs=8192 Hz ;
b. durée= 1 seconde.
c. fréquences 1 et 2 identifiées dans la question III.4
d. amplitudes des sinusoides égales à 1 et à 2 respectivement.
Vérifier le signal obtenu par visualisation des allures temporelle et spectrale et par tests
d’écoute.
VI. Identification automatique d’une touche appuyée
On se propose d’écrire un code MATLAB qui permet d’identifier de manière
automatique la touche appuyée. Pour cela, on adoptera l’approche suivante :
-on détermine de manière automatique la partie active du signal qui contient
l’information de signalisation. Pour cela, utiliser la fonction fournie onset_offset.
- on calcule le spectre de la partie active, qu’on lisse. Cette opération permet
d’éliminer les pics non significatifs du spectre.
On utilise pour cela la fonction smooth.m deux fois consécutives.
- on détermine les pics du spectre lissé. On utilise la fonction findpeaks en spécifiant
un nombre de pics égal à 2.
- on détermine les vraies fréquences associées aux 2 pics utiles.
- on identifie la touche appuyée.
VII. Identification d’un numéro de téléphone
Le fichier [Link] contient le signal DTMF d’un numéro de téléphone composé.
Proposer une solution que vous programmerez sous MATLAB pour identifier le numéro
composé.
Pour cela, vous pouvez suivre les recommandations suivantes.
- Décomposer le signal total en morceaux temporels de taille 6700 échantillons.
- Délimiter le début et la fin de la partie active.
- Calculer les fréquences utiles ;
- Ajuster les fréquences pour qu’elles correspondent aux fréquences exactes d’une
touche du clavier.
- Identifier chaque touche.
- Afficher le numéro de téléphone composé en entier.