Les films de science-fiction s’équilibrent entre robots qui parlent et robots qui ne parlent pas. Mais lorsqu’un robot parle, cette fonction devient tout de suite une compétence très remarquable et très identifiable. L’exemple le plus "parlant" [1] est HAL 9000, l’intelligence artificielle des oeuvres de Arthur C. Clarke et porté à l’écran par Stanley Kubrick dans "2001, l’odyssée de l’espace".
Approche générale
Avec la multiplication des ordinateurs et la domination des écrans comme interface homme machine, le niveau de qualité de la synthèse vocale n’est pas celui qu’on pensait atteindre dans la science-fiction des années 60. Mais la perception de l’intelligence des machines par leur capacité à parler n’a pas changé : s’il sait parler, c’est qu’il sait penser. Bien entendu c’est faux, mais comme cette erreur d’analyse s’applique aussi aux hommes, on ne va pas se risquer à lancer un débat...
L’informatique distribuée va dans le sens de machines qui ne parlent pas : non seulement ce serait la cacophonie si l’aspirateur, le frigo, la télé et la vidéo-surveillance se mettaient à nous raconter tout ce qu’ils font, mais cela irait à l’encontre de l’approche ubiquitaire (masquée dans les objets inertes, moins visible qu’une unité centrale / écran / clavier) des années 2000.
Mais avec les récentes initiatives dans les "Smart Homes" et dans l’interconnexion des équipements, on retrouve des dispositifs centralisés (la voiture, la maison) qui pourraient utiliser la voix comme interface de communication simplifiée.
Les projets de l’association Pobot
En ce qui nous concerne, le choix technique qui prévaut depuis 7 ans ne mettait pas la synthèse vocale à portée de nos robots : des micro-contrôleurs existent mais n’ont pas la qualité requise pour nos démonstrations.
Mais avec l’apparition d’ordinateurs de plus en plus petits (du Mini-ITX à la Raspberry Pi en passant par la Mini2440), et comme nos robots prenaient de plus en plus de place (R2-D2, Nono, Gaston, Baba), il est devenu réaliste d’embarquer les logiciels et la puissance de calcul nécessaires.
C’est Nono le Parlobot qui bénéficiera le premier d’une solution complète : destiné à parler pendant des heures, la solution initiale reposait sur l’enregistrement de voix humaine de textes complets, lancés par un séquenceur avec un simple µC AVR et un module mp3 de type SOMO. Mais les logiciels disponibles sur le système GNU/Linux équipant la carte Raspberry Pi nous ont fait changer nos plans.
Explications générales
Pour permettre à un robot de parler, il faut déjà qu’il ait quelque chose à dire. On va donc décomposer la parole en deux étapes : définir les mots à prononcer, et émettre ces sons.
La première partie repose sur un système de transcription phonétique ou "text-to-speech" ou "TTS" : le robot lit un texte (qu’il a composé de façon autonome ou qu’on lui fournit) en épelant les mots et le transforme grâce à des algorithmes propres à la langue du texte en des phonèmes. C’est une façon de découper les mots en sons. On utilise une syntaxe particulière pour noter ces phonèmes sous forme textuelle.
La seconde partie est la synthèse vocale proprement dite : les phonèmes écrits sont lus et les sons correspondant sont envoyés vers un haut-parleur pour être entendus. Le choix de la voix est important, car l’intonation doit correspondre à la langue du texte.
Solution technique retenue
Nous utilisons deux outils pour Nono le Parlobot :
– espeak pour la transcription phonétique
– mbrola pour la synthèse vocale
La page de documentation Ubuntu est suffisamment complète pour bien démarrer. Bien entendu vous retrouverez bientôt l’implémentation particulière mise en oeuvre par le club.