KubuntuBlog

Si tu travailles avec un marteau-piqueur pendant un tremblement de
terre, désynchronise-toi, sinon tu travailles pour rien. Pierre Légaré

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 29 septembre 2006

Cité dans le planet KDE

J'ai remarqué un referer que je n'ai pas l'habitude de voir. Après recherche, j'ai découvert que j'avais été cité sur le planet KDE.

Suite à mon billet sur la synthèse vocale, j'ai laissé un commentaire sur un blog ou j'avais trouvé des infos. Hors ce blog est syndiqué dans le planet KDE et l'auteur s'est fendu d'un petit post pour relayer mon commentaire.

Merci à lui et j'espère que parmis les nouveaux visiteurs certain aurons trouvé mon billet utile.
Pour ma fierté personnelle, j'ai fait une petite capture d'écran : Capture d'ecran

PS: j'ai aussi découvert grace à ce blog une autre possibilité de faire la conversion texte/phonèmes pour le français. Il s'agit de cicero. Je vais essayer de tester ca rapidement pour le comparer à LliaPhon.

mercredi 27 septembre 2006

[KDE] Katapult : un lanceur commandé au clavier

IconeAprès mon gros billet sur la synthèse vocale, voici un plus léger sur une petite application dont je ne peux plus me passer.

Katapult est un lanceur d'applications intégré à Kubuntu[1]. Il tourne en tache de fond et est appelé à la demande par l'appui sur Alt+Espace. Une fenêtre apparaît alors et vous commencez à taper un nom d'application. Katapult va alors chercher dans votre menu[2] ce qui correspond aux premières lettres entrées. Une fois la bonne trouvée, vous tapez Entrée et Katapult se charge de démarrer le programme nécessaire.
Quand vous avez les mains sur le clavier, vous pouvez alors lancer n'importe quelle application (et plus, voir ci-dessous) présente dans votre menu sans toucher à la souris.

Par exemple, si vous faîtes Alt+Espace puis A M A, il va vous proposer de lancer amaroK. Capture d'ecran

Mais Katapult ne se contente pas de chercher dans le menu K, il peux aussi via plusieurs plugins :

  • se comporter comme une calculatrice
  • chercher dans les bookmarks (et lancer le navigateur)
  • ouvrir un dossier dans le répertoire de l'utilisateur
  • chercher dans la base de musique d'amaroK (quand celui-ci est démarré)[3]

Pour le configurer (des/activer des plugins, changer de skin...) tapez Ctrl+C une fois Katapult affiché et choisissez Configurer dans le menu contextuel. Capture d'ecran

Capture d'ecran

Pour conclure, voici quelques petits liens utiles :

  • Le wiki pas très fournit pour le moment
  • Les forums ou les developpeurs interviennent assez souvent
  • Les bugs recensés dans la version actuelle
  • Son entrée dans kde-apps

Bref, Katapult enlarge your productivity et permet de réduire d'au moins 42.4% l'usure de votre souris. Pourcentage qui peux monter à 67.9% selon les raccourcis claviers que vous utilisez en plus (Alt+F4, Ctrl+Alt+F1, Ctrl+Alt+Backspace ...) Mais attention, c'est une drogue, une fois essayé, vous ne pourrez plus vous en passer !

Et pour ceux qui, comme moi, en sont devenus dépendants, mais sont scotchés sous windows au boulot, je leur propose de regarder Launchy[4].

Notes

[1] et bientôt directement dans KDE

[2] et même ailleurs

[3] mais c'est cassé dans la version actuelle

[4] lui aussi en GPL

lundi 25 septembre 2006

Gonfler ses stats

Blogger, la plateforme de blogs de google.

Ils ont beaucoup de blogs hébergés chez eux ? Normal faut s'enregistrer pour poster un commentaire !

Du coup j'ai un nouveau blog chez eux ;)

PS: normalement on peux s'identifier avec son adresse gmail, mais c'est en béta et ... c'en est une vraiment une !

dimanche 24 septembre 2006

Synthèse vocale en français sous Linux

Généralités

Icone Il existe de nombreuses solutions pour faire de la synthèse vocale sous Linux (aussi appelée TTS). La plupart est du à des universitaires. Nous allons en étudier une puis voir comment l'intégrer dans KDE.

NB: que les puristes de la synthèse vocale pardonnent mes approximations, les cours que j'ai suivis commencent à dater ;)

