ELECINF344/381

Partie interactive du site pédagogique ELECINF344/ELECINF381 de Télécom ParisTech (occurrence 2011).

Catégories

[Casper] Audio in/out on the beagleboard, and drivers

Audio in/out

As I said in a previous post, we are now able to synthesize speech from a text input, and play the result directly on the audio output jack using a home-made interface between the synthesis engine and alsa.

We had also to port our speech recognition hello-world on the beagleboard. We first compiled the CMU Pocketsphinx library for the board, that is to say for an arm target, and then the hello-world program.

The program successfully recognized commands we recorded and played on the laptop, while having the beagleboard’s audio input connected to the laptop’s headset output by an appropriate cable.

We now have to interface electronically our microphones to the beagleboard’s audio input.

 

Drivers

Apart from the progress in the audio, we also managed to compile a linux kernel module hello world on the board, despite the current custom kernel’s lack of certain header files.
The helloworld ran properly, and we were able to write a string to it, and read it back.

The next step will be to start developing our custom linux device driver, responsible for casper’s mechanical control.

[CASPER] : text-to-speech on the beagleboard

Here is a little summary of what has been done today, regarding the text-to-speech on the beagleboard.

Audio with alsa on the beagleboard

First, I would like to explain the step we followed to get the audio output to work on the beagleboard without damaging the TPS6595, which manages the audio, but also the power supply (now I am sure that you understand the reason why we should not burn this one down).

We have on our SD card a bootstrapped version of the ubuntu linux distribution, with alsa installed.

To get alsa to work without being the superuser, you have to add the normal user to the audio group, and reboot the beagleboard.

Then, open the alsamixer program.

Here is was you SHOULD NOT do, despite it is being advised on some forums : enable each and every device in alsamixer.
This will cause the TPS6595 chip to overheat, and may damage it.

 

What you should do is enable only what is necessary :

  • Increase the volume of the DAC2 analog; DAC2 digital coarse and DAC2 digital fine.
  • Increase the volume of the headset
  • Enable headsetL2 and headsetR2

You should now have a working audio output.

 

Text-to-speech

In order for our whole application to work properly on the board, we decided not to use pulseaudio (which requires up to 40% of the CPU on the board). We decided to implement our own interface for the audio output, which would handle all the write requests from internal threads such as the text-to-speech engine’s thread. This interface would store the corresponding samples, pre-process them in order to fit alsa’s interleaved pcm format, and play them on the audio output.

We were able to test successfully this interface today, by synthesizing speech with SVOX pico on the beagleboard, and playing it simultaneously on the audio output.

The whole process requires 30% of the cpu during a short period (synthesis/samples post) and then 0/0.7% of the CPU during the rest of the the process, which is good news compared to the 40% CPU minimum required during the whole process in our previous experiments.

The next step will be to port the CMU Sphinx recognition helloworld we designed to the beagleboard.

[CASPER] Reconnaissance vocale et synthèse

Bonjour à tous.

Comme vous le savez déjà pour la plupart, nous avons montré Mercredi que nous étions désormais capables d’effectuer une reconnaissance vocale performante en Anglais, en utilisant la librairie CMU Pocketsphinx.

Cette librairie permet la reconnaissance de phrases complètes, ce qui permet de bénéficier d’une bonne qualité de détection en prenant mieux en compte la nature du langage. Afin d’améliorer la détection des commandes, nous avons généré à partir des outils fournis avec pocketsphinx un dictionnaire et un modèle de langage qui ne contiennent que les mots dont nous avons besoin.

Nous souhaiterions générer ce type de dictionnaire/modèle de langage pour le Français, ce qui s’avère plus compliqué étant donné qu’il n’existe pas encore d’outils réalisant ce travail.

 

En ce qui concerne la synthèse vocale, notre choix s’est porté sur l’excellente librairie SVOX Pico, qui fait déjà ses preuves sur les téléphones Android (avis aux amateurs voulant l’essayer).

La voix est, en comparaison avec d’autres solutions libres, naturelle et fluide. Cette bibliothèque supporte l’anglais (US et GB), l’allemand, le français, l’espagnol et l’italien. Nous avons à présent un Hello world fonctionnel qui synthétise la voix correspondant à un texte (stocké en dur dans le code pour le moment) et qui envoie les échantillons directement à pulseaudio pour une lecture sur haut parleur.

Cette bibliothèque nous laisse entrevoir la possibilité de lire des messages dans les 5 langues précédemment citées, ce qui pourrait donner une valeur ajoutée intéressante au projet.

 

Il nous reste à porter tous ces programmes sur la beagleboard et mesurer leurs performances respectives, en terme d’occupation mémoire et de temps de calcul.

[CASPER] Reconnaissance et synthèse vocale / Solutions Wi-Fi

Nous aborderons ici les solutions envisagées pour le projet casper en ce qui concerne la reconnaissance et la synthèse vocale, ainsi qu’en terme de connexion Wi-Fi

I. Reconnaissance et synthèse vocale [Thibault P.]

 

