pyttsx:未找到“engine”模块

27

我正尝试使用这个来安装TTS软件包。一切都很顺利,直到我尝试执行以下命令:

import pyttsx

我收到了这个错误:

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'

非常感谢您的帮助!


9个回答

35

大家好,有一个更新的包与Python3兼容:

pyttsx3

离线工作时,所产生的声音没有延迟。

安装:

pip install pyttsx3

请访问https://pyttsx3.readthedocs.io获取完整的使用文档。 谢谢!


19

结合Jacob TsuiJokhongir Mamarasulov的建议对我很有效。总结如下:

site_packages/pyttsx/init.py 中,将 "from engine import Engine" 修改为

from .engine import Engine

那么,在 site_packages/pyttsx/engine.py 文件中,

  1. import driver 修改为

    from . import driver
    
  2. except Exception, e 修改为

    except Exception as e
    

最后,在 site_packages/pyttsx/driver.py 中将 except Exception, e 修改为

except Exception as e

请查看上述作者对这些更改背后的原理的回应。


这个项目有一个针对Python3的分支,可以在这里找到:https://dev59.com/llgR5IYBdhLWcg3wH6Zr。该项目似乎与上面所做的更改并行。然而,在Mac上存在一个错误https://dev59.com/DnI-5IYBdhLWcg3w6dG2,在修复了这个错误之后又出现了一个错误https://stackoverflow.com/questions/41637233/badprototypeerror-objective-c-expects-1-arguments-python-argument-has-2-argume,因此我暂时放弃在Mac上实现pyttsx。 - Screenack
每当您在另一台电脑上安装时,都会出现问题。用户必须修改init.py文件。但是pip install pyttsx3就足够了。 - shiva

8

我之前也遇到过同样的问题,尝试使用pyttsx3替代pyttsx。 首先安装pyttsx3

pip install pyttsx3

并且改变

的内容

import pyttsx

对于

import pyttsx3

接下来您需要更改引擎导入(如果您在主要的.py文件中使用它)。请使用engineio代替。安装它。

pip install python-engineio

然后将 import engine 改为 import engineio 并更改你的变量。

这里有一个例子:

import pyttsx3
# import engineio #engineio module is not needed.

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)

希望这能帮到某个人。

7

对于Python3,请通过pip3 install pyttsx3安装最新版本,并调用import pyttsx3


5
我找到了解决方案。该库是用Python2语言创建的,这两个版本之间没有很大的差异,但在这种情况下却有独特的问题。
请前往您的DP文件夹,并在engine.py的第67行和drive.py的第105行中将“except Exception, e”更改为“except Exception as e”。
由于文件受到保护,请尝试执行以下操作:
sudo nano engine.py (或 drive.py)
我想我已经帮助解决了每个人的这种问题。 :)

这不是解决方案,我按照你说的做了,问题仍然存在。 - GLHF
我也是,这个方法并没有解决问题。@GLHF你怎么做的?如何解决这个问题? - R.K
GLHF - 我也有同样的问题?你做了什么? - 0004

5

将site_packages/pyttsx/init.py中的"from engine import Engine"修改为

from .engine import Engine

将 site_packages/pyttsx/engine.py 中的 "import driver" 修改为
from . import driver

原因:导入语句“from engine import Engine”告诉Python从engine目录中导入Engine模块。在我们的情况下,engine不是一个目录,而是一个Python文件,即engine.py。因此,我们需要告诉Python从当前目录(“.”)导入该engine模块。


2

我也遇到了同样的问题。 首先尝试执行以下命令:

pip install pyttsx3

然后不要使用

import pyttsx

使用这个

import pyttsx3

它将会工作。


2
我在这段代码之后使用了以下代码
pip install pywin32 pypiwin32 pyttsx3

我觉得它对我来说完美地运作了。

import os
import sys
import pyttsx3

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

0

pyttsx:未找到名为 'engine' 的模块

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'

如果您遇到上述错误,请尝试安装pyttsx3而不是pyttsx。在安装之前,请检查您的Python版本,然后下载与您的Python版本兼容的版本。

请参阅this link以获取先前的pyttsx3版本

原因:

我们遇到上述错误的原因是由于pyttsx3版本不受您的Python版本支持。即使您遇到错误,也可以使用FOR pyttsx进行修改。

修改位于C:\ Users \ YOUR USER \ AppData \ Local \ Programs \ Python \ Python38-32 \ Lib \ site_packages \ pyttsx \ init.py中的init.py文件。

更改

from engine import Engine

from .engine import Engine

pyttsx

修改位于C:\Users\YOUR USER\AppData\Local\Programs\Python\Python38-32\Lib\site_packages\pyttsx\engine.py的engine.py文件。

更改

import driver

from . import driver

这是上述错误的两个主要解决方案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接