pyttsx和gTTS模块错误

时间:2016-03-31 03:23:05

标签: python-3.x text-to-speech google-text-to-speech espeak pyttsx

windows 10-64bit

我正在尝试使用一些文字转语音工具从.txt文档中读取文本,如下所示:

所以使用pyttsx:

import pyttsx
engine = pyttsx.init()
engine.say('my voice')
engine.runAndWait() 

我收到了这个错误:

Traceback (most recent call last):
  File "...", line 1, in <module>
    import pyttsx
  File "/.../pyttsx/__init__.py", line 18, in <module>
    from engine import Engine
ImportError: No module named 'engine'

现在gTTS,可用gtts_token,那么如何使用呢?因为这种方式模块无法识别:

import gtts
blabla = ("my voice")
tts = gtts.gTTS(text=blabla, lang='en')
tts.save("C:/rec.mp3")

或:

from gtts import gTTS
blabla = ("my voice")
tts = gTTS(text=blabla, lang='en')
tts.save("C:/rec.mp3")

错误:

 import gtts
ImportError: No module named 'gtts'

我也想尝试使用espeak但不确定如何安装它,是否可以使用pip install或者我必须以其他方式安装它来尝试它:

import subprocess
text = '"my voice"'
subprocess.call('espeak '+text, shell=True)

或:

import os
os.system("espeak 'my voice'")

所以我试图找到一些解决方案,但我尝试的一切都不能在这里工作......

3 个答案:

答案 0 :(得分:2)

python3 使用

pyttsx3

它是一个兼容python3和python2的新库。与gTTS不同,它不需要互联网连接,并且所产生的声音没有延迟。

安装:

pip install pyttsx3

用法:

import pyttsx3
engine = pyttsx3.init()
engine.say("Hi this is working ");
engine.setProperty('volume',0.9)
engine.runAndWait()

答案 1 :(得分:1)

我使用的是Windows 10和Python 2.7。

对于pyttsx:

下面的代码对我来说很好。我确实遇到ImportError: No module named win32api错误,我必须从here

安装win32api 之后,我可以玩#34;我的声音&#34;。虽然说话声音的质量和保真度非常低。 gtts在这方面要好得多。

import pyttsx
engine = pyttsx.init()
engine.say('my voice')
engine.runAndWait() 

对于你得到的错误,你能查看你的python文件夹,看看是否存在engine.py文件?

例如就我而言,我在以下位置安装了pyttsx个模块 C:\Python27\Lib\site-packages\pyttsx这是一个文件列表,

 Name
 ----
 drivers
 driver.py
 driver.pyc
 engine.py
 engine.pyc
 voice.py
 voice.pyc
 __init__.py
 __init__.pyc

由于engine的导入失败,我想知道您是否在正确的文件夹中存在engine.py个文件,或者是否存在。

对于gtts:

我尝试用winsound播放声音,但它不起作用。使用pydub我可以播放audio file。但是,由于您的要求不是使用文件,这可能是一个没有实际意义的点。

import gtts
import winsound
from pydub import AudioSegment
from pydub.playback import play

blabla = ("my voice")
tts = gtts.gTTS(text=blabla, lang='en')
tts.save("rec.mp3")
print "Playing sound .."
#winsound.PlaySound("rec.wav", winsound.SND_FILENAME)
song = AudioSegment.from_mp3("rec.mp3")
play(song)

希望这会有所帮助。

答案 2 :(得分:0)

我在Ubuntu上使用python2.7。

尝试从引擎导入引擎&#34;替换#34;使用&#34;来自.engine import Engine&#34;在引擎模块中。它对我有用!