Pyttsx3 et Xubuntu ...(texte to speech et linux)

Résolu/Fermé
pescadou9999 Messages postés 24 Date d'inscription mardi 20 juin 2017 Statut Membre Dernière intervention 25 mars 2022 - Modifié le 24 mars 2022 à 15:54
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 28 mars 2022 à 02:44
Bonjour,


Je me suis amusé à faire parler mon PC avec un programme écrit en python. Pas facile d'avoir une belle voix de femme caressante, française plutôt que cette horrible voix robotique.

J'ai donc suivi et recopié un tutoriel de YT chaine Tres Facile qui faisait en quelques lignes pour faire fonctionner le script. Cette chaîne montre le fonctionnement sous Windows je crois. Recopiant textuellement le code, je n'ai pas moyen d'avoir autre chose que ce robotico façon film SF des années 60.

Après avoir beaucoup cherché, je vois qu'il y a sous linux le driver "espeak". Il semble possible de changer la voix avec un
setProperty(..)
? Comment paramétrer en utilisant
espeak-ng
(voir lien), qui semble être un nouvelle version d'
espeak
.

J'ai installé
espeak-ng
comme suit :

sudo apt install espeak-ng


et écrit le code python suivant :

# -*- coding: utf-8 -*-
#import espeak ng
import pyttsx3
import os
texte = "bonjour comment allez vous ?"
tts = pyttsx3.init()
tts.setProperty("voice",[26])
tts.say(texte)
tts.runAndWait()


...ok mais même en terminal il prononce avec une voix robotique.

Je galère, je ne trouve pas de réponses ou d'exemples. Pourriez-vous examiner et me donner une piste si possible ?

Merci

3 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 24 mars 2022 à 16:16
Bonjour,

espeak

À ce stade ton code n'importe pas
espeak
donc le fait de l'avoir installé ne change rien. Je vois qu'il existe un paquet
python3-espeak
, à mon avis c'est lui que tu devrais installer et essayer d'apprendre à utiliser. Ce lien montre quelques exemples minimaux.

sudo apt update
sudo apt install python3-espeak


Cette discussion montre comment changer la voix en ligne de commande.

D'après son code source, la classe Espeak expose une méthode
set_voice
qui permettrait de la changer la voix.

La nature des paramètres à passer à cette méthode n'est pas très claire, mais on doit pouvoir s'en sortir à partir d'exemples, voir ce lien.

J'aime bien cet exemple car il est assez court (à ceci prêt qu'il donne le nom du paquet pour python2 au lieu de python3) :

# -*- coding: utf-8 -*-
from espeak import espeak

# Install espeak in Ubuntu with
# sudo apt-get instll espeak
# sudo apt-get install python-espeak

# Find the version installed by checking the lib file
# ls /usr/lib/x86_64-linux-gnu/libespeak.so.*
# Or by checking the apt package info
# apt-cache show espeak

# download the full Russian language pack from
# http://espeak.sourceforge.net/data/
# and unzip it and replace the existing russian pack in
# /usr/share/doc/espeak-data

espeak.set_voice("ru")

# Python2 files must be marked # -*- coding: utf-8 -*-
espeak.synth("где папа")
while espeak.is_playing:
 pass


Pour voir la liste des langues supportées, il semble qu'il faille lancer la commande suivante dans un terminal
espeak --voices
(voir cette page).

espeak-ng

Si tu veux utiliser
espeak-ng
il faudra l'installer via
pip3
car il n'est pas dans les paquets APT :

sudo apt install python3-pip
sudo pip3 install py-espeak-ng


Il n'est pas clair que cette nouvelle déclinaison permet d'avoir plus de latitude en terme de voix.

Bonne chance
0