Quand j'ai magasiné pour mon livre électronique Sony Reader PRS-650 Touch, une des critiques sur les fonctionnalités manquante par rapport à d'autres était l'absence du Wi-Fi et de la technologie Text-To-Speech (TTS). Sans nécessairement ressentir le besoin d'utiliser ce dernier, je me suis posé la question sur ce que ça aurait pris pour ajouter cette capacité à l'appareil lors d'une future mise à jour du firmware. Après tout, il est muni d'une prise pour écouteurs et d'un système d'exploitation MontaVista Linux sur lequel on peut développer à l'aide de DevRocket pour Eclipse.
L'autre point qui m'indique une possible faisabilité est l'existence du projet PRS+ (GPL) dont l'auteur a déjà porté son code pour plusieurs modèles de liseuses Sony et qui songe à attaquer le PRS-650 lorsqu'il aura suffisamment de dons pour se procurer l'appareil pour des fins de tests.
Enfin, du point de vue purement théorique, l'utilisation du programme Festival sous Linux serait probablement l'outil qui rendrait possible l'ajout de la fonctionnalité text-to-speech.
Sauf qu'il y aurait deux inconvénients majeurs :
- reconnaissance limitée au vocabulaire anglais (pour la prononciation)
- lecture limitée aux fichiers textes (il faudrait d'abord extraire le texte des fichiers ePub, BBeB ou PDF)
pdftotext document.pdf
Cette commande aura pour effet de créer un fichier du même nom mais portant l'extension .txt. Sinon, le logiciel Calibre pourrait convertir un ePub ou tout autre format de livre électronique pour en extraire le texte sous forme de txt ou pdf mais ça devra être fait avant le transfert du fichier sur l'appareil.
Ensuite, une fois en possession du texte brut, il faudrait le faire lire par Festival. Il s'utilise comme suit. On entre d'abord dans festival :
$ festival
La première façon est d'entrer le texte à dicter, avec les parenthèses :
festival> (SayText "Hello, I'm a robot.")
Ou encore, par une ligne de commande :
$ festival --tts fichier.txt
Pour que le text-to-speech entre en fonction, on pourrait convertir en audio chaque phrase à la volée ou l'ensemble du document. Si ce n'est pas possible de l'envoyer directement en sortie aux écouteurs, il faudra peut-être passer par un fichier audio temporaire. Festival vient avec un utilitaire nommé text2wave qui permet de convertir le texte lu dans un fichier au format .wav :
cat fichier.txt | text2wave -o audio.wav
ou
text2wave -o audio.wav fichier.txt
Les spécifications du PRS-650 indiquent qu'il peut lire uniquement les formats audio mp3 et les AAC. Donc un .wav ne serait d'aucune utilité, à moins de le compresser en un format supporté. Lame serait parfait pour réaliser cette étape :
lame audio.wav fichier.mp3
À bien y penser, l'idéal serait de faire un petit programme wrap-up qui lirait le fichier et qui séparerait les phrases du texte pour les interpréter individuellement avant de les envoyer directement en sortie audio. Ou encore que le texte serait lu lorsqu'on le sélectionnerait par l'interface touchscreen. Festival n'offre pas nécessairement la meilleure voix pour écouter un récit (surtout quand on constate où est rendu AT&T Labs avec la recherche en matière de TTS) mais le concept est là. Peu importe le résultat, je me suis amusé et ça m'a permis d'explorer et de découvrir quelques outils pratiques sous Linux. Maintenant, il ne me reste qu'à attendre de recevoir mon Reader Touch pour pousser plus loin mes recherches.