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

Résolu
pescadou9999 Messages postés 24 Statut Membre -  
mamiemando Messages postés 33228 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

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
  2. pescadou9999 Messages postés 24 Statut Membre
     
    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
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Merci pour le retour. Juste par curiosité, as-tu testé toutes les voix française ?
    0