La synthèse vocale est un outil très pratique qui permet aux utilisateurs de communiquer avec leurs appareils sans avoir à utiliser leur voix. Avec Processing et Espeak, il est possible de créer une annonce vocale de l’adresse IP de l’interface wifi. Cet article expliquera comment utiliser Processing et Espeak pour créer une annonce vocale de l’adresse IP de l’interface wifi et comment cela peut être utile pour les utilisateurs.
Processing Synthèse vocale avec espeak : annonce vocale de l’adresse IP de l’interface wifi.
Explication
- Ce script va extraire l’IP de l’interface wifi à partir du résultat de l’exécution de la commande ifconfig à partir de Processing, sous Ubuntu.
- Ensuite, la chaine obtenue est synthétisée à l’aide du logiciel espeak, toujours à partir de Processing.
- L’intérêt de ce programme est de connaître l’IP attribuée à un PC embarqué auto-connectable au wifi pour pouvoir faire un accès distant.
- On pourra utiliser ce programme sous forme d’une application autonome lancée automatiquement au démarrage d’Ubuntu.
Le programme
// généré avec le générateur de code Processing
// www.mon-club-elec.fr
// par X. HINAULT – Juillet 2011 – tous droits réservés
/////////////// Description du programme ////////////
// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX
// inclusion des librairies utilisées
// déclaration objets
String[] command ;
String inputString;
String adresseIP;
int compt=0; // variable de comptage des passages
// déclaration variables globales
// XXXXXXXXXXXXXXXXXXXXXX Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX
void setup(){ // fonction d’initialisation exécutée 1 fois au démarrage
} // fin fonction Setup
// NB : si pas de fonction draw, le programme s’arrête.
// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX
void draw() { // fonction exécutée en boucle
// — initialisation des objets et fonctionnalités utilisées —
delay(10000); // pause 10 seconde pour laisser temps à la connexion wifi de se lancer
getIP();
print(« Adresse IP wlan : « );
println(inputString);
String[] subIP = split(inputString, ‘.’); // coupe entre les .
direTexte(« L’adresse IP utilisée pour l’interface wifi w lane est « );
direTexte(subIP[0] +« point »+subIP[1] +« point »+subIP[2] +« point »+subIP[3]);
/*
direTexte(subIP[0] + »point »);// découpe la diction du message pour pause entre chaque.
direTexte(subIP[1] + »point »);
direTexte(subIP[2] + »point »);
direTexte(subIP[3]);
*/
exit(); // pour stopper exécution du programme à partir de Draw
//while(true); // stoppe boucle draw
} // fin de la fonction draw()
// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX
void getIP() {
// le paquet espeak doit etre installé sous Ubuntu (depuis la logithèque)
command = new String[1];
// espeak -v fr -s 140 « lecture texte espeak »
// espeak -v fr -s 80 -p 30 \ »moteur droit en marche avant\ »
command[0] = « ifconfig »;
//command[1] = « »;
//command[2]= » »;
//command[3]= » »;
//command[4]= » »;
//command[5]= » »;
//command[6]= » »;
//command[7]= » »;
//— exécution de la ligne de commande
try {
Process p = exec(command); // exécute la commande
//— récupère la sortie de la commande dans la console de Processing
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String ligne = null;
while ((ligne = in.readLine()) != null) { // lit la sortie console ligne à ligne
System.out.println(ligne); // affiche la ligne courante issue de la console
//—– prise en compte de la ligne qui suit ligne avec chaine caractère wlan0 —
if (compt==1) { // si un premier passage a eu lieu
// mis avant détection wlan0 pour éviter prise en compte lors 1er passage
inputString=ligne; // on mémorise la ligne
compt=2; // incrémente compt pour éviter prise en compte des lignes non voulues
//—- traitement de la chaine de la deuxième ligne = extraction de l’IP
inputString=trim(inputString);
String[] subString = split(inputString, ‘:’); // coupe entre les :
inputString=subString[1]; // garde la sous-chaine :192….Bcast:
String[] subString2 = split(inputString, ‘ ‘); // coupe entre les :
inputString=subString2[0]; // garde la sous-chaine d’adresse IP
}
//———- recherche la première ligne qui concerne l’interface —
String[] testString = match(ligne, « wlan »); // recherche la chaine dans la ligne – pas numéro pour éviter problème
if (testString != null) { // si le tableau n’est pas vide = si la chaine a été trouvée
inputString=ligne;
compt=1;
}
}
}
catch (IOException e) {
e.printStackTrace();
}
}
//—————– fin getIP() —–
void direTexte(String texte) {
// le paquet espeak doit etre installé sous Ubuntu (depuis la logithèque)
command = new String[8];
// espeak -v fr -s 140 « lecture texte espeak »
// espeak -v fr -s 80 -p 30 \ »moteur droit en marche avant\ »
command[0] = « espeak »;
command[1] = « -v »;
command[2]=« fr+m4 »;
// les voix sont dans /usr/share/espeak-data/voices/!v
// les variantes dispo sont : croak f1 f2 f3 f4 fast klatt klatt2 klatt3 m1 m2 m3 m4 m5 m6 m7 whisper
// pour utiliser une variante faire : espeak -ven+m3
command[3]=« -s »; // la vitesse
command[4]=« 90 »; // entre 30 et 200
command[5]=« -p »; // la tonalité
command[6]=« 30 »; // entre 0 et 99
command[7]=« \ »« +texte+« \ »« ; // le texte entre guillemets
//— exécution de la ligne de commande
try {
Process p = exec(command); // exécute la commande
//— récupère la sortie de la commande dans la console de Processing
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
/* >>>>>>>>>>>>>>>>>>>>>>>>> page man de espeak <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ESPEAK(1) ESPEAK(1)
NAME
espeak – A multi-lingual software speech synthesizer.
SYNOPSIS
espeak [options] [<words>]
DESCRIPTION
espeak is a software speech synthesizer for English, and some other
languages.
OPTIONS
-h Show summary of options.
-f <text file>
Text file to speak
–stdin
Read text input from stdin instead of a file
If neither -f nor –stdin, <words> are spoken, or if none then text is
spoken from stdin, each line separately.
-q Quiet, don’t produce any speech (may be useful with -x)
-a <integer>
Amplitude, 0 to 20, default is 10
-l <integer>
Line length. If not zero (which is the default), consider lines
less than this length as and-of-clause
-p <integer>
Pitch adjustment, 0 to 99, default is 50
-s <integer>
Speed in words per minute, default is 160
-v <voice name>
Use voice file of this name from espeak-data/voices
-b Input text is 8-bit encoding
-m Indicates that the text contains SSML (Speech Synthesis Markup
Language) tags or other XML tags. Those SSML tags which are sup‐
ported are interpreted. Other tags, including HTML, are ignored,
except that some HTML tags such as <hr> <h2> and <li> ensure a
break in the speech.
-w <wave file name>
Write output to this WAV file, rather than speaking it directly
-x Write phoneme mnemonics to stdout
-X Write phonemes mnemonics and translation trace to stdout. If
rules files have been built with –compile=debug, line numbers
will also be displayed.
–stdout
Write speech output to stdout
–compile=<voice name>
Compile the pronunciation rules and dictionary in the current
directory. =<voice name> is optional and specifies which lan‐
guage
–path=<path>
Specifies the directory containing the espeak-data directory
–phonout=<filename>
Write output from -x -X commands and mbrola phoneme data to this
file
–punct= »<characters> »
Speak the names of punctuation characters during speaking. If
=<characters> is omitted, all punctuation is spoken.
-k <integer>
Indicate capital letters with: 1=sound, 2=the word « capitals »,
higher values = a pitch increase (try -k20).
–voices[=<language code>]
Lists the available voices. If =<language code> is present then
only those voices which are suitable for that language are
listed.
–compile=voicename
Compile the pronunciation rules and dictionary in the current
directory. =<voice name> is optional and specifies which lan‐
guage
–compile=debug
Compile the pronunciation rules and dictionary in the current
directory as above, but include line numbers, that get shown
when -X is used.
AUTHOR
eSpeak was written by Jonathan Duddington <jonsd@jsd.clara.co.uk>. The
webpage for this package can be found at http://espeak.source‐
forge.net/.
This manual page was written by Luke Yelavich <themuso@ubuntu.com>, for
the Ubuntu project (but may be used by others).
July 25, 2007 ESPEAK(1)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*/
Articles similaires:
- Processing Synthèse vocale avec espeak : annonce vocale de l’adresse IP de l’interface wifi et éthernet sous Ubuntu.
- Processing Ligne de commande programmée : récupérer l’adresse IP de l’interface wifi wlan0
- Processing Synthese vocale avec espeak lancé en ligne de commande depuis Processing
- Processing : Jouer un son avec Mplayer
- Programme GLAP-Box : Test de la synthèse vocale
Articles Liés
- jQuery :
jQuery est une bibliothèque JavaScript open source très populaire qui permet aux développeurs web de…
- Javascript : Graphique Dygraphs simple
Le Javascript est un langage de programmation très populaire et puissant qui permet aux développeurs…
- Javascript : Afficher 6 widgets graphiques fournis par une librairie graphique externe.
Le Javascript est un langage de programmation très populaire qui permet aux développeurs de créer…