Ce qui est nouveau, c’est qu’il existe désormais de nouvelles technologies et de nouvelles plateformes qui promettent d’accélérer et de faciliter la création de ce type d’expériences conversationnelles tout en bonifiant considérablement l’éventail des tâches que les agents virtuels vocaux (comme nous les appelons) peuvent exécuter.
Ces nouvelles technologies ont initialement vu le jour chez les assistants vocaux (Siri, Amazon Echo, Google Home) et sont en train de changer fondamentalement la façon dont les solutions RVI sont développées.
Pour comprendre comment, comparons la « RVI traditionnelle avec reconnaissance vocale » avec cette « nouvelle RVI ».
|
|
|
Reconnaissance vocale |
Grammaires et modèles de langage statistiques |
Transcription automatique de la parole (speech-to-text) |
Compréhension du langage naturel (CLN/NLU) |
Grammaires et classificateurs simples |
Traitement automatique du langage naturel (TALN) par apprentissage profond (deep learning) |
Synthèse de la parole |
Concaténation de segment vocaux + synthèse vocale (TTS) |
Synthèse vocale (TTS), principalement |
Regardons tout cela plus en détails.
RVI traditionnelle avec reconnaissance vocale
Les engins de reconnaissance vocale traditionnellement utilisés dans les RVI (par exemple, Nuance Recognizer) ne sont pas en mesure de fonctionner “out-of-the-box”. Pour cela, on doit faire appel à des grammaires de reconnaissance vocale. Il existe deux types principaux de grammaires :
- Les grammaires SRGS sont définies par un ensemble de règles, élaborées manuellement par un développeur de grammaires. Elles fournissent une description formelle des énoncés qui peuvent être reconnus par l’engin de reconnaissance. Le langage défini par les grammaires SRGS est rigide et seuls les énoncés prévus dans ces grammaires peuvent être reconnus par l’engin. Les grammaires SRGS sont bien adaptées aux dialogues dirigés, qui présentent typiquement un ensemble prévisible d’énoncés qui seront fournis par l’utilisateur.
- Les modèles de langage statistique (SLM) sont définis par des N-grammes; ce sont les probabilités d’occurrence un mot étant donnés les mots précédents dans la phrase, probabilités apprises à partir d’un échantillon de phrases. Les modèles SLM fournissent un modèle de langage beaucoup moins rigide que les grammaires SRGS et sont donc beaucoup mieux adaptés pour traiter les réponses aux questions ouvertes (par exemple, « Comment puis-je vous aider? »), réponses normalement plus spontanées, et fournies par l’utilisateur en langage naturel. Pour bien performer, les modèles SLM doivent pouvoir s’entraîner sur un corpus de phrases suffisamment grand et représentatif du domaine ciblé.
Le développement d’une application RVI traditionnelle avec reconnaissance vocale nécessite la création d’une grammaire distincte pour chacune des étapes du dialogue. De plus, pour atteindre un niveau de précision de reconnaissance suffisant, ces grammaires doivent subir de nombreux réglages basés sur des énoncés d’utilisateurs réels, qui auront été collectés par l’application RVI en production.
Le développement et le réglage de ces grammaires sont des tâches chronophages qui nécessitent l’intervention de spécialistes de la parole hautement qualifiés. Si cela est bien fait, on peut atteindre une très grande précision dans la reconnaissance et créer des expériences utilisateur positives. Malheureusement, ces tâches sont trop souvent négligées, ce qui se traduit inévitablement par des performances de l’engin de reconnaissance décevantes, ce qui à son tour entraîne une expérience utilisateur médiocre. C’est d’ailleurs une des principales raisons pour lesquelles les RVI avec reconnaissance vocale ont si souvent mauvaise réputation.
Transcription automatique de la parole (speech-to-text, STT)
Au cours des dernières années, et grâce à l’apprentissage profond, nous avons assisté à une évolution fulgurante des technologies de reconnaissance vocale. Cette importante percée a permis d’entraîner des engins STT qui arrivent à fournir des transcriptions vocales de haute précision pour des types presque illimités de vocabulaires. De nos jours, bon nombre de fournisseurs proposent des engins STT (par exemple, Google STT, Nuance Krypton, Amazon Transcribe, Deepgram, etc.) et il existe également des versions en code source libre (open-source).
Avec l’utilisation des engins STT, il n’est plus nécessaire de développer des grammaires, un gain de temps non négligeable lors de la création d’applications RVI conversationnelles. Est-ce que l’on vient ici de résoudre l’énigme de la reconnaissance vocale? Loin de là! Atteindre un niveau de précision acceptable reste un enjeu majeur. En fait, des grammaires adéquatement réglées apporteront un niveau de précision souvent nettement plus élevé que le meilleur des engins STT.
Actuellement, les principaux problèmes rencontrés lors de l’utilisation d’engins STT sont:
- Données d’entraînement. Comme pour tout modèle basé sur l’apprentissage automatique, les performances du modèle STT seront optimales si ses données d’entraînement sont représentatives des conditions dans lesquelles il est utilisé. Ainsi, si un modèle était, par exemple, principalement entraîné sur des enregistrements obtenus à partir d’un haut-parleur intelligent, abordant typiquement des thèmes tels que la météo, le réglage des alarmes, la lecture de musique et des questions de connaissances générales, il est fort probable que ce modèle n’offrirait pas des performances optimales dans le cadre d’une application RVI de type bancaire. S’il était possible d’affiner les réglages d’un modèle STT en l’entraînant sur des données spécifiques à un domaine précis, cela pourrait faire une énorme différence en ce qui a trait à la précision. Malheureusement, la plupart des fournisseurs d’engins STT ne permettent pas cette option (exception faite de Deepgram). Notons toutefois que Nuance fournit une solution partielle en permettant d’entraîner le modèle par langue de domaine (domain language model, DLM) sur des phrases spécifiques à chaque domaine ciblé.
- Contextualisation. Les engins STT peuvent conceptuellement reconnaître n’importe quel énoncé d’utilisateur, que celui-ci parle de films, de politique, de météo, de musique, peu importe. C’est une fonctionnalité très puissante, mais qui peut aussi devenir un handicap dans le contexte des applications conversationnelles, qui sont généralement spécifiques à un domaine particulier en plus d’être fortement contextualisées. Si un agent virtuel demande à un utilisateur de fournir une date de naissance, il y a fort à parier que l’utilisateur réponde en fournissant une date de naissance. La fait de savoir tirer profit de ces connaissances contextualisées peut grandement améliorer la précision de la reconnaissance vocale. Les humains font cela constamment, sans même s’en rendre compte. Certains engins STT fournissent quelques capacités de contextualisation (par exemple, la fonctionnalité d’adaptation de modèle de l’engin STT de Google), mais celles-ci restent assez limitées pour le moment.
- Optimisation. Les engins de reconnaissance vocale des RVI traditionnelles offrent plusieurs moyens efficaces d’optimiser la précision. Par exemple, d’importants gains de précision peuvent être obtenus en affinant les transcriptions phonétiques, en modélisant la coarticulation à l’intérieur des mots et entre les mots, en modélisant les disfluences verbales, en ajustant les poids des différents éléments d’une grammaires ou les poids des différentes grammaires, en intervenant dans le post-traitement des meilleurs résultats (N-best results), etc. La plupart des engin STT offrent peu, sinon pas de moyens d’optimiser la précision.
- Support multilingue. Nu Echo étant située à Montréal, ville bilingue, la plupart des applications conversationnelles que nous déployons doivent savoir traiter les mots anglais dans les phrases en français et vice-versa (la reconnaissance d’adresses en est un très bon exemple). Cela ne peut être fait efficacement qu’avec un engin de reconnaissance vocale capable de traiter deux langues différentes à l’intérieur d’un seul et même énoncé, une fonctionnalité disponible chez certains engins de reconnaissance vocale des RVI traditionnelles, mais dans aucun engin STT de notre connaissance.
Les technologies STT évoluent extrêmement rapidement. Nous pouvons donc nous attendre à ce que le niveau de précision de reconnaissance soit en constante amélioration, à pouvoir profiter d’outils de contextualisation et d’optimisation de plus en plus efficaces, à accéder plus facilement à des modèles pouvant être optimisés en fonction de domaines spécifiques. En attendant, la solution idéale pourrait très bien être une combinaison engins STT, engins RVI traditionnelles.
Compréhension du langage naturel (natural language understanding, NLU)
Les premières applications RVI avec reconnaissance vocale reposaient exclusivement sur les grammaires SRGS pour la reconnaissance vocale; la compréhension du langage naturel (NLU) n’était donc pas un problème, le NLU étant intégré à la grammaire.
L’utilisation de modèles de langage statistiques (SLM) a fait naître le besoin d’avoir un engin NLU distinct, capable de comprendre les résultats de reconnaissance pour des énoncés spontanés. Des techniques de détection d’intentions, basées sur des techniques simples d’apprentissage automatique, ont été introduites il y a plus de 20 ans, pour des besoins reliés à l’aiguillage d’appels en langage naturel. Ces techniques font très bien fait l’affaire, mais elles nécessitent habituellement un imposant échantillon de phrases, pour chacune des intentions, afin que le modèle soit correctement entraîné, ce qui représente souvent un obstacle de taille à la mise en service d’un système.
Durant bon nombres d’années, ces techniques n’ont pas beaucoup évolué. Puis, est arrivé l’apprentissage profond, qui a totalement changé le paysage des technologies de traitement du langage naturel. Un premier grand changement a été l’introduction des représentations vectorielles continues de mots (word embeddings), qui améliorent la généralisabilité et permettent de diminuer de façon considérable la taille de l’échantillon de phrases nécessaire pour entraîner les modèles NLU. Plus récemment, des modèles de langage de grande taille (entraînés sur de gros corpus de données, par exemple BERT) et de nouvelles architectures de réseaux neuronaux apportent d’autres améliorations d’envergure.
Il est intéressant de noter que les technologies NLU utilisées pour traiter les conversations textuelles sont les même que celles utilisées pour traiter les conversations vocales, alors qu’il existe des différences importantes entre ces deux types de conversation. Par exemple, les systèmes traitant des conversations textuelles doivent être capables de gérer de manière fiable les fautes de frappe, les acronymes et les sigles (par exemple, « lol », « mdr »), les émoticônes, etc., alors que les systèmes traitant les conversations vocales doivent, de leur côté, savoir gérer les différences orthographiques entre homophones (par exemple, « cent » vs. « sans », « Desjardins » vs. « des jardins » ou « soixante-treize » (73) vs. « soixante treize » (60 13)), les normalisations de l’engin STT non-souhaitées (par exemple, « H 1 M 2 L 5 » → « H un mètre deux L cinq »), sans parler des erreurs de reconnaissance vocale.
Abordons maintenant certains problèmes reliés à l’utilisation des engins NLU :
- Contextualisation. La plupart des engins NLU ne sont pas contextuels (à l’exception de Dialogflow), ce qui peut être un problème car le même énoncé peut avoir des interprétations différentes en fonction du contexte dans lequel il apparaît. Par exemple, l’interprétation de l’énoncé « Montréal » sera différente selon que la question posée était « quelle est votre destination? » ou « quelle est la ville de départ? »
- Score de confiance. Un dialogue de réparation efficace doit pouvoir s’appuyer sur des scores de confiance fiables mais malheureusement, les scores de confiance des engins NLU n’ont pas tendance à être très précis. De plus, les scores des engins NLU ne prennent généralement pas en compte le score de confiance de reconnaissance vocale. Or, comment se fier à un résultat NLU s’il est lui-même basé sur un résultat de reconnaissance vocale à faible score de confiance? Pour être considérés comme sûrs, les scores de confiance des applications conversationnelles vocales doivent prendre en compte à la fois les scores STT et les scores NLU.
- Meilleurs résultats (N-best results). De nombreux engins NLU ne renvoient qu’une seule intention, celle avec le score de confiance le plus élevé, même si elle apparaît auprès d’autres intentions ayant des scores presque identiques. Le fait de pouvoir avoir accès à une liste des meilleurs résultats (N-best results) permet de prendre de meilleures décisions en ce qui a trait au dialogue (par exemple, lorsque vient le temps de désambiguïser certains énoncés) ou de choisir la meilleure hypothèse en fonction d’informations contextuelles qui ne seraient pas disponibles pour l’engin NLU.
Le traitement automatique du langage naturel est actuellement l’un des domaines de recherche en intelligence artificielle des plus dynamiques et nous nous attendons à ce que les systèmes d’IA conversationnels bénéficient d’un flux continu d’avancées technologiques.
Synthèse de la parole
Les technologies de synthèse vocale (TTS) existent depuis très longtemps, mais jusqu’à tout récemment, la qualité et l’intelligibilité des résultats n’étaient pas assez bonnes pour offrir une expérience conversationnelle convenable. Les segments vocaux des meilleures applications RVI avec reconnaissance vocale étaient presque tous enregistrés en studio avec des voix professionnelles. Pour ce qui est du rendu des phrases comprenant des données dynamiques, on devait alors procéder à de la concaténation de segments, ce qui est assez complexe à faire correctement.
Mais des progrès phénoménaux ont récemment vu le jour du côté des technologies TTS. Il est ainsi désormais raisonnable, dans la plupart des cas, d’utiliser des voix de synthèse plutôt que des enregistrements studio. C’est particulièrement vrai en anglais, où la qualité de la meilleure voix de synthèse est telle qu’il est parfois difficile de la distinguer d’une voix humaine. De plus, on peut maintenant créer des voix de synthèse personnalisées qui peuvent imiter notre voix professionnelle préférée.
Le recours aux technologies TTS change vraiment la donne pour tout ce qui a trait à la création et au développement des applications RVI conversationnelles. D’une part, elles éliminent le besoin de retourner constamment en studio pour enregistrer de nouveaux segments vocaux dès que survient un changement à l’application. D’autre part, elles nous épargnent de fastidieuses manipulations de milliers de segments vocaux (dans souvent plus d’une langue), tâches trop souvent sources d’erreurs. Désormais, les applications peuvent être modifiées, testées et mises en production dans la foulée.
Bien sûr, les technologies TTS ne sont pas parfaites et nous rencontrons encore des erreurs occasionnelles, mais généralement il s’agit d’un faible prix à payer en comparaison avec l’immense valeur ajoutée qu’elles apportent. La solution idéale pourrait très bien être une combinaison d’enregistrements en studio, pour les segments audios clés où nous recherchons une intonation et une émotion précise, et de segments de synthèse personnalisés, construits à partir de la même voix professionnelle que celle utilisée dans les segments pré-enregistrés.
Intégration avec les plateformes de centre de contacts
Les applications RVI traditionnelles avec reconnaissance vocale ont longtemps adhéré à des standards éprouvés pour réaliser l’intégration de technologies conversationnelles; qu’on pense au protocole MRCP pour la reconnaissance et la synthèse vocale, au langage VoiceXML pour les dialogues, à la spécification SRGS pour les grammaires de reconnaissance vocale ou au mécanisme SISR pour l’interprétation sémantique.
Désormais, avec l’émergence d’une nouvelle génération de plateformes de centre de contacts infonuagiques et l’arrivée des plus récentes technologies basées sur l’apprentissage profond, tous ces standards deviennent obsolètes et sont remplacées par un éventail d’interfaces de programmation (API) propriétaires et de nouveaux standards émergents (par exemple, l’environnement gRPC).
L’intégration de ces nouvelles technologies conversationnelles avec les plateformes de centre de contacts demeure une tâche en cours d’évolution. Voici ce que nous constatons:
- Certaines fonctionnalités de base que nous tenions habituellement pour acquises (par exemple, les interruptions (barge-in) et le repli DTMF) ne sont pas toujours disponibles
- Le choix des technologies conversationnelles disponibles sur plusieurs plateformes de centres de contacts reste limité
- Même lorsque des intégrations sont disponibles, il est souvent très difficile de tirer pleinement profit du potentiel des nouvelles technologies (par exemple, le fait de ne pas avoir accès aux scores de confiance ou aux listes des meilleurs résultats (N-best), le fait qu’il soit impossible de faire du post-traitement sur les résultats STT avant de les envoyer à l’engin NLU, etc.)
Certaines solutions voient tranquillement le jour afin de combler ces problèmes d’intégration. Par exemple, Audiocodes, avec son VoiceAI Connect, prétend fournir « une connectivité facile entre toute plateforme de centre de contacts et tout environnement de développement robot ou tout engin vocal » (“easy connectivity between any CC platform and any bot frameworks or speech engine”). Cela pourrait permettre d’exploiter au mieux les technologies conversationnelles en fonction des exigences propres à chaque solution à implanter.
Le meilleur des deux mondes
L’apprentissage profond a un impact fondamental sur les technologies d’IA conversationnelles et cela change considérablement la façon dont nous envisageons le développement des applications RVI. Nous sommes encore aux balbutiements de cette transformation. Ces nouvelles technologies sont encore trop immatures mais évolueront probablement très rapidement dans un avenir proche. À nous de nous adapter à leur évolution rapide et de comprendre comment les exploiter le plus efficacement possible.
Néanmoins, ces nouvelles technologies offrent déjà des avantages concrets très significatifs. Par exemple :
- Il n’est désormais plus nécessaire, pour que la reconnaissance vocale fonctionne, de créer des grammaires complexes ou de recueillir des milliers d’énoncés d’entrainement pour des modèles SLM. La précision de reconnaissance vocale des meilleurs engins STT est, d’emblée, suffisamment acceptable, de sorte qu’il est désormais possible de mettre rapidement en production un système opérationnel.
- Les plus récents engins NLU peuvent être entraînés avec énormément moins de phrases que les anciennes technologies de classification NLU, ce qui permet, ici encore, de pouvoir mettre très rapidement en production la première version d’un système.
- Les plus récentes technologies de synthèse vocale sont devenues si performantes qu’il n’est maintenant presque plus nécessaire de recourir à des segments audios pré-enregistrés (en particulier pour l’anglais). Cela réduit considérablement le délai nécessaire pour concevoir et mettre en production des nouvelles versions d’une application, facilitant et accélérant ainsi grandement leur déploiement.
La possibilité de mettre rapidement en service une première version d’une application est cruciale car elle permet de commencer rapidement à recueillir de vraies données conversationnelles et des énoncés d’usagers réels, matière première avec laquelle le système peut être amélioré et optimisé de façon continue.
Alors que certaines des limites des technologies STT commencent à être prises en considération (par exemple, en termes de contextualisation, d’optimisation, de traitement multilingue, etc.), les développeurs d’applications RVI conversationnelles devraient envisager de combiner les technologies STT avec les technologies de reconnaissance vocale des RVI traditionnelles afin d’obtenir le meilleur des deux mondes et d’offrir aux utilisateurs de RVI conversationnelles des expériences remarquables (certaines plateformes RVI, par exemple la plateforme vocale de Genesys, permettent cette combinaison d’approches).