web-dev-qa-db-fra.com

pyttsx: pas de module nommé 'moteur'

J'essaie d'installer le paquet TTS en utilisant this . Tout allait bien jusqu'à ce que j'essaye d'exécuter la commande suivante:

import pyttsx

J'ai eu cette erreur:

File "/usr/local/lib/python3.4/dist-packages/pyttsx/__init__.py", line 18, in module <br>
    from engine import Engine<br>
ImportError: No module named 'engine'

Toute aide serait appréciée. Je vous remercie!

20

Combiner les conseils de Jacob Tsui et Jokhongir Mamarasulov a fonctionné pour moi. Résumer:

Dans site_packages/pyttsx/init.py, remplacez "from engine import Engine" par

from .engine import Engine

Ensuite, dans site_packages/pyttsx/engine.py,

  1. Modifier import driver en

    from . import driver
    
  2. Modifier except Exception, e en

    except Exception as e
    

Et enfin, dans site_packages/pyttsx/driver.py, modifiez except Exception, e en 

except Exception as e

Voir les réponses des auteurs susmentionnés pour la raison de ces changements.

17
csheehey

Les gars il y a un paquet mis à jour compatible avec Python3:

pyttsx3

Fonctionne hors ligne sans retard dans le son produit.

Installation:

pip install pyttsx3

Visitez https://pyttsx3.readthedocs.io pour la documentation complète de l’utilisation . Merci!

17
Natesh bhat

Pour Python3, installez la dernière version via pip3, installez pyttsx3 et appelez import pyttsx3

7
Wiphop

Modifiez site_packages/pyttsx / init . Py "depuis le moteur d'importation du moteur" vers 

from .engine import Engine

Modifiez site_packages/pyttsx/engine.py "pilote d'importation" en

from . import driver

Motif: L'instruction d'importation "from engine import engine" indique à python d'importer le module Engine à partir du moteur de répertoire. Dans notre cas, le moteur n'est pas un répertoire, c'est un fichier python, engine.py. Nous devons donc indiquer à python d’importer ce module de moteur à partir du répertoire courant (".").

6
Jacob CUI

J'ai trouvé la solution. Library a été créé en langage python2 et il n’ya pas beaucoup de différences entre ces 2 versions, mais exclusivement dans ce cas.

Accédez à votre dossier DP et modifiez-le dans engine.py "sauf Exception as e" au lieu de "sauf Exception, e", ligne 67. Faites de même dans drive.py , ligne 105.

Parce que les fichiers sont sécurisés, essayez d'exécuter, e. g.

Sudo nano engine.py (ou drive.py)

Je suppose que j'ai aidé tout le monde avec ce genre de problème. :)

5

Je viens d'avoir le même problème, essayez d'utiliser pyttsx3 au lieu de pyttsx Installez d'abord pyttsx3

pip install pyttsx3

et changer le

import pyttsx

for

import pyttsx3

Après cela, vous devez modifier engine import (si vous l’utilisez dans votre fichier .py principal). Utilisez engineio à la place. Installez-le

pip install python-engineio

puis changez import engine pour import engineio et changez vos variables.

Voici un exemple

import pyttsx3
import engineio

engineio = pyttsx3.init()
voices = engineio.getProperty('voices')
engineio.setProperty('rate', 130)    # Aquí puedes seleccionar la velocidad de la voz
engineio.setProperty('voice',voices[0].id)

def speak(text):
    engineio.say(text)
    engineio.runAndWait()

speak("What do you want me to say?")
while(1):
    phrase = input("--> ")
    if (phrase == "exit"):
        exit(0)
    speak(phrase)
    print(voices)

J'espère que cela aide quelqu'un

J'ai utilisé ce code après 

pip install pywin32 pypiwin32 pyttsx3

et cela a fonctionné parfaitement pour moi

import os
import sys
import pyttsx3

engine = pyttsx3.init()
engine.say('hello world ')
engine.runAndWait()
1
Aju George