Le principe général est à partir d'un texte brut :

  1. le traiter de manière à le transformer en entités élémentaires appelées phonèmes
  2. ajouter des informations de prononciation (durée, accent tonique ...) : c'est la prosodie
  3. créer un fichier vocal en concaténant les sons pré-enregistrés correspondants aux phonèmes ou diphones[1]

Pour plus de détails, je vous renvoi vers Wikipedia ou vers ce document pdf.

Les principaux moteurs de synthèse vocale sous Linux sont :

  • epos : Czech et Slovak
  • FreeTTS : en Java, US English
  • festival / flite : English, Spanish and Welsh
  • mbrola : un nombre incoyable de voix/langues, mais non libre

C'est tout de même ce dernier que nous allons utiliser.

le moteur de synthèse : mbrola

mbrola est un synthétiseur de parole multi-langage malheureusement non libre mais tout de même gratuit[2]. Il a l'avantage de fonctionner facilement et surtout de disposer de nombreuses base de diphones.

Pour l'installer, il vous faut télécharger les binaires ainsi que au moins une base de diphones. Vous vous retrouvez alors avec des fichiers zip :

  • mbr301h.zip : qui contient les binaires
  • fr1-990204.zip, fr2-980806.zip ... : avec les voix

Nous allons installer ceci dans /opt pour ne pas polluer notre système : Mbrola

sudo mkdir /opt/mbrola
cd /opt/mbrola
sudo chown jjl:jjl . # changez cela si vous êtes en multi-utilisateurs
unzip /home/jjl/sources/install/mbrola/mbr301h.zip
unzip /home/jjl/sources/install/mbrola/fr1-990204.zip
unzip /home/jjl/sources/install/mbrola/fr2-980806.zip
ln -s mbrola-linux-i386 mbrola # selon votre architecture

Maintenant testons le fonctionnement :

./mbrola fr1/fr1 fr1/TEST/trenet.pho trenet.wav
mplayer -really-quiet trenet.wav

cela devrait donner ceci :


Hum, il semble que le neolao player ai du mal sur ce morceau :( alors qu'il passe très bien dans XMMS

Si vous voulez éviter de créer un .wav à chaque fois, essayez ceci :

./mbrola fr2/fr2 fr2/TEST/hier.pho -.au | aplay

C'est assez impressionnant. Mais, autant vous prévenir tout de suite, nous n'obtiendrons pas cette qualité. La qualité de la diction proviens pour une grosse part de la prosodie, qui est très difficile à obtenir automatiquement. Nous allons quand même continuer ;)

La découpe en phonèmes : lliaphone

mbrola attends un fichier de phonème. Il nous faut donc un autre programme qui transforme du texte brut en phonèmes avec informations de prosodie. Nous allons utiliser lliaphon qui est distribué sous licence GPL. Il est dérivé de Lia_Phon initialement développé par Frederic Bechet et spécifique au français.

Commencez par télécharger et décompresser la version 0.4. Nous allons l'installer avec mbrola dans /opt :

cd /home/jjl/sources/install/mbrola/lliaphon-0.4
./configure --prefix /opt/mbrola/lliaphon 
make
make install

Pour tester, nous allons utiliser un script fourni avec lliaphon :

cd /opt/mbrola/lliaphon
echo "Bonjour, je suis un ordinateur.">/tmp/test.txt
export MBROLA_VOICE=/opt/mbrola/fr2/fr2
export PATH=$PATH:/opt/mbrola/
./bin/lliaphon /tmp/test.txt
./bin/play_ola /tmp/test.ola

Vous devriez entendre quelque chose dans ce genre :

Intégration dans KDE : kttsd

KDEaccKDE offre une manière élégante de lire du texte affiché à l'écran : KTTS . Voyons comment mettre ceci en place :

sudo apt-get install kttsd ksayit
  • kttsd est le démon qui s'occupera de la communication avec le backend de synthèse
  • KSayIt une petite application permettant de lire un document que l'on tape
  • La synthèse vocale sera aussi intégrée à Konqueror et à Kate[3]

Commençons par créer un script qui enchaîne les différentes étapes :

$ cat > /opt/mbrola/tts :
#!/bin/sh
echo $1 | iconv -f UTF-8 -t ISO_8859-1 > $2
/opt/mbrola/lliaphon/bin/lliaphon $2 > /tmp/log 2>&1
/opt/mbrola/mbrola -e -t 0.75 \
      -I /opt/mbrola/lliaphon/share/lliaphon/initfile.lia \
      /opt/mbrola/fr2/fr2 \
      `echo $2|sed s/\.txt$/\.ola/` $3 >> /tmp/log 2>&1
