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

Résolu
pescadou9999 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   -
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
A voir également:

3 réponses

mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
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
pescadou9999 Messages postés 24 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Grand merçi pour ces renseignements et travail de recherche
J'avais installé certains
j'ai essayé le espeak.set_voice("fr+f2") qui donne une voix féminine affreuse
Pour le reste c'est trop compliqué pour moi
Je vais revenir à mon brave Google TTS (en connection) qui me donnait une belle vois genre voix des smartphones en quelques lignes de code
Ce sera de toutes façons rare d'avoir ce texte to speech hors connection
Encore merci
Pierre

# -*- coding: utf-8 -*-
from espeak import espeak
import pyttsx3
#texte = "bonjour comment allez vous ?"
texte = "Lecture des listes de paquets... Fait Construction de l'arbre"
tts = pyttsx3.init()
espeak.set_voice("fr+f2")
tts.say(texte)
tts.runAndWait()
0
mamiemando Messages postés 33769 Date d'inscription   Statut Modérateur Dernière intervention   7 878
 
Merci pour le retour. Juste par curiosité, as-tu testé toutes les voix française ?
0