gSpeech passe en 0.10

Posté par  . Édité par tisaac, palm123, Xavier Teyssier, Davy Defaud et claudex. Modéré par Davy Defaud. Licence CC By‑SA.
38
15
déc.
2020
Son

gSpeech est un petit utilitaire permettant la synthèse vocale sur GNU/Linux. Cette dépêche retrace les évolutions depuis la version 0.8 et esquisse des évolutions possibles pour le futur.

À la base, ce logiciel a été repris et amélioré en vue d’améliorer l’expérience utilisateur dans la distribution Primtux et par conséquent pour le milieu francophone. Cela n’empêche que son usage peut bien évidement de couvrir un champ plus large.

Les évolutions depuis la version 0.8 sont les suivantes :

  • la possibilité de modifier la vitesse de lecture, fonctionnalité ô combien demandée dans le milieu scolaire où l’on veut souvent réécouter une portion de texte au ralenti ;
  • création d’un paquet Debian en bonne et due forme : l’existant installait tout dans /opt ;
  • mise en place d’un PPA pour tous les utilisateurs d’Ubuntu et ses variantes ;
  • création d’un paquet nix et intégration dans nixpkgs (https://github.com/NixOS/nixpkgs/pull/86641), la distribution Nix est ainsi la première à intégrer nativement gSpeech !
  • mise en place d’un dialogue de configuration ; en effet, jusqu’à présent, gSpeech utilisait les boîtes de dialogue de notification par défaut (s’il détecte la fonctionnalité sur le système) — ce comportement, assez intrusif n’est pas du goût de tout le monde et peut donc désormais être désactivé ;
  • passage à flake8 : pour les amoureux de Python, il existe un utilitaire du nom de flake8 qui permet d’améliorer la lisibilité du code (c’est grosso modo un « linter »), c’est toujours un travail ingrat mais obligatoire pour gagner en sérieux, flake8 est également intégré dans l’intégration continue ;
  • découplage et meilleur choix dans les noms des variables, fichiers, classes, etc., toujours dans une optique de maturité ;
  • toutes les nouvelles fonctionnalités sont systématiquement traduites en anglais et français ;
  • mise en place d’un Makefile pour mieux piloter les actions récurrentes du projet ;
  • ajout de la prise en charge de nouveaux mots et expressions ;
  • prise en charge d’une part de vocabulaire anglais devenu courant (foot, burger, week‑end, western…) et ajout de quelques mots provenant de notre monde inondé par le numérique (Twitter, FaceBook, geek, hardware…) ;
  • correction de bogues sur les gros fichiers : gSpeech utilise une bibliothèque du nom de picoTTS pour sa synthèse vocale, cette bibliothèque n’est malheureusement plus maintenue et présente plusieurs défauts, elle ne gère notamment pas les textes de plus de 30 000 caractères, et gSpeech tente de contourner cette limite :
    1. en découpant les textes en paquets de 3 000 caractères maximum en coupant en fin de phrase, ceci afin d’éviter de perdre la qualité d’intonation sur les raccords — par exemple, en cas de fin de phrase interrogative,
    2. en parallélisant (pour que ça soit plus rapide) la conversion de ces paquets via picovox,
    3. en rassemblant les fichiers produits et en les lisant via un petit utilitaire du nom de « sox » ;
  • autre souci de picoTTS : il lit de manière brutale sans aucune intelligence. gSpeech essaie d’éviter cela avec un ensemble de dictionnaires, d’expressions rationnelles et quelques algorithmes personalisé — une liste d’exemples non exhaustive :
    1. prise en compte du caractère « œ »,
    2. lettre muette sur certains mots : « chœur » se prononce « cœur »,
    3. lettre non muette sur certains mots : « coq » se prononce « coque ».

L’ordre de priorité donné pour les nouvelles implémentations est le suivant :

Le projet ne suit pas de méthodologie précise, mais l’objectif est bien évidemment de couvrir les cas les plus communs. Le porteur du projet est ouvert à toute proposition pour aboutir a une couverture de plus en plus grande ! Pourquoi, par exemple, ne pas faire un peu d’IA, de la « gamification » ou toute autre idée cool du moment, que cela soit raisonnable à implémenter et que surtout cela porte ses fruits.

Sans doute qu’il sera nécessaire à l’avenir que le projet intègre progressivement une analyse plus fine du texte avec des règles selon la grammaire, le contexte, etc.

N’hésitez pas à partager les améliorations possibles dans les commentaires, via un ticket GitHub, par courriel, etc., si vous avez identifié un ou plusieurs mots ou expressions mal pris en charge.

Aller plus loin

  • # Prononciation

    Posté par  (site web personnel) . Évalué à 7.

    Il y a quelques journaux qui auraient bien besoin de cet utilitaire en ce moment.

  • # accès github

    Posté par  . Évalué à 2.

    Pour accéder aux sources : https://github.com/mothsart/gSpeech
    Une version 0.11 est déjà dans les tuyaux avec exclusivement des améliorations de lecture : chiffres romains, prénoms les plus courants, quelques subtilités de langage etc.

  • # paquet AUR

    Posté par  . Évalué à 2.

    Je vois depuis ce soir qu'un paquet AUR existe pour le projet et remercie par la présente son auteur. (j'ai du mal à croire au hasard)
    Je précise que gSpeech tourne (pour le cadre de Primtux) bien sur de l'archi x86_64 mais également sur de l'i386 et de l'armhf (testé sur des rpi 3 et 4) !

    • [^] # Re: paquet AUR

      Posté par  . Évalué à 1.

      Une alternative possible pour les notif vocales de ma domotique/alarme sur PI3, même si pour le moment ce bon vieil espeak, avec un peu de configuration et quelques libertés d'écriture pour obtenir une prononciation plus réaliste, fait l'affaire?

      A priori toujours pas, vu que la config reste graphique et que mon système est installé sans support graphique (headless, l'interaction se faisant via un site ouèbe embarqué et l'administration via ssh)…

      • [^] # Re: paquet AUR

        Posté par  . Évalué à 1.

        gspeech est pilotable en ligne de commande depuis la version 0.8 donc ça me parait tout à fait réalisable.

        Je ne sais pas ce que vaux espeak actuellement comparé à picovox (plus robotique même configuré quand j'avais fait un tour d'horizon il y a quelques années).
        A terme, je souhaite mettre en place une UI qui puisse passer par plusieurs moteurs mais dans l'immédiat c'est déjà améliorer l'existant pour prendre en charge les termes/expressions les plus courants.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.