^D
$ chmod u+x /opt/mbrola/tts

Pour configurer ktts, deux solutions :

  • à partir de KSayIt : Settings/Configure KSayIt/Launch Control Center
  • en lançant kttsmgr à partir de la ligne de commande

Puis nous allons configurer kttsmgr pour qu'il utilise le couple lliaphon/mbrola :

  • Talkers / Ajouter / Langue: autre / Synthesizer: Show all - commande

Capture d'écran

  • Choisir la langue dans la fenêtre qui apparaît
  • Entrez la commande : /opt/mbrola/tts %t %f %w

Capture d'écran

Et voila, relancez Konqueror et vous avez maintenant une option pour lire le texte séléctionné : Capture d'écran Et vous entendez :

Quelques mots sur festival

festival est un moteur de synthèse vocale complet et open-source. Mais il ne fonctionne pas directement en français même s'il semble possible d'arranger cela (voir ci-dessous) Pour l'installer :

sudo apt-get install festival

Pour le tester :

echo "hello, I'm a computer"  | festival --tts

Vous pouvez aussi l'utiliser très facilement avec KTTS.

Bonus : lire les titres d'un flux RSS

Je me suis amusé à faire un petit script python qui récupère un flux rss et en fait un mp3. Il nécessite :

  • la bibliothèque feedparser qu'il vous suffit de décompresser dans le même répertoire que mon script,
  • lame pour l'encodage mp3,
  • et lliaphon / mbrola bien entendu :)

Pour l'utiliser c'est très simple :

$ ./rss2mp3.py
usage: ./rss2mp3.py <RssFeedUrl> [NbTitles]
        exple: ./rss2mp3.py http://kubuntu.free.fr/blog/rss.php 5
        création d'un mp3 des titres des 5 derniers articles de mon blog

Vous pouvez le télécharger la : rss2mp3.py
Si vous avez installé dans d'autres répertoires que moi, changez les variables en début de script

Pour aller plus loin

Notes

[1] transition entre deux phonèmes

[2] plus de détails dans la licence

[3] sauf que je n'ai pas trouvé comment faire avec Kate

vendredi 15 septembre 2006

Je veux aller en Bretagne

jeudi 14 septembre 2006

Une mise à jour qui casse Xorg

Il semblerai que la dernière mise à jour de sécurité du noyau (2.6.15-26.47) pose problème avec les drivers propriétaire nvidia et dans une moindre mesure ati. Après redémarrage, le serveur Xorg ne redémarre pas et une erreur est affichée en rapport avec les pilotes nvidia.

Le bug est référencé dans Launchpad et une solution semble déjà trouvée et devrait être dispo sous 24h (voir à la fin du bug sus-cité) En attendant, des solutions alternatives sont dispo dans les forums :

En ce qui concerne les cartes ATI, seule la 3D semble ne plus fonctionner. Voir ce post par exemple.

Edit: La correction est disponible, un simple upgrade devrait résoudre le problème.

Voila pour les faits.

Maintenant mes reflexions personnelles :

Voici une autre preuve que les drivers propriétaires c'est MAL ! Les drivers libres n'ont pas de problème.
La réactivité des développeurs est très bonne : 12h pour avoir la correction dans le 1er cas, 1h pour avoir une proposition de solution dans le second[1].

C'est la deuxième fois en moins d'un mois que le serveur graphique ne démarre plus suite à une mise-à-jour. Pour la première, je ne jette pas la pierre, tout le monde fait des erreurs et il semble que c'était un cas particulier. Mais la répétition dans un si court intervalle de temps me pose un cas de conscience !

Comment un gros problème comme cela peut passer au travers des tests de validation ? Je n'imagine pas que Canonical ne dispose de plusieurs machines, de configuration materielles diverses, pour tester les patchs avant de les deployer ! En plus une carte graphique nvidia, ce n'est pas une configuration exotique !

Oui, je suis conscient que valider des patchs c'est fastidieux et qu'il est beaucoup plus amusant de coder. J'ai fait assez de ces deux activités pour être d'accord. Mais quand on propose une distribution qui se veux à la fois LTS et grand public, la validation est un passage OBLIGATOIRE.
On peux alors objecter : faille dans le noyau, urgence à corriger ! La encore, je réponds NON : une distribution grand public ne peux pas se permetre de laisser les utilisateurs sur le carreau. D'autant que les failles n'ont pas l'air d'être des plus grosses[2].