Afin d’intégrer des fonctionnalités de reconnaissance et de synthèse vocale dans notre projet, il est nécessaire de commencer par une étude des solutions existantes et accessibles.

Nous pouvons les diviser naturellement en deux branches, les solutions Hardware et Software.

1) Hardware

La société Sensory, Inc. (http://www.sensoryinc.com/) réalise des IC spécialisés dans le traitement audio, et notamment dans tout ce qui concerne la reconnaissance et la synthèse vocale, mais aussi l’identification biométrique par la parole (fonction de mot de passe vocal) sur certains modèles.

L’avantage est donc de décharger le microprocesseur principal par un matériel spécialisé, ce qui permettrait, par exemple, d’avoir un algorithme un peu plus gourmand de reconnaissance faciale (cf post d’Alain du 27 Fev).

L’inconvénient est de devoir mettre en place un environnement de développement spécialisé pour cette tâche, avec les coûts que cela implique, et l’incertitude quant aux performances de la synthèse en terme de calcul de prétraitement (construction des phonèmes).

Concernant les performances des puces, il semble que les fonctions de reconnaissance soient suffisantes par rapport à ce que l’on souhaite faire (reconnaissance d’un vocabulaire restreint pour la commande de casper), mais il se pourrait que les fonctions de synthèses ne soient pas assez performantes pour traiter sans coupure un long texte. Les données techniques exactes ne sont pas directement fournies* (du moins je ne les ai pas trouvées) ce qui confère à ce choix technique une dose de hasard non négligeable.

* L’information la plus précise que j’ai trouvée à ce sujet est que la fonction de synthèse text-to-speech ne peut pas traiter plus de 160 caractères en un coup. Il faudra donc couper les longs messages en plusieurs parties, ce qui permettrait de demander confirmation à l’utilisateur qu’il souhaite poursuivre la lecture, mais qui peut être ennuyeux si il faut attendre un délai trop important avant que la lecture ne reprenne.

Processeur NLP-5x de Sensory, Inc. : text-to-speech + reconnaissance vocale + autres

Processeur RSC-4x de Sensory, Inc. : reconnaissance vocale + mot de passe vocal + synthèse vocale (ne semble pas être text-to-speech) + autres

 

2) Software

Pour ce qui est d’une solution software, il existe des bibliothèques libres que nous pourrions donc utiliser. Parmi celles-ci, il existe une bibliothèque C spécifiquement conçue pour l’embarqué : il s’agit de Pocketsphinx, qui est l’un des blocs du projet CMU Sphinx.

On peut trouver concernant cette bibliothèque des informations de performance en terme de détection, mais il est difficile de trouver des informations sur les performances en terme de ressources utilisées.

On peut noter toutefois que cette bibliothèque a été utilisée avec succès sur l’iPhone d’Apple, ce qui implique donc qu’elle est bien « portable » et « embarquable ».

La bibliothèque pocketsphinx est donc une bibliothèque dont la licence nous permettrait d’en faire usage dans notre projet, qui présente une solution à faible investissement et qui de plus a été spécifiquement conçue pour la reconnaissance vocale dans un système embarqué.

Pour ce qui est de la synthèse vocale, on peut noter l’existence d’une autre bibliothèque issue de la même Université, la CMU Flite, qui elle aussi est proposée dans une version spécifique à l’embarqué.

 

Les avantages de cette solution sont donc le faible coût initial de mise en œuvre ainsi que sa spécialisation pour l’embarqué, ce qui lui permettrai de l’incorporer dans notre système, éventuellement dans un contrôleur dédié si nous souhaitons décharger l’unité principale.

Les inconvénients sont à nouveau l’incertitude quant aux performances en termes de ressources utilisées et en terme de temps de calcul.

 

II. Wi-Fi [Thomas Q.]

Nous avons exploré les différentes options pour la connectivité wifi. Radiospares propose une large gamme de produits qui ont tous l’avantage d’être connectable par bus SPI.

La principale différence se fait au niveau des débits visés. On trouve des chips à un débit réduit de 1-2 Mbps (peu chers) ou des chips configurables de 1 à 54 Mbps (plus chers).
Les bas débits seraient suffisants pour les applications web type mail ou VoIP mais pourraient limiter l’évolutivité du robot en cas de flux vidéo.
Dans le cas où l’on partirait pour une gumstick pour la carte mère (Le choix de l’architecture matérielle n’étant pas encore fixé) il existe un modèle (le AIR COM) qui intègre déjà un module wifi.
Finalement, le modèle de H&D pourrait s’avérer un bon choix (ou sous sa forme SD card) car il consomme peu, intègre un mode de veille (important si l’on souhaite avoir une alimentation par batterie), et propose une large gamme de débits. Cependant, j’ai l’impression que le produit ne comporte pas d’antenne, il est donc nécessaire de l’acheter séparément et de prévoir ce qu’il faut pour la connecter si c’est le cas… Et donc de prévoir le coût de conception supplémentaire, notamment en terme de temps.