Code DTMF
# Code DTMF

Un code DTMF (de l'anglais : dual-tone multi-frequency) ou FV (fréquences vocales) est une combinaison de fréquences utilisée pour la téléphonie fixe classique (sauf voix sur IP). Les fréquences utilisées sont spécifiées par la recommandation Q.23 de l'Union internationale des télécommunications (ITU). Ces codes sont émis lors de la pression sur une touche du clavier téléphonique, et sont utilisés pour la composition des numéros de téléphones (en opposition aux anciens téléphones dits « à impulsions », utilisant un cadran) ainsi que pour la communication avec les serveurs vocaux interactifs.

## Fréquences

Techniquement, chaque touche d'un téléphone correspond à un couple de deux fréquences audibles qui sont émises simultanément. De cette façon, huit fréquences bien distinctes permettent de coder seize touches. Ces fréquences peuvent être reconnues par des dispositifs électroniques et sont utilisées pour réaliser des serveurs vocaux.

| | 1 209 Hz | 1 336 Hz | 1 477 Hz | 1 633 Hz |
| - | - | - | - | - |
| 697 Hz | 1 | 2 | 3 | A |
| 770 Hz | 4 | 5 | 6 | B |
| 852 Hz | 7 | 8 | 9 | C |
| 941 Hz | * | 0 | # | D |

Ainsi, le couple de fréquences correspondant à 1 est (1 209 Hz, 697 Hz), celui de 2 est (1 336 Hz, 697 Hz), et ainsi de suite, jusqu'à celui de D : (1 633 Hz, 941 Hz).

Les huit fréquences utilisées restent dans la bande passante de la téléphonie fixe classique (qui se situe entre 300 et 3 400 Hz), et ont été choisies pour éviter les harmoniques.

## Génération

La génération d'un signal sinusoïdal est assez aisée :

$s[k]=\sin \left(2\pi \cdot {\frac {f}{f_{\mathrm {ech} }}}\cdot k\right)$

où on a:

* $s[k]$ est l'échantillon numérique obtenu
* $k$ est le numéro de l'échantillon (partant de 0)
* $f$ est la fréquence que l'on veut générer
* $f_{\mathrm {ech} }$ est la fréquence d'échantillonnage.

Pour générer une certaine tonalité DTMF, il suffit de récupérer les deux fréquences associées, et de générer un signal qui est la somme des deux sinusoïdes correspondantes.

Voici un exemple de génération d'un signal comme étant une somme de deux sinusoïdes à des fréquences respectives $f_{1}$ et $f_{2}$, à une fréquence d'échantillonnage $f_{\mathrm {ech} }$, et avec une amplitude comprise entre 0 et 255 (résolution de 8 bits) :

* $u_{1}=2\pi \cdot {\frac {f_{1}}{f_{\mathrm {ech} }}}$
* $u_{2}=2\pi \cdot {\frac {f_{2}}{f_{\mathrm {ech} }}}$
* $s[k]=128+63\cdot \sin(u_{1}\cdot k)+63\cdot \sin(u_{2}\cdot k)$

## Détection

La détection de tonalités DTMF peut être effectuée en utilisant entre autres les algorithmes suivants :

* Multiple Signal Classification (MUSIC) ;
* Least Mean-Square (LMS) ;
* algorithme de Goertzel, une implémentation rapide d'une transformation de Fourier discrète.

## Dans la pratique

L'utilisation de la technologie DTMF pour des serveurs vocaux interactifs implique l'utilisation d'un téléphone qui envoie des signaux sous forme de fréquences. En effet, les anciens téléphones à cadran ne font que couper la ligne pour envoyer leurs informations. Le serveur distant ne recevra donc aucune information dans ce cas.

Aussi, pour pouvoir interagir avec les serveurs vocaux sur les téléphones à cadran, des générateurs de signaux sonores DTMF étaient commercialisés dans les années 1980-1990.

* Générateur de code DTMF de marque Amstrad
* Clavier.
* Intérieur avec circuit imprimé.
* Haut-parleur.

## Touches A à D

La recommandation de l'UIT prévoit des touches « A » à « D » qui n'apparaissent habituellement pas sur les claviers téléphoniques. Celles-ci étaient utilisées par l'armée américaine dans le système Autovon (en) pour représenter la priorité d'une communication :

* A : Flash Override (FO)
* B : Flash (F)
* C : Immediate (I)
* D : Priority (P)

## Touche « R »

La touche « R » que l'on retrouve sur de nombreux téléphones fixes ne fait pas partie des codes DTMF. Un appui sur la touche « R » provoque une coupure de la ligne de 100 ms, comme si le combiné était raccroché pendant un temps très court. C'est le raccroché-éclair ou signal crochet commutateur (en anglais : hook flash).

## Séquences d'appel

Les séquences de composition DTMF peuvent être stockées sous forme de texte (par exemple dans un répertoire téléphonique) afin d'automatiser les appels (par exemple par un simple clic sur un nom de contact). Outre le numéro de téléphone de l'appelant, on peut également enregistrer les codes DTMF à générer une fois la communication établie ; pour cela les lettres muettes « p » (pause) et « w » (wait) ont été ajoutées.

Le format de cette chaîne de caractères est décrit dans la RFC 3601.

## Composants électroniques

* MT8870 : récepteur/décodeur DTMF.
* HT9200 : encodeur DTMF ; entrée : numéro au format série (et parallèle 4 bits en 14 broches) ; sortie : fréquences DTMF.
* HT9170D : décodeur DTMF.