Que pensera le débutant[3] qui en 1 mois va voir son Linux en rade 2 fois ? Car soyons clairs, se retrouver en ligne de commande dans ces cas, c'est être en rade complète ! Quels débutants savent éditer le fichier xorg.conf, utiliser lynks pour aller sur les forums, downgrader son noyau[4] ? J'ai très peur que ce genre de cas ne dégoute à jamais de Linux. Et ce n'est pas ca qui va résoudre le Bug #1.

Cela dit, les risques sont limités, uniquement pour les gens qui utilisent les drivers propriétaires et qui ont fait les mises-à-jours dans le mauvais intervalle de temps.

Bref, je suis toujours content de ma distribution et je ne vais pas la quitter de sitôt, mais ces deux graves problèmes si rapprochés me laissent un sale goût dans la bouche.

PS: merci de laisser les trolls dormir en paix

Notes

[1] on verra dans combien de temps c'est réellement corrigé

[2] failles locales, modules spécifiques d'iptables...

[3] c'est pas péjoratif hein

[4] bon, booter sur l'ancien c'est facile

mardi 12 septembre 2006

Une seule instance de gmplayer

Voici rapidement, une petite astuce à deux balles.

J'utilise gmplayer pour lire mes videos[1]. Mais celui-ci a un petit problème : à chaque click sur une vidéo dans konqueror[2], il m'ouvre une nouvelle instance et rale parcequ'il y en a déjà une[3]

Malgrés mes recherches, je n'ai pas trouvé de moyen de configurer gmplayer pour qu'il ouvre la nouvelle vidéo dans l'instance existance[4].

Le contournement ? Tuer l'instance déjà présente avant de lancer la nouvelle. Pour cela il suffit de changer la ligne de commande de gmplayer dans Konqueror :

  • Configuration / Configurer Konqueror / Associations de fichiers.
  • Choisir un type de vidéo (video/avi par exemple) cliquer sur Mplayer movie player puis sur Modifier.
  • Il ne vous reste plus qu'a changer la ligne de commande par

killall -s SIGUSR1 gmplayer ; gmplayer
et voila !

configurer konqueror

Notes

[1] On peux aussi utiliser Kmplayer qui est très bien, question d'habitude

[2] On doit pouvoir adapter cela à Nautilus, Rox-Filer...

[3] certains drivers video ne supportent pas plusieurs instances

[4] ce que font pourtant très bien kaffeine et vlc

dimanche 3 septembre 2006

Cherokee : une alternative simple à Apache

Introduction

IconeCherokee est un petit serveur web écrit en C et ne dépendant que de la libC. Même si ses fonctions sont limités par rapport au mastodonte Apache, il est largement suffisant pour un serveur web personnel. Il supporte quand même la plupart des fonctions de base que l'on peux attendre d'un serveur web dans un environnement non professionnel[1]. Nous pouvons citer :

Enfin, sa légèreté lui permet de fonctionner facilement sur des machines un peu anciennes.

Installation

La manière la plus facile est d'installer la version située dans les dépots dapper. Pour cela, un simple sudo apt-get install cherokee suffit sans problème.

Mais la version disponible est la 0.4.29, version assez ancienne, qui souffre d'un certain nombre de bugs et semble aussi avoir une faille de sécurité[2] :-o Pour contrer cela, j'ai réalisé un petit backport de la version disponible dans Edgy, à savoir la 0.5.4 qui est la dernière stable disponible. Pour ceux qui sont intéressés, vous trouverez les détails en fin d'article.

Pour l'installer, téléchargez les paquets disponibles ici et installez les avec dpkg :
sudo dpkg -i cherokee_0.5.4-1_i386.deb libcherokee-base0_0.5.4-1_i386.deb libcherokee-server0_0.5.4-1_i386.deb

Pointez alors votre navigateur vers http://localhost/ et vous avez accès au répertoire racine.
Les fichiers du site web sont situés dans /var/www et les fichiers de configuration dans /etc/cherokee

Configuration

Générale

Cela se passe dans le fichier /etc/cherokee/cherokee.conf. Les paramètres les plus intérressants sont

  • Port 80 : si vous voulez changer le port d'écoute par défaut
  • Listen 127.0.0.1 : à commenter pour que le serveur soit accessible de l'extèrieur
  • User et Group : qui définissent l'utilisateur qui execute le serveur

