Parfois les choses se télescopent comme dirait un astronome… Hier à Nevers un des visiteurs (radioamateur) sur les Premières Rencontres Nationales du Raspberry Pi prépare un relais (radio) et m’a demandé si le Raspberry Pi pouvait générer des messages. Les messages ne peuvent pas être enregistrés car il faut par exemple retourner la puissance du signal reçu ou la température… Sinon il faudrait enregistrer une quantité de messages… importante.
Au sommaire :
Synthèse vocale sur le Raspberry Pi
Vendredi j’avais acheté le numéro 193 de Linux Magazine France. Or ce numéro contient un article intitulé : « Il ne lui manque que la parole… ».
Profitant de cette aubaine, j’ai rebranché un Raspberry Pi (bin oui j’avais emmené tous mes joujoux à Nevers 🙂 ) et une enceinte. Juste pour le fun (loi de Gombretin oblige) j’avais fait tourner en boucle Big Buck Bunny sur HDMIPI pendant 2 jours en non stop, avec le son et cette enceinte. Arrivé à Nevers je rebranche le tout, je lance le film et pas de son ! bin oui ! Gombretin et Murphy se sont ligués contre moi. Pas moyen de récupérer le son. Là je viens de tout rebrancher. Devinez ? hihihi ça fonctionne ! Je suis vert 🙁
Bon revenons à nos moutons.
SVOX Pico TTS
La lecture de l’article (très intéressant) de Linux Magazine France m’a amené à tester SVOX Pico TTS (TTS = Text To Speach).
L’installation ne pose pas de problème particulier. Après les sempiternels
sudo apt-get update sudo apt-get upgrade
on passe à l’installation du synthétiseur vocal :
sudo apt-get install libttspico-utils
Et puis… c’est tout. C’est prêt
Un premier test : Vas y, cause
L’installation de Pico TTS ajoute un utilitaire destiné à générer un fichier .wav à partir du texte :
pico2wave -w helloworld.wav "Hello world, happy new year, my tailor is rich oups "
Bon, si vous avez d’autres idées pour la phrase, ne vous gênez pas 🙂
Voilà on obtient un fichier .wav avec une vois qui a quand même un fort accent américain…
Do you speak français ?
Non, sérieux… Vous imaginez un relais radioamateur français qui vous répond avec un accent du Michigan ? Voyons voir s’il est possible d’arranger ça. On peut régler la langue du synthétiseur. Il y a peu de langues disponibles
Le seul moyen d’avoir la liste des langues est d’en utiliser une qui ne figure pas dans la liste.
pi@raspi-7p-officiel:~/parole $ pico2wave -l fr-BE -w "Allez, une fois" Unknown language: fr-BE Valid languages: en-US en-GB de-DE es-ES fr-FR it-IT Usage: pico2wave <words> -w, --wave=filename.wav Write output to this WAV file (extension SHOULD be .wav) -l, --lang=lang Language (default: "en-US") Help options: -?, --help Show this help message --usage Display brief usage message
Bon, on voit qu’il n’y a ni le Mandarin, ni le serbo-croate mais au moins on trouve le français ! il faudra utiliser fr-FR pour que le RasPi s’exprime dans la langue de Molière.
On teste ?
pico2wave -l fr-FR -w framboise.wav "Bienvenue sur framboise trois quatorze !"
Cela génère un fichier framboise.wav qu’on peut écouter :
pi@raspi-7p-officiel:~/parole $ omxplayer -o local framboise.wav Audio codec pcm_s16le channels 1 samplerate 16000 bitspersample 16 Subtitle count: 0, state: off, index: 1, delay: 0 have a nice day
Sortir le son directement sur le jack audio
C’est une peu contraignant de devoir créer un fichier .wav à chaque fois, puis de l’écouter avec omxplayer.
Comme tout bon informaticien, je suis un « bon » fainéant. Je ne vais pas refaire des dizaines de fois la même suite de commandes. J’applique le principe : « Si tu dois écrire plus de deux fois les mêmes commandes, écris un script »
La revue Linux Magazine France propose un script qui fonctionne très bien.
J’ai créé un fichier dit.sh
nano dit.sh
Ajoutez ces lignes dans le fichier, enregistrez le (CTRL X)
#!/bin/bash pico2wave -l fr-FR -w /tmp/test.wav "$1" aplay -q /tmp/test.wav rm /tmp/test.wav
Le fichier .wav est créé de façon temporaire, lu, puis supprimé. $1 représente la phrase que vous passerez en paramètre sur la ligne de commande.
Rendez le programme exécutable.
sudo chmod 755 dit.sh
Si vous ne voyez pas à quoi ça sert, lisez l’article sur les droits Linux, indispensables si vous voulez savoir comment modifier les droits des fichiers et répertoires…
Réglage du volume
La sortie peut sembler un peu faible, vous pouvez modifier le niveau sonore en réglant le volume. Non, non, ne cherchez pas le bouton qu’il faut tourner, on est en ligne de commande !
amixer sset 'PCM' 95%
Vous pouvez aller jusque 100%… après le « bouton » se bloque 🙂
Quelques tests
./dit.sh "La température est de douze virgule six degrés "
./dit.sh "Votre signal arrive esse sept sur le relais "
./dit.sh "Désolé F1GYT, le relais est actuellement en maintenance "
Juste pour vous amuser essayez « La température est de 6,8°C » ou encore « La distance est de 35km », « vous pesez 97kg » (ouais je sais…), « le RaspberryPi pèse environ 45g et coûte 40€ », « le disque dur pidrive a une capacité de 314Mo », « nous sommes le 1/5/2016 », « il est 22h30 » etc…
Pico TTS lit parfaitement ces phrases avec les unités 🙂
Et si voulez lire le manuel (si, si, c’est bien, RTFM) il est disponible en ligne.
Conclusion
Un grand merci à Linux Magazine France dont je vous conseille la lecture. Vous y trouverez également les informations pour installe X11VNC ou encore les bases du QR Code.
De nombreuses applications utilisent la synthèse vocale, mais c’est souvent intégré à des distributions ou à des applications. Dans le domaine de la robotique, de la domotique ou de l’alarme vous pouvez avoir besoin de donner la parole à votre framboise. Vous avez ici les bases pour rendre votre RasPi bavard. N’en abusez quand même pas, au bout d’un moment on n’a qu’une envie… Débrancher le haut -parleur 😉
Il faut parfois jongler avec l’orthographe pour arriver à obtenir le son voulu mais ce n’est pas trop compliqué (pour les fois où j’ai eu à le faire). Je trouve le son d’une qualité tout à fait acceptable pour une voix synthétique. N’hésitez pas à dire ce que vous en pensez dans les commentaires 🙂
Pour répondre à la question posée hier à Nevers : Oui, en plus de gérer le fonctionnement du relais, pourquoi ne pas confier à un Raspberry Pi la génération des messages de service ?
Sources
- Linux Magazine France N°193 p64 et suivantes
- http://blog.erwan.me/post/2015/05/06/Synth%C3%A8se-vocale-sous-Ubuntu-avec-SVOX-pico-TTS
- http://unix.stackexchange.com/questions/32206/set-volume-from-terminal
- https://www.raspberrypi.org/documentation/usage/audio/
- https://launchpad.net/ubuntu/precise/+source/svox/+copyright
- http://askubuntu.com/questions/53896/natural-sounding-text-to-speech
Ping : Donnez la parole à votre Raspberry Pi – Radioamateur France
Franchement juste terrible ton article 🙂 J’ai adoré et testé, juste le top !
J’aimerais tant en savoir au moins autant que toi sur cette bestiole (RPi) mais avec le taf, j’ai pas assez de temps… Et heureusement qu’il y a des gens comme toi, passionnés, qui partagent toutes ces trouvailles.
Big merci à toi
merci drckjp
bah je n’en sais pas tant que ça, je suis plutôt un généraliste 🙂
mais je me dis que ce qui m’intéresse peut en intéresser d’autres
alors… voilà
bonne fin de journée
cordialement
François
Bonsoir ,
Pico , c’est la fonction Pi-pelette . 😀
Je l’ai sur mon smartphone Android pour le GPS , on peut sélectionner la voix masculine et la vitesse de diction .
C’est super de pouvoir utiliser cette fonction sur la RPi .
Merci François .
pi-pelette ! j’achète !!!!
merci et bonne soirée
pas moyen de retrouver le menu pour sélectionner la voix masculine .
Ça a dû sauter lors d’une mise à jour
Merci pour cet article. Le rendu de la voix est plutôt correct, même en français, et ça évite de faire appel à des services en ligne tel que Google Translate…
A quand la version Speech To Text en offline ? 🙂
bonjour Damien
les dames auraient peut être préféré une voix masculine mais je n’ai pas ça en magasin
je vais vois si ça se fait…
cordialement
François
Hello,
J’ai un petit défis supplémentaire 😉 Je travaille actuellement à l’élabaroration d’un petit robot qui parle utilisant déjà une des possibilités décritent dans le Tuto. Mon robot utilise également un ring neo-pixel.
Et là ca coince, dès que je met le neo-pixel en route, on dirait qu’il y a un conflit avec le son.
Le neo-pixel fonctionne très bien tant qu’aucun son n’a été utilisé. mais dès que j’envoie une commande vocale, c’est terminé.
Donc voilà, si queqlqu’un a une idée pour contourner se problème ?
Fabrice.
Ping : Donnez la parole à votre Raspberry Pi | ...
Salut,
J’avais même poussé le vice pour lui appendre à écouter sans aucun windows qui traine… (j’avais publié sur https://github.com/saez0pub/lmondo), chose que je n’avais pas pu pousser à fond, faute d’un micro correct et de la reconnaissance vocale qui n’est pas assez complète pour le français à mon gout.
mais pour parler, il suffit d’utiliser la commande espeak, avec le pack mbrola qui a de bonnes voix :
espeak -v mb/mb-fr4 -s 130 -p 40 « salut la compagnie »
Bonjour,
Pour ma part, j’ai laissé tomber pico2wave car la qualité n’est pas top top.
Pour ma part, j’utilise l’API de Google Translate pour récupérer mon son en MP3. La voix est de très bonne qualité !
Bonjour Jeoffrey
si on remet les choses dans le contexte, un relais radio amateur est situé en montagne, en haut d’une colline dans un bois…
pas sur que l’accès à l’API Google soit assuré 🙂
cordialement
François
Effectivement, vu comme ça c’est normal d’utiliser pico2wave ;).
PS : François, je viens de t’envoyer un mail sur contact@framboise314.fr
J’ai bien aimé ton test fr-BE 🙂
Salut de Belgique et merci pour ton super blog!
Bonjour Korban
c’était un clin d’oeil, ma mère était belge (Namur)
cordialement
François
Bonjour François et félicitation pour tes articles.
Pour ma part, (je suis radioamateur aussi) je suis sur une balise météo qui émet tous les 15 minutes sur une fréquence radioamateur,les infos de ces capteurs (température, pression,force et direction du vent) avec en plus la date et l’heure.
J’utilise « espeak » et après plusieurs réglages, c’est une voie féminine avec un fort accent Bavarois qui annonce la météo. cela reste très compréhensible. J’ai malheureusement des problèmes avec mon capteur de vitesse du vent. Voici un lien pour voire le montage http://f5saz.jimdo.com/projets/
merci et bonne continuation François
Philippe
Bonjour Philippe
je viens de faire un tour sur ta page un projet déjà bien avancé 🙂
j’ai dans mes cartons un jeu de capteurs (anémomètre, girouette et pluviomètre) je pense qu’ils sont de la même provenance
j avais récupéré un programme pour gérer tout ça sur arduino : https://github.com/trunet/weatherstation/blob/master/weatherstation_casa.ino
anémomètre interrupt fermeture contact = 2.4 Km/h /clic/sec
ça pourra peut-être t’avancer
et… si tu veux faire une description de la station sur framboise314 ce sera un plaisir 😉
73’s
François
merci François pour les info’s
je te tiens informé de mes évolutions
cordialement 73
Philippe/F5SAZ
Bonjour Philippe,
J’ai jeté un oeil sur ton projet et il me semble que ton problème d anémomètre proviens de « divisions entières ».
Remplace « p = pulse / 10 » et « t = temps /1000 » par « p = pulse / 10. » et « t = temps /1000. »
Alors p et t seront des réels et non plus des entiers, ton problème sera résolu.
Cordialement,
Jacques
Merci Jacques
Super! maintenant le résultat est cohérent , mais j’ai encore un pb qui plante la boucle après 30 minutes!
je n’ai pas dit mon dernier mots.
bonne journée à tous
Philippe
Trop drôle et trop cool. Je vis bien m’amuser avec. Merci.
Bonjour à vous.
jouer avec la syntaxe pour ajuster les intonations me rappel l’époque des sound blaster 16 et autres cartes audio dorénavant… vintage… 🙂
Surtout qu’à l’époque, pas de module français, tout en anglais, du coup on abandonnait vite fait !!!
vive le progrès
bonjour Bruno
La vie est un éternel recommencement 🙂
Mais bon, avec le Raspberry Pi arriver à avoir une voix en français à peu près correct ne demande pas trop d’efforts.
Cordialement
François
François, merci pour ton très intéressant article. Je viens d’essayer sur… Ubuntu.
Etonnant comme ça fonctionne bien !
super ! 🙂
merci pour le retour
Bonjour !
Il y a aussi eSpeak qui permet de faire de la synthèse vocale sans passer par un wav, en revanche je ne sais pas s’il est possible de le faire en français … Mais à priori oui si j’en crois Wikipedia : https://en.m.wikipedia.org/wiki/Comparison_of_speech_synthesizers
A vos tests, prêt… feu ! partez ! 🙂
Bonjour
j’en suis resté à la conclusion de l’article concernant eSpeak je cite « Tentons maintenant l’expérience en français … la phrase est plus compréhensible bien que l’on ait l’impression de se retrouver face à un robot de film de scifi des années 1980 »
du coup… j ai choisi Pico TTS
cordialement
François
Il y a aussi une version modifié de PicoTTS fonctionnnant sans passer par un wav, pico2play https://github.com/Smanar/Pico2play
Bonjour
merci pour cette info 🙂
Il existe même une extension pour LibreOffice : assez bluffant je trouve !
http://www.supinfo.com/articles/single/1587-synthese-vocale-fluide-linux-avec-pico
Ping : Faite parler votre Raspberry… | Do It Yourself
Bonjour
Moi aussi mon prof m’a appris
Terminal
Espeak
Mbrola
Gnome,
Ou Google translater
Lecture vocale avec voix télécharger mbrola masculine ou féminine
Pour projet robotique
Avec en plus micro et au choix hark de l université de kīotö ou pocket sphinx en acquisition
Traiter le text
1 enregistre text dans terminal capteur mic logiciel hark ou pocket sphinx
2 envoyer à Google translater
Ou fonction gnome
3article défi wiki pédiatre
4 retour programmation de réponse
5 lecture du texte traduit en douze langue
Dans espeak avec une voix mbrola défini
Voilà j espère que ça vous plait miam.miam!
Voilà qui résume et vous donne l oreille en plus d la voix
Radio amateur moi aussi
Merci à tous me renvoyer un timbre si vous voulez me soutenir
Nécessite j’essaie ros hark pocket sphinx gnome espeak mbrola routeur et Wikipedia
Needs helps
Comment réaliser un script de la logique de cette article comment automatiser les étapes svp ? merci
Je vous aide alors aider moi
Cordialement salutation
Xwandhook Dan Simon G
2bis
Bonjour et merci, c’est opérationnel !
Par contre j’essaie de l’utiliser dans une page PHP pour que mon pi parle lorsqu’il reçois une requete, mais ça ne fonctionne pas… Aurais-tu une idées ?…
Je fait des exec avec les mêmes appels que dans ton dit.sh, le fichier est bien créé et supprimé mais rien n’est lu.
Le fichier est bien généré, mais il n’est pas correcte (44 octets !)
J’ai enfin fait « causer » mes scrips python
Fonctionne très bien sur la sortie Jack et en Bluetooth
Très aléatoire ou incompréhensible sur HDMI
J’ai essayé de mettre mon bash et ma fonction python ici, mais refusé
Bonjour,
Super article qui m’a permis très simplement d’installer picoTTS sur mon rasp, que j’ai ensuite intégré à Jeedom. Avec un equalizer la voix est beaucoup mieux et je l’utilise pour pas mal de notifications du coup.
Par contre, comment peut on lui faire dire un mot anglais dans une phrase française ?
Par exemple, faites lui dire « C’est le weekend ! » le résultat est inutilisable… J’ai changé en « fin de semaine », j’ai essayé en phonétique mais j’y arrive pas…
Merci
Bonjour merci pour le tuto
J’arrive bien à dire les phrases mais je n’arrive pas à l’intégrer dans jeedom.
Merci
Bonjour,
depuis quelque temps quand j’essaie d’installer le paquet sur une nouvelle carte SD il me dit (malheureusement sur l’écran):
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
Aucune version du paquet libttspico-utils n’est disponible, mais il existe dans la base
de données. Cela signifie en général que le paquet est manquant, qu’il est devenu obsolète
ou qu’il n’est disponible que sur une autre source
E: Le paquet « libttspico-utils » n’a pas de version susceptible d’être installée
ce qui est « trait » dommage car je l’utilise souvent…
Bonjour,
quelqu’un pourrait m’aider j’essaye d’installer le paquet avec sudo apt-get install libttspico-utils sur ma raspberry pi 4 et voila ce que j’ai comme message:
Lecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
E: Le paquet « libttspico-utils » n’a pas de version susceptible d’être installée
Tu aurais dû prendre espeak ou quelque chose de ce style à la place
bonjour
bin… comme c’est mon blog, je choisis ce que je veux 🙂
et si tu penses connaitre une meilleure solution, je te propose d’écrire un article sur sa mise en oeuvre
je le publierai avec plaisir 😉
Un truc qui m’agace sur les forums (ou ici) c’est quand quelqu’un pose une question sur une solution qu’il a choisie et qu’on lui répond de prendre une autre solution !!
Après l’article date de mai 2016 et depuis les choses ont sans doute évolué, d’autres logiciels sont apparus ou se sont développés… il faut aussi en tenir compte quand on fait des critiques
ps : j’accepte les critiques avec plaisir, quand elles sont constructives
Bonjour et bravo pour ce tuto qui a donné de la voix à un de mes raspberry !
Mon raspberry ‘bavard’ est installé dans le salon, je l’utilisais jusqu’à présent uniquement comme serveur d’imprimante wifi.
Est il possible de faire causer ce raspberry à partir d »un autre raspberry via une requete http ou autre ?
Je m’intéresse à la reconnaissance de forme avec le raspberry et sa camera et j’aimerai mettre en place un systeme de cameras intelligentes avec annonces vocales lorsqu’elle detectera des personnes dans son champ de vision.
J’ai aussi des capteurs à base de ESP8266 un peu partout, peut être est il possible de lancer des requetes sur le rasp du salon à partir de ces capteurs ?
J’ignore si c’est possible mais ça serait vraiment très pratique de pouvoir centraliser toutes les alertes vocales au même endroit.
Bonne continuation et merci pour le partage.
Bonjour François,
je passe souvent sur votre blog qui est plein d’informations très précieuses. Merci
A mon tour de partager.
J’utilise cette page chaque fois que je dois installer PicoTTS, mais oups sous Buster ça ne fonctionne pas.
Alors voici un lien avec la solution de jerrm (jerrm)
https://bugs.launchpad.net/raspbian/+bug/1835974
Bonne continuation
bonjour Patrick
merci beaucoup je vais voir pour diffuser l’info 🙂
take care !
cdt
françois
Bonjour François,
Votre site est une mine ressources , a chaque fois que je recherche quelque chose pour mon PI je tombe sur ce site !
Je voulais savoir s’il est possible d’utiliser PICOTTS pour réaliser des appel téléphonique et lancer un message personnalisé ?
Ou dois-je m’orienter ? avez vous une idée ?
Par exemple GPIO1 obtient une information , je compose un numéro et la au moment ou je décroche j’entend « PICOTTS : attention Porte ouvert ‘Lieux' »
En vous remerciant par avance !
Bonjour
pas testé mais oui avec Asterisk pour gérer l’appel et vous injectez le son de picoTTS
cherchez Asterisk et TTS vous devriez trouver
Merci beaucoup pour votre retour
En vous remerciant
Ping : Merveilleux Rasperry Pi Zero W | Le Blog de Jean Gaillat
Bonjour monsieur tarte aux framboises,
j’ai eu le problème suivant plusieurs fois (il y a un an pareil) en installant le prog:
Reading package lists… Done
Building dependency tree
Reading state information… Done
Package libttspico-utils is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package ‘libttspico-utils’ has no installation candidate
Je pense pas qu’il faut être très intelligent pour comprendre que les dépôts ne le contiennent plus..
Une idée?
bonjour
non pas d’idée
il va falloir mettre les mains dans le cambouis
l article date de 5 ans, une éternité en informatique…
essayez via les forums comme https://www.raspberrypi.org/forums/viewtopic.php?t=251825
par exemple
cdt
françois
J’ai finalement réussi à l’installer avec les commandes suivantes:
wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico0_1.0+git20130326-9_armhf.deb
wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico-utils_1.0+git20130326-9_armhf.deb
*sudo apt-get install -f ./libttspico0_1.0+git20130326-9_armhf.deb ./libttspico-utils_1.0+git20130326-9_armhf.deb
Tout marche bien maintenant (je pense qu’il serait bon de mettre à jour l’article)
Ping : Éviter le blocage de votre Raspberry Pi en cas de défaillance d'un disque externe - Framboise 314, le Raspberry Pi à la sauce française....