INCAYA

Ubuntu - installer la synthèse vocale "svox pico" sur le lecteur d'écran Orca

Comment l'amélioration de la synthèse vocale par défaut d'Ubuntu peut aider les développeurs à mieux gérer l’accessibilité des projets web.

Ayant à réaliser la refonte du site web d’un client, nous avons souhaité travailler sur l’amélioration de son accessibilité. Pour l’accessibilité de l’interface aux personnes malvoyantes/non-voyantes, nous avons testé l’ensemble des pages à l’aide du lecteur d’écran présent par défaut sur Ubuntu, Orca (accessible via les paramètres : Paramètres > Accessibilité, ou avec le raccourci SUPER + Alt + S).

Dès les premiers tests, nous nous sommes rendu compte que, bien que complet, cet outil possède une synthèse vocale de qualité moyenne (voix très robotisée à la limite du compréhensible). Vous pouvez en avoir un aperçu avec l’extrait ci-dessous :

Lecture de la page d'accueil de Wikipedia par Orca et synthèse vocale Espeak

Après quelques recherches, nous avons trouvé une synthèse vocale permettant d’améliorer la qualité de la voix : svox pico.

La documentation officielle d’Ubuntu présente Svox Pico sur la page dédiée à Orca, et propose une explication succincte pour son installation. Malheureusement, celle-ci manque de clarté. En effet, pour que le lecteur d’écran puisse utiliser Orca, il faut mettre en place un fichier de configuration qui n’est pas présent de base, et pas présenté dans la documentation d’Ubuntu.

Nous allons vous présenter les différentes étapes pour mettre en place Pico :

  • installation des différents paquets
  • création d’un fichier de configuration pour pico
  • test de notre configuration

Après avoir testé sur plusieurs machines, nous avons remarqué que si des réglages de son d’Ubuntu (sur le pilote ou le serveur de son) avait été modifiés, cette configuration était susceptible de ne pas fonctionner.

Installation de base

Comme le précise la documentation Ubuntu sur Orca, nous allons tout d’abord installer les paquets libttspico0 et libttspico-utils :

sudo apt install libttspico0 && apt install libttspico-utils

Afin de s’assurer de la bonne installation des paquets, nous lançons cette commande : pico2wave --help. Cela doit nous donner la liste des différentes commandes et configurations disponibles.

Mise en place du fichier de configuration Pico

Une fois les librairies installées et le fonctionnement de Pico validé par la commande précédente, nous créons un fichier de configuration pico-generic.conf dans le répertoire suivant : /etc/speech-dispatcher/modules (création à faire en sudo).

Nous collons ensuite la configuration suivante dans le fichier (source) :

# pico output module is based on the generic plugin for Speech
# Dispatcher. It means there is no code written explicitly for
# this plugin, all the specifics are handled in this configuration
# and we call a simple command line client to perform the actual
# synthesis. Use this config file with the sd_generic output module.
#
# IMPORTANT: The audio output method relies on an audio playback
# utility (play, aplay, paplay for OSS, ALSA or Pulse)
# being installed. If this is not the case, consider installing it
# or replace the $PLAY_COMMAND string in the GenericExecuteString below
# with play, paplay or similar.
#
# GenericExecuteSynth is the shell command that should be
# executed in order to say some message. This command must
# stop saying the message on SIGKILL, otherwise it's useless.
# You can use the variables $LANGUAGE, $VOICE, $PITCH and $RATE
# which will be substituted for the appropriate value (you
# can modify this value, see other parameters).
# The command can be split into more lines, if necessary, using '\'.

GenericExecuteSynth \

"pico2wave -w $TMPDIR/pico.wav -l $VOICE \'$DATA\' && $PLAY_COMMAND $TMPDIR/pico.wav"

# The following three items control punctuation levels None, Some, and All.
# Each of these values will be substituted into the $PUNCT variable depending
# on the value passed to speech dispatcher from applications.
# Note that if an empty string is specified, then $PUNCT will be blank
# which is a default situation for espeak.

GenericPunctNone " "
GenericPunctSome "--punct=\"()[]{};:\""
GenericPunctAll "--punct"

# GenericStripPunctChars is a list (enclosed in doublequotes) of
# all the characters that should be replaced by whitespaces in
# order not to be badly handled by the output module or misinterpreted
# by shell.
# GenericStripPunctChars ""

# If the language you need to pass in $LANG is different
# from the standard ISO language code, you can specify
# which string to use instead. If you wish to use
# other than ISO charset for the specified language,
# you can add it's name (as accepted by iconv) as a
# third parameter in doublequotes.