La configuration des différents sites se fait dans des fichiers sous /etc/cherokee/sites-available. Il ne seront accessibles que si un lien pointe vers eux dans /etc/cherokee/sites-enabled. Vous disposez au départ de deux fichiers default et example.com. Ce deuxième n'étant pas activé.

hôte virtuel

Si vous hébergez plusieurs adresses sur le même serveur, vous pouvez les configurer pour avoir des fonctionnement différents, par exemple photos.chezmoi.com ou websvn.chezmoi.com ...

Sinon, utilisez le fichier default et passez au paragraphe suivant.

Commencez par créer un fichier dans /etc/cherokee/sites-availables/ à partir du fichier example.com puis liez le dans sites-enabled :
sudo cp /etc/cherokee/sites-availables/example.com /etc/cherokee/sites-availables/photos
sudo ln -s /etc/cherokee/sites-availables/photos /etc/cherokee/sites-enabled/photos
Il devrait ressembler à cela :

Server photos.chezmoi.com {
       DocumentRoot /var/wwwphotos/ # la racine de votre galerie photo
       DirectoryIndex index.php, index.htm
       Directory / {
               Handler common
       }
       # recopiez ici la configuration de php si necessaire
}
php fcgi

Le fcgi est une évolution de cgi qui permet d'accélérer l'éxecution des scripts[3]. Commencez par installer php compilé de cette manière :
icone sudo apt-get install php4-cgi
$ php-cgi -v
PHP 4.4.2-1build1 (cgi-fcgi) (built: Apr 6 2006 09:40:55)
puis éditez le fichier du site par défaut (ou de votre hôte virtuel) :
sudo vi /etc/cherokee/sites-available/default
et remplacer les dernières lignes par celles-ci :

Extension php, php3, php4 {
       Handler fcgi {
               Server localhost:8000 {
                       Env PHP_FCGI_CHILDREN     "5"
                       Interpreter "/usr/bin/php-cgi -b 8000"
               }
       }
}

Il vous faut alors redémarrer le serveur web :
sudo invoke-rc.d cherokee restart
Vous pouvez tester que cela fonctionne en ajoutant un fichier info.php à la racine de votre site[4] :

<?php
   phpinfo();
?>

Vous pouvez aussi utiliser un fichier common.conf que vous inclurez dans les différents hôtes virtuels :

Include /etc/cherokee/sites-enabled/common.conf
Authentification

Pour une authentification simple, il suffit d'ajouter ces lignes dans votre directive Directory :

Auth Basic {
   Name "Test Login"
   Method plain {
      PasswdFile  /etc/cherokee/passwords
   }
}

Le fichier password[5] est de la forme :

user:password

Pour plus de sécurité, vous pouvez utiliser d'autres manières de conserver les mot de passe voir une Auth Digest qui évite d'envoyer les passwords en clair[6]

Pour aller plus loin ...

Il faut lire la documentation ;)

Bonus : le backport pour Ubuntu Dapper

Note: Vous pouvez vous contenter de télécharger directement les paquets binaires du backport cherokee. Cette procédure n'est la qu'a titre informatif.
J'ai simplement récupéré les paquets sources de edgy et je les ai recompilés avec ma dapper. Voici rapidement la procédure que j'ai suivie : Remplacer le dépot source universe de dapper par celui d'edgy dans /etc/apt/sources.list

par exemple par la ligne : deb-src ftp://ftp.free.fr/mirrors/ftp.ubuntu.com/ubuntu edgy universe
$ sudo apt-get update

Télécharger les sources de cherokee et compiler le paquet :

$ cd /tmp/cherokee
$ apt-get source cherokee
$ cd cherokee-0.5.4
# tant que ca ne compile pas :
  $ fakeroot dpkg-buildpackage
  $ sudo apt-get install <PaquetManquant>

Les paquets sont alors créés dans le répertoire parent et il ne reste plus qu'a les installer :)

Attention : Pensez bien à rétablir votre sources.list avec le dépot pour dapper

Notes

[1] voir même dans un professionnel si les besoins sont simples

[2] même si je n'ai pas réussit à la reproduire

[3] en bref, on dispose d'un serveur ce qui permet d'éviter des fork à chaque appel. Plus de détails ici

[4] ne le laissez pas en place après tests, il donne beaucoup trop d'informations sur votre installation

[5] ne devrait être lisible que par l'utilisateur du site web

[6] mais je n'ai pas réussit à la faire fonctionner :(