(Courriels de diversion: <belligerante@emulee-montgolfieres.com> <deliberant@aviserai-emergeriez.com> <impartiaux@inacceptation-collera.com> <guerissable@recipiendaires-coopteras.com> <renouvellerai@sacraliser-denoncerez.com> <frequenterons@patrimoine-nordir.com> <joignes@ping-pong-debudgetiserons.com> <seigneuriale@pilotes-postoperatoires.com> <rafraîchirent@editerions-propages.com> <disconveniez@relationnels-sylvestres.com> )
On Sat, 7 Feb 2004 22:02:49 +0000 (UTC) philsfree@free.fr (Phil's Free) wrote: > - LLiaPhon puis FranFest > afin de fournir un serveur vocal appelable par des clients légers et > ne monopolisant pas inutilement la carte son. J'ai un peu réfléchis sur ce point : un serveur/demon appelable soit par client dédié soit par l'intermédiaire d'un device à nous. Voici un mail que j'avais envoyé en privé a favdb et qui retrace assez bien mes idées sur le sujet. Voici ou j'en suis. Existant ======== Festival semble pouvoir fonctionner en mode client-serveur (avec un client dédié). Il faudrait que je regarde comment font brltty. Client-Serveur ============== Sur cette idée, on peut envisager un lliaphon_serveur initialisant la synthese (données et processus mbrola et play) puis attendant des clients. Ces clients se connectent, et envoient les commandes (changement de voix, de vitesse...) et le texte au serveur. Celui-ci assure qu'une seule phrase (dans le cas de plusieurs clients simultanés) est prononcée à la fois. L'inconvénient : il faut développer des clients spécifiques. On peut néanmoins envisager un client générique permettant de faire : $ echo "Bonjour monde !" | lliaphon_client -v voix ... L'avantage, c'est que cela ne devrait pas être trop dur. La partie la plus délicate ce situe autour du serveur : - il faut gérer plusieurs clients, - éviter les conflits (un seul pronnonce une phrase à la fois), - assurer la restauration des contextes de chaque client (chacun peut avoir choisi des voix différentes). Module noyau ============ Je me suis documenté rapidement. Il ne me semble pas trop difficile de rajouter un module dans le noyau. On peut envisager ceci : un fichier spécial /dev/lliaphon est créé. Il peut être ouvert en écriture le plus simplement du monde (par exemple, "echo 'Bonjour monde !' > /dev/lliaphon" et aussi "cat fichier.txt > /dev/lliaphon" et aussi, depuis un prog C 'fopen("/dev/lliaphon", O_W);'). Ainsi, n'importe quelle commande produisant un texte peut alors être prononcée, sans adaptation du programme en question. En plus, chaque 'client' se retrouve, apres ouverture, avec son propre device ce qui nous permet de faire des 'sessions' pour éviter de tout mélanger et de garder un contexte par client. On peut aussi envisager un répertoire /dev/lliaphon/ dans lequel on trouve plusieurs devices, par exemple : - un par voix (/dev/lliaphon/fr1,.../fr7), - en fonction de priorité, - un par type de texte : /dev/lliaphon/theatre, /dev/lliaphon/texte_seul, /dev/lliaphon/systeme, ... Ici, la difficulté (et donc l'intérèt) c'est que je connais pas. En particulier, je ne sais pas comment, depuis le noyau, on peut discuter avec un programme externe (le vrai lliaphon, celui qui lit les fichiers de conf mais aussi celui qui gère d'autres procs). Probablement, le plus simple est de faire un /dev/lliaphon/output dans lequel le vrai lliaphon va lire le flux de texte produit par le 'multiplexage' des textes des différents clients. On peut aussi prévoir un /proc/lliaphon pour diriger la synthèse (déclaration du nombre de voix supportées ou utilisable ou simplement activation/désactivation de la prononciation...). Bref, plein de possibilités. Avant d'aller plus loin, il faudrait peut-etre qu'on se mette d'accord histoire d'éviter les évaporation d'énergies. Tout ceci était ton idée au départ. Comme un mal-élevé je me suis incrusté dans tes réflexions. Si tu veux travailler seul sur ce sujet, n'hésite surtout pas à me le dire, je ne le prendrai pas mal. Si non, je pense qu'il y a au moins du travail pour deux : - spécification de haut niveau : quelles commandes offrir, par quelles interfaces (directives dans le flux de données, ioctl, ...)...; - analyze de très bas niveau : que nous permet linux, comment architecturer le tout... -- Guilhem BONNEFILLE -=- #UIN: 15146515 -=- JID: guyou@amessage.be-= mailto:guilhem.bonnefille@laposte.netmailto:guilhem.bonnefille@free.fr-= http://nathguil.free.fr/ http://home.tele2.fr/nathguil/