GenericLanguage "en" "en" "utf-8"
GenericLanguage "de" "de" "utf-8"
GenericLanguage "es" "es" "utf-8"
GenericLanguage "fr" "fr" "utf-8"
GenericLanguage "it" "it" "utf-8"

# AddVoice specifies which $VOICE string should be assigned to
# each language and symbolic voice name. All the voices you want
# to use must be specified here. This list will likely not be
# up-to-date, please check pico documentation and add the voices
# you want to use.

AddVoice "en" "FEMALE1" "en-US"
AddVoice "en" "FEMALE2" "en-GB"
AddVoice "de" "FEMALE1" "de-DE"
AddVoice "es" "FEMALE1" "es-ES"
AddVoice "fr" "FEMALE1" "fr-FR"
AddVoice "it" "FEMALE1" "it-IT"

# Yes, it's wrong, but this way you at least get something even when configured
# (by default) to use a male voice

AddVoice "en" "MALE1" "en-US"
AddVoice "en" "MALE2" "en-GB"
AddVoice "de" "MALE1" "de-DE"
AddVoice "es" "MALE1" "es-ES"
AddVoice "fr" "MALE1" "fr-FR"
AddVoice "it" "MALE1" "it-IT"

# Debug turns debugging on or off
# See speechd.conf for information where debugging information is stored

Debug 0

Il ne reste plus qu’à redémarrer notre machine (le redémarrage est nécessaire afin de pouvoir prendre en charge les modifications de configuration).

Test du lecteur d’écran avec Pico

Une fois notre machine redémarrée, nous lançons le lecteur d’écran :

  • “paramètre > accessibilité > lecteur d’écran”
  • ou le raccourci clavier SUPER (touche logo) + Alt + S

La voix Pico devrait être mise en place par défaut. Si non, il est possible de modifier les réglages du lecteur d’écran en utilisant le raccourci suivant :

  • VerrMaj + barre espace pour une configuration clavier portable
  • Inser + Ctrl + barre espace pour une configuration clavier de bureau

Puis aller dans l’onglet “voix”, et choisir “pico-generic”.

Nous avons maintenant une synthèse vocale bien plus compréhensible que celle d’origine ! Voici ci-dessous un extrait de la page Wikipedia avec cette nouvelle synthèse vocale :

Lecture de la page d'accueil de Wikipedia par Orca et synthèse vocale Pico

Vous pouvez retrouver les différents raccourcis clavier associés au lecteur d’écran sur la documentation d’Orca.

Points négatifs de Pico

Bien que d’une très bonne qualité au niveau de la synthèse vocale, Pico possède 2 inconvénients :

  • il n’y a qu’une seule voix disponible
  • et inconvénient majeur : les réglages disponibles dans la fenêtre de paramètres Orca n’agissent pas sur la synthèse vocale Pico, notamment la vitesse de lecture.

Aller plus loin

Synthèse vocale sur des fichiers

Pico étant une synthèse vocale, il est possible de l’utiliser pour lire des textes. Pour ce faire, il faut utiliser la commande déjà vue précédemment pico2wave. Celle-ci va prendre un texte en entrée et en créer un fichier vocal en format .wav.

Il suffit d’utiliser la commande ainsi :

pico2wave -l fr-FR -w mon_fichier.wav 'ici j'écris mon texte.'

La commande suivante permet de convertir un fichier texte en fichier audio :

pico2wave -l fr-FR -w mon_fichier.wav < mon-fichier-texte.txt

Il est possible de retrouver ces explications sur la page svoxpico de la documentation Ubuntu.

Interface graphique

Il est aussi possible d’installer gspeech afin d’avoir une interface graphique, via un PPA Ubuntu :

sudo add-apt-repository ppa:jerem-ferry/tts
sudo apt update
sudo apt install gspeech

Pour le lancer, faire la commande : gspeech.

Cela ajoutera un menu dans la barre d’état, permettant de lire le contenu du presse-papier ou le contenu sélectionné, et d’accéder à différents réglages.

Extension LibreOffice

Enfin, il est aussi possible d’avoir une extension pour LibreOffice, comme expliqué dans la documentation Ubuntu : doc Ubuntu.

Conclusion

La synthèse vocale Svox Pico permet d’améliorer notre expérience lors de l’utilisation du lecteur d’écran sur Ubuntu. Cela nous permet, en tant que concepteurs de services numériques, d’avoir une meilleure prise en compte de l’impact de nos décisions sur l’accessibilité dans nos projets.

Mais bien que la qualité de la voix soit vraiment un plus, le manque d’intégration des réglages de base comme la vitesse de lecture font de cette synthèse vocale un outil difficilement exploitable en dehors de phases de test.