Faites parler votre shell avec Festival

Gazette Linux n°114 — Mai 2005

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

Article paru dans le n°114 de la Gazette Linux de mai 2005.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Ma configuration
2. Installation du logiciel
3. Premiers pas
4. Le programme de salut
5. Créer un « assistant personnel virtuel » avec cron
6. Obtenir les dernières actualités provenant du site internet du journal Le Monde®
7. « Le Dieu des petits riens »
8. Conclusion
9. Bibliographie

Souhaitez-vous une version un peu plus « humanisée » de votre ordinateur ? Si vous êtes prêt pour cette aventure, tout ce dont vous avez besoin est un ordinateur équipé du système d'exploitation Linux, ainsi qu'un peu de temps pour télécharger et installer les programmes requis. Amusons-nous un peu avec les logiciels bash et Festival TTS (Text To Speech).

1. Ma configuration

J'utilise une machine Pentium 4® de 1,6 GHz dotée de 128 Mo de mémoire vive et d'une installation Redhat Linux 9®. Le système dispose d'une carte son intégrée, ce qui est tout à fait suffisant pour cette entreprise. Si vous voulez garder votre intimité, je ne saurais trop vous recommander aussi une paire d'écouteurs.

2. Installation du logiciel

Le logiciel que nous allons utiliser est le système de synthèse vocale Festival — un programme de TTS ou synthèse de la parole à partir du texte, développé par l'université d'Édimbourg. La puissance du scriptage shell peut exploiter tout le potentiel du programme Festival. Le paquetage Festival fait partie des distributions Redhat 9® et Fedora. Si vous ne l'avez pas déjà installé, vous pouvez le télécharger sur http://www.cstr.ed.ac.uk/downloads/festival/1.95/ ou installer son paquetage RPM à l'aide de la commande rpm habituelle.

3. Premiers pas

Comme avec tout manuel de langage C, commençons par le programme « Bonjour monde ». Pour cela, saisissez :

echo "Bonjour monde"| festival --tts

à l'invite de commande. Si tout fonctionne, nous devrions entendre « Bonjour monde » à travers les haut-parleurs.

4. Le programme de salut

Écrivons maintenant un programme qui joue quelque chose comme « Bonjour monsieur » à chaque fois que nous nous connectons au système. La sortie son changera dynamiquement en fonction de l'heure de connexion. Voici comment procède le script shell :


#!/bin/bash

dat=`date +%H`
matin=12
après-midi=15
soirée=24

if [ $dat -le $matin ] 
then
        echo "Bonjour monsieur" |festival --tts

elif [ $dat -gt $matin ] && [ $dat -le $après-midi ]
then
        echo "Bon après-midi monsieur"|festival --tts

elif [ $dat -gt $après-midi ] && [ $dat -le $soirée ]
then
        echo "Bonne soirée monsieur"|festival --tts
fi

Enregistrez ce fichier sous le nom salut.sh dans votre répertoire personnel, puis éditez .bash_profile dans ce même répertoire et ajoutez-y ~/salut.sh. Dorénavant, vous entendrez « ce doux salut » chaque fois que vous vous connecterez à votre système.

5. Créer un « assistant personnel virtuel » avec cron

Il est possible d'utiliser Festival avec cron pour créer un assistant personnel chargé de vous rappeler vos rendez-vous. cron sert à ordonnancer des programmes sous Linux. S'il ne fonctionne pas déjà, démarrez le démon cron en exécutant service crond start en tant que root. Créez maintenant vos alertes sonores — placez les lignes suivantes dans le fichier thé.sh dans votre répertoire personnel :

#!/bin/bash
echo  "N'oubliez pas de prendre votre thé à 18.30 "| festival --tts

Programmez à présent cette tâche dans cron avec la date et l'heure spécifiées. Pour vous en souvenir chaque jour à 18h30, créez un fichier et nommez-le test. Insérez dans ce fichier les lignes suivantes :

30 18 * * *  sh ~/thé.sh

et exécutez la commande :


crontab test

pour programmer l'événement. Pour vérifier que la tâche est correctement programmée, exécutez :

 
crontab -l

