VoiceXML
Plan Présentation / historique Usage Grammaire Structure Exemple Comment tester? Futur
Historique 1999 : création à partir de la fusion de plusieurs langages propriétaires. 2000 : première version adoptée par le W3C. 2004 : deuxième version. 2005 : devenu le standard industriel dans les services vocaux.
Présentation VoiceXML = technologie permettant les interactions vocales entre un système et un utilisateur. Elle est orientée vers la téléphonie. Communication : reconnaissance vocale, séquences enregistrées, touches musicales...
Usage Serveurs vocaux : classiques (préroutage d appels) reposant sur le Web Browsing Piloter à distance taxi réponde à leurs clients
Grammaire Regroupe l ensemble des mots, phrases et signaux qui sont reconnus par une application VoiceXML. Défini par la SRGS : Speech Recognition Grammar Specification. Spécifie ce que comprend l application. La réponse est générée par le SSML : Speech Synthesis Markup Language.
Technique
Structure Le document VoiceXML spécifie l ensemble des dialogues devant être conduit par l interpréteur. Une session correspond à plusieurs documents chargés suivant les réponses de l utilisateur. Balisage facile d utilisation tout en restant complet pour des dialogues complexes.
Exemple 1 : HelloWorld <?xml version="1.0"?> <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml"> <form> <block> <prompt>hello World!</prompt> </block> </form> </vxml> <vxml>: c'est l'élément de premier niveau, obligatoire dans toute application VoiceXML, et servant de contenant pour les dialogues. Il existe deux types de dialogues: les formulaires (qui présentent l'information et recoivent les entrées de l'utilisateur) et les menus (qui offrent un choix pour la direction à prendre dans le dialogue). Les attributs version et xmlns sont requis. <form>: un formulaire de dialogue, comme décrit ci-dessus. Il faut inclure une balise <goto> ou <submit> dans le formulaire, sans quoi la complétion du formulaire termine l'application. <block>: contient du code exécutable non-intéractif (l'utilisateur ne peut pas l'interrompre) <prompt>: envoi à l'utilisateur une information via la synthèse vocale TTS (Text To Speech). Dans notre cas, l'information n'est constituée que de texte, et donc on aurait pu ommettre cette balise : le texte aurait quand même été "dit" à l'utilisateur. A l'aide de l'attribut bargein="true" "false", on peut déterminer si la lecture peut être interrompue par l'utilisateur ou non (sauf ici, car prompt est contenu dans block).
Ex. 2 : dialogue de base <?xml version="1.0"?> <vxml version="2.0"> <menu> <prompt> Choisissez votre formation : <enumerate/> </prompt> <choice next="http://www.iupmiage.com/osie.vxml"> OSIE </choice> <choice next="http://www.iupmiage.com/simi.vxml"> SIMI </choice> <choice next="http://www.iupmiage.com/miage.vxml"> MIAGE </choice> <noinput>faites un choix parmi les formations proposées : <enumerate/></noinput> </menu> </vxml>
Ex. 3 : les touches <?xml version="1.0"?> <vxml version="2.0"> <menu accept="approximate"> <prompt bargein="true"> Bienvenue à l IUP MIAGe. <enumerate> Pour <value expr="_prompt"/>, tapez <value expr="_dmtf"/>. </enumerate> </prompt> <choice next="osie/index.vxml">osie</choice> <choice next="simi/index.vxml">simi</choice> <choice next="miage/index.vxml">miage</choice> </menu> </vxml> Résultat: "Bienvenue à l IUP MIAGe. Pour OSIE, tapez 1. Pour SIMI, tapez 2. Pour MIAGE, tapez 3." <menu>: défini un menu. Il permet à l'utilisateur de choisir une "destination" parmi plusieurs proposées. <choice>: défini un élément de menu. Il a plusieurs buts : définir les éléments de grammaire vocale et/ou DMTF qui déterminent quand un choix a été fait, fournir le contenu à la balise <enumerate>, et spécifier l'uri où aller une fois le choix fait. <enumerate>: génère automatiquement une sortie audio qui énumère les options d'un champ ou d'un menu. Il peut être vide (<enumerate/>), auquel cas l'énumération se fait directement. Il peut aussi contenir la phrase d'énumération, comme ici, avec l'énumération spécifiée par <value expr="_prompt">. <value>: insère la valeur d'une expression dans une sortie audio.
Ex. 4 : Dialogue amélioré <?xml version="1.0" encoding="iso-8859-1"?> <vxml version="2.0" lang="fr"> <form> <field name="specialite"> <prompt> Choisissez votre spécialité : </prompt> <option>osie</option> <option>simi</option> <option>miage</option> <filled> <if cond="specialite$.confidence < 0. 3"> <prompt>je suis désolé mais je n'ai pas bien compris</prompt> <clear namelist="specialite"/> <elseif cond="specialite$.confidence < 0.7"/> <assign name="reponse" expr="specialite$.utterance"/> <goto nextitem="confirmerspecialite"/> </if> </filled> </field> <subdialog name="confirmerspecialite" src="#ynconfirm" cond="false"> <param name="user_input" expr="reponse"/> <filled> <if cond="confirmerspecialite.result=='false'"> <clear namelist="specialite"/> </if> </filled> </subdialog> </form>...
Différentes plateformes IBM : WebSphere (+Voice Server) Nuance : V-Builder Voxeo : community Motorola : Mobile ADK Covigo : CovigoStudio
Comment tester? http://community.voxeo.com Réponse interactive de voix et identifications de voix. Voxeo fournit une plate-forme gratuite de développement avec ressources et appui technique. Accès aux applications via le logiciel FreeWorldDialup.
Procédure
Le code pour le tester Un code simple : <?xml version="1.0"?> <vxml version="2.1"> <form> <block> <prompt>bonjour, mon nom est Jean-Christophe</prompt> </block> </form> </vxml> => Le même que l exemple 1.
Futur Adopté par les développeurs web. Technologie montante. Mariage entre Internet et télécommunications.