TUTORIELS 
Première approche de VoiceXML
Introduction aux principes de ce vocabulaire XML dédié à la reconnaissance vocale.-->  (24 octobre 2002 )
 

Introduction
VoiceXML répond à une attente très spécifique: permettre l'accès à Internet via le téléphone, mobile ou fixe, en utilisant uniquement la voix. Le marché de la téléphonie présente une opportunité énorme pour les éditeurs de contenu, sachant que le nombre d'abonnés au téléphone est de loin supérieur au nombre de possesseurs d'ordinateurs, et par extension au nombre d'abonnés à Internet. Ajoutons à cela que tout le monde est en mesure d'utiliser un téléphone tandis que bon nombre de gens sont encore rebutés par la complexité d'utilisation d'un ordinateur, et l'on comprend facilement la potentiel offert par cette population à qui l'accès à Internet est "interdit". Enfin, il faut citer la grande facilité d'accès qui serait offert aux non-voyants via cette technologie...

Une application VoiceXML peut donc parler à un utilisateur via des sons pré-enregistrés ou de la synthèse de la parole. Dans l'autre sens, elle peut recevoir des commandes par reconnaissance vocale ou saisie de codes DTMF (Dual Tone Multi Frequency) sur les touches du téléphone. Le navigateur vocal (voice browser) vient chercher la page VoiceXML sur le serveur HTTP de la même manière qu'un navigateur classique va chercher une page HTML.

Application
Présenté le 24 avril dernier, le dernier document de travail du VoiceXML 2.0 spécife une certaine grammaire et une certaine forme pour l'écriture de fichiers correspondants. A titre d'exemple, un dialogue de base prendrait cette forme:

<?xml version="1.0"?>
<vxml version="2.0">
  <menu>
    <prompt>
      Choisissez une section: <enumerate/>
    </prompt>
    <choice next="http://www.le-site.com/sports.vxml">
      Sports
    </choice>
    <choice next="http://www.le-site.com/meteo.vxml">
      Météo
    </choice>
    <choice next="http://www.le-site.com/actus.vxml">
      Actualités
    </choice>
    <noinput>Faites un choix parmi les sections proposées: <enumerate/></noinput>
  </menu>
</vxml>

Le dialogue serait rendu comme suit, à l'aide d'un téléphone:
- Ordinateur: "Choisissez une section: Sports; Météo; Actualités."
- Utilisateur: "Astrologie."
- Ordinateur: message spécifique à la plateforme, de la forme "Je n'ai pas compris ce que vous avez dit", puis "Faites un choix parmi les sections proposées: Sports; Météo; Actualités."
- Utilisateur: "Actualités."
- Ordinateur: charge la page http://www.le-site.com/actus.vxml

Parce que la reconnaissance vocale n'est jamais parfaite, VoiceXML permet aussi de gérer les dialogues si le logiciel ne parvient pas à rattacher une réponse à un des éléments de sa base:

<?xml version="1.0" encoding="ISO-8859-1"?>
<vxml version="2.0" lang="fr">
  <form>
    <field name="ville">
      <prompt>Où voulez-vous aller?</prompt>
      <option>Lyon</option>
      <option>Marseille</option>
      <option>Brest</option>
      <option>Strasbourg</option>
      <option>Bordeaux</option>
      <filled>
        <if cond="ville$.confidence < 0. 3">
          <prompt>Je suis désolé mais je n'ai pas bien compris</prompt>
          <clear namelist="ville"/>
        <elseif cond="ville$.confidence < 0.7"/>
          <assign name="reponse" expr="ville$.utterance"/>
          <goto nextitem="confirmerVille"/>
        </if>
      </filled>
    </field>
    <subdialog name="confirmerVille" src="#ynconfirm" cond="false">
      <param name="user_input" expr="reponse"/>
      <filled>
        <if cond="confirmerVille.result=='false'">
          <clear namelist="ville"/>
        </if>
      </filled>
    </subdialog>
  </form>
  ...

Ici, si la certitude du logiciel de reconnaissance vocale est inférieure à 0.3, l'utilisateur recevra le message "Désolé, mais je n'ai pas bien compris". Si elle est inférieure à 0.7, le sous-dialogue de confirmation est invoqué. L'élément param est utilisé pour passer des données au sous-dialogue...

VoiceXML étant un extension de XML, les régles d'écriture de XML s'appliquent: toutes les balises doivent être fermées, tous les documents doivent avoir un élement racine (pour VoiceXML, il s'agit de <vxml ...>), tous les attributs doivent être en guillemets... Enfin, depuis sa version 2.0, le VoiceXML se doit de suivre une grammaire spécifique.

Nous allons commencer par étudier plus précisément le balisage de VoiceXML, puis nous aborderons cette grammaire de reconnaissance vocale dans un deuxième temps. La suite dans de prochains articles.

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page