VT2020-Voice First Development-Fiche

=Introduction= Voice-First Development désigne un ensemble de bonnes pratiques créée dans le but de maximiser les chances de succès d’une application basée sur la voix, en évitant les problèmes les plus évidents. Il ne s'agit donc pas d'une technologie en particulier mais d'une manière spécifique de coder un certain type d'application, les applications vocales.

=Abstract= Voice-First Development refers to a set of best practices created with the aim of maximizing the chances of success of a voice-based application, avoiding the most obvious problems. It is therefore not a question of a particular technology but of a specific way of developing a certain type of application, voice applications.

=Présentation et architecture= Comme son nom l'indique, une application vocale repose essentiel sur la voix comme modalité d'interaction, aussi bien en entrée qu'en sortie. Cependant, cette modalité relativement récente est encore complexe à utiliser et maîtriser. Pour permettre la création de telle applications, un certains nombre de composants sont essentiels.



On peut en tirer 5 composants essentiels :
 * Speech To Text : reconnaissance automatique de la parole : extraction d’une image vectorielle de la voix puis association à des éléments lexicaux connus, pour enfin former des mots, puis des phrases « correctes »
 * Compréhension du langage naturel : extraction d’un ensemble d’informations catégoriséss depuis la phrase retranscrite à l’étape précédente. L’information est séparée entre une intention (ce que l’utilisateur veut) et les entités (informations importantes permettant de faire sens avec l’intention)
 * Gestionnaire de dialogue : récupère l’ordre en entrée pour générer une liste d’instruction aux autres éléments du système, il garde également trace des anciennes conversations et des informations importantes qu’il a pu en tirer. Ce composant a en particulier accès au information pour répondre à la question (les heures de fermeture de McDonald ici), le contexte de conversation (issues des questions précédentes) et les informations utilisateurs obtenus au fil du temps lors de l’utilisation de l’application.
 * Génération de langage naturel : transformation inverse, création d’une phrase « correcte » à partir des ordres générés avant
 * Text To Speech : Création d’une sortie vocale à partir de la phrase générée

=Outils utilisés=

Pour créer une application vocale et la faire fonctionner, un certain nombre d'outil est nécessaire. L'ensemble de ces outils sont détaillés après. Les liens vers leurs sites respectifs sont disponibles dans les sources, en bas de la page.

Violet
Violet est un framework permettant la création d'application conversationnelle, notamment pour Alexa, Google Home et mobile. Violet permet:
 * la création de flux de conversations
 * l'accès à des primitives de bas niveau permettant de gérer automatiquement l'état de la conversation
 * l'accès à des plugins permettant la communications avec d'éventuelles bases de données

Violet nous fournit une interface permettant de tester la logique de notre application avant de la déployer.

Heroku
Heroku est une plateforme cloud permettant le build, le déploiement et la gestion d'une application.

Dans le cadre d'une application, il est nécessaire de déployer l'application pour pouvoir la tester avec un agent Dialogflow.

Dialogflow
Dialogflow se définit comme une plateforme de compréhension du langage naturel. En pratique, Dialogflow nous permet également d'avoir accès à des composants de Speech To Text et de Text To Speech.

=Bibliographie=
 * https://www.manning.com/books/exploring-voice-first-development
 * https://www.manning.com/books/voice-ui-systems-cx
 * https://helloviolet.ai/?ref=hackernoon.com
 * https://dialogflow.cloud.google.com/
 * https://www.heroku.com

=Veille Technologique 2020=
 * Année : VT2020
 * Sujet : Voice-First Development
 * Slides : Slides
 * Démonstration : Démonstration
 * Auteurs : Samuel COURTHIAL