3

窗户 10-64 位

我正在尝试使用一些文本转语音工具从 .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'")

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

4

3 回答 3

3

对于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()
于 2017-06-26T04:00:48.167 回答
2

我正在使用 Windows 10 和 Python 2.7。

对于 pyttsx:

下面的代码对我来说工作正常。我确实收到ImportError: No module named win32api了错误,我必须从这里安装 win32api

之后我可以播放“我的声音”。尽管语音的质量和保真度非常低。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)

希望这可以帮助。

于 2016-04-05T16:36:17.280 回答
0

我在 Ubuntu 上使用 python2.7。

尝试在引擎模块中将“from engine import Engine”替换为“from .engine import Engine”。它对我有用!

于 2017-01-07T10:43:02.930 回答