Le système énoncera le message à l'heure fixée. Vous pouvez même programmer le PC de vos parents pour les surprendre en leur souhaitant un joyeux anniversaire.

6. Obtenir les dernières actualités provenant du site internet du journal Le Monde®

Ce qui se passe dans le monde vous intéresse ? Vous pouvez créer un lecteur de nouvelles RSS qui va obtenir les toutes dernières nouvelles du site web du journal Le Monde® et les lire pour vous. À cette fin, nous allons utiliser le flux RSS de ce site web.

RSS (Really Simple Syndication) est une technologie visant à partager des informations sur le Web. Son format XMLsimple et bien établi favorise la syndication des manchettes. Dès lors qu'un site web crée un fichier RSS, il crée un moyen de permettre à d'autres d'avoir accès à ses manchettes. Les sites de nouvelles connus comme Yahoo!®, BBC News®, The New York Times®, ainsi que des dizaines de milliers de blogs (journaux personnels) et de sites de médias indépendants publient tous des flux RSS que nous pouvons utiliser.

Ce script shell va récupérer le flux RSS du site du journal Le Monde®, puis traiter ses manchettes et son contenu. La sortie sera ensuite transmise au programme Festival, de façon à ce que nous puissions entendre les dernières nouvelles du journal Le Monde.


#!/bin/sh
# Script shell permettant d'obtenir et de lire les toutes dernières nouvelles du journal Le Monde à l'aide de Festival.
                                                                                                 
# Ici, nous spécifions l'URL
url="http://www.lemonde.fr/rss/sequence/0,2-3224,1-0,0.xml"
                                                                                                 
# Spécifiez le serveur mandataire (proxy) ici, si vous en avez un
proxy="151.8.18.40:6588"
                                                                                              
headarg="-10"  # cinq manchettes par défaut, changez cette valeur pour augmenter le nombre de manchettes
                                                                                               
# Spécifiez le serveur mandataire avec l'option -x du programme curl, si vous n'en 
# utilisez pas, supprimez la partie '-x "$proxy"' 
curl --silent -x "$proxy" "$url" | grep -E '(title>|description>)' | \
  sed -n '4,$p' | \
  sed -e 's/<title>//' -e 's/<\/title>//' -e 's/<description>/   /' \
      -e 's/<\/description>//' | \
         
# Ici, nous transmettons la sortie à Festival
   head $headarg | fmt|festival --tts
exit 0

Enregistrez le code sous rss.sh et exécutez-le de la manière suivante :


sh rss.sh

Assurez-vous d'être connecté à l'Internet avant d'exécuter ce code, puisque le programme curl doit contacter le site web du journal Le Monde® et en récupérer le contenu.

7. « Le Dieu des petits riens »

Quelquefois, je souhaiterais embaucher quelqu'un pour me lire des livres ou des pages de man. Actuellement, je ne lis pas les pages de man — je les écoute juste ! Par exemple, pour écouter la page de man de cron, saisissez :


man cron | festival --tts  

Vous voulez connaître le nom des utilisateurs connectés sur votre système ? Saisissez :

 
who | awk 'print {$1};'| festival --tts

Vous pouvez vous faire lire un grand nombre de sujets — faites donc un essai !

8. Conclusion

La puissance de Festival associée au shell scripting est considérable — sans limite !

9. Bibliographie

Je n'ai pas abordé la théorie qui est derrière la synthèse de la parole à partir du texte (text to speech) car elle n'est pas l'objectif de cet article. Si cela vous intéresse, consultez The Festival Speech Synthesis System pour plus de détails.

Pour en savoir sur le shell scripting, consultez les ouvrages suivants :

  • Linux Shell Scripting with Bash, par Ken O. Burtch

  • Wicked Cools Shell Scripts, par Dave Taylor

Maxin B. John travaille pour HCL Infosystems Ltd®, à Pondicherry (Inde) et il est MCA Graduate du Collège gouvernemental de Thrissur. Il aime pratiquer Python et Bash. Il remercie son gourou, Mr. Pramode C.E de l'avoir initié au monde merveilleux de Linux.

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.