# VoiceXML

Le VoiceXML (Voice eXtensible Markup Language ou langage de balisage extensible vocal) est un langage normalisé de programmation d'une application vocale.

## Application vocale

Une application vocale est un programme informatique de téléphonie qui permet à une personne de discuter au téléphone avec un serveur vocal interactif. Le service de consultation par téléphone des horaires de train en est un exemple : "Je compose un numéro, je demande un horaire, une machine m'annonce l'horaire souhaité".
Une application vocale permet :
* La communication de l'utilisateur vers le système soit par des codes DTMF (« touches musicales ») à l'aide des touches du clavier téléphonique soit par reconnaissance vocale;
* La communication du système vers l'utilisateur soit par des annonces enregistrées, par exemple en studio, soit par des annonces en synthèse vocale.

## Langage VoiceXML
### Définition

Le VoiceXML est un dialecte XML. Comme son nom l'indique, il est fondé sur XML. Il est un standard défini par le VoiceXML Forum, un consortium créé par AT&T, Lucent, Motorola et IBM. Il a depuis été reconnu par le W3C. Il est issu de l'unification des technologies Phone Markup Language de Lucent et AT&T, VoxML de Motorola et SpeechML d'IBM.
Le VoiceXML est conçu pour être compris par un système particulier, appelé Navigateur vocal (Voice browser en anglais), qui va interpréter les commandes de l'utilisateur et répondre par les moyens indiqués.

### Similitude entre HTML et VoiceXML

Il y a analogie entre les langages HTML et VoiceXML. Le premier est le langage de création des pages web et le second le langage d’écriture des scénarios vocaux. Ainsi le Navigateur vocal, homologue du navigateur web utilisé par l’internaute est intégré dans la plate-forme vocale (Serveur vocal interactif − SVI). Une page web affiche du texte et des images, alors qu'une page en VoiceXML diffuse des fichiers audio et/ou des messages en synthèse vocale. La navigation sur un site web s’effectue grâce au clavier et à la souris. Dans un service vocal, elle se fait grâce aux touches du téléphone (DTMF) ou bien par la parole : reconnaissance vocale.
Cette similitude entre les deux langages rend possible l’utilisation des mêmes infrastructures que les serveurs Web, pour accéder aux systèmes d’informations.

### Fonctionnement

Une page VXML est généralement distribuée en HTTP par un serveur Web. Cette page peut être dynamique comme pour une page Web, Elle peut être générée « à la volée » par un serveur d’application ou plus simplement grâce au langage PHP. Les balises constituant la page sont interprétées par le serveur VXML : il s’agit de la phase dite de « parsing ». Le serveur VXML envoie au client sur son téléphone des messages sonores, issus de fichiers son. En retour le client par interaction sur les touches de son téléphone ou par sa voix expédie une réponse au serveur VXML. Cette réponse va permettre au serveur de demander une nouvelle page VXML au serveur web. Il en est de même que pour une page web qui en appelle une autre par un clic sur une URL.

## VoiceXML versus code propriétaire

Le VoiceXML permet de réduire les charges de développement des applications vocales.
À ce jour, un très grand nombre d'acteurs de cette industrie s'accorde sur le fait que le développement de scénario vocaux est jusqu'à dix fois plus rapide en VoiceXML qu'avec un langage d'ancienne génération. Ce facteur est d'autant plus grand que le projet est important. Dans le cadre de renouvellement de plateforme, plusieurs références récentes dans le monde bancaire et d'assurance ont permis à des intégrateurs de déployer des services vocaux sur les mêmes webservices que ceux déployés pour le web. Le service vocal qui aurait nécessité 5 à 6 mois de développement spécifique et de mise au point a été réalisé en 10 jours en VoiceXML.
Cette rapidité de développement s'explique d'une part par l'utilisation de standard et non d'un langage propriétaire nécessitant des spécialistes. D'autre part la « webisation » des applications métiers (accès en mode client léger web) permet l'utilisation des mêmes infrastructures que celles développées par les serveurs Web, pour accéder aux systèmes d'informations (sécurité, passerelle, système de gestion de base de données, serveur d'applications). Tous ces services sont réutilisés pour accéder aux données centrales en temps réel.
L'intégration d'un programme VoiceXML ne nécessite aucune recompilation du noyau car le VoiceXML est un langage interprété en temps réel. Parce qu'il est basé sur les technologies Web, le VoiceXML est adopté par les développeurs du Web et la création de portails vocaux s'effectue sans compétences particulières dans le domaine vocal. Le VoiceXML permet l'utilisation d'une architecture trois tiers qui différencie les éléments d'un service vocal : données, description du scénario (appliance server) et exécution du scénario (serveur vocal interactif).
Il est d'autant plus simple de faire fonctionner un serveur vocal interactif avec un fournisseur de service d'application (mode ASP) avec le langage VoiceXML car l'environnement téléphonique onéreux et technique est externalisé alors que les données sont conservées et traitées au sein de l'entreprise.