使用Python的现实文本到语音不需要互联网?

jum*_*533 15 python text-to-speech python-2.7

我正在尝试创建一个人工智能程序(没什么大不了或特别的)我希望它有一个声音(谁不会?).我已经研究过espeak,festival,gTTS,它们很好用,而且不够现实,让我真的很自豪,如果这样做有意义的话.我一直在寻找更现实的东西.像这样

from gtts import gTTS

tts = gTTS(text='what to say', lang='en')
tts.save('/path/to/file.mp3')
Run Code Online (Sandbox Code Playgroud)

gTTS工作正常.我喜欢它.这是现实的,但它需要互联网..问题是,我希望我的应用程序尽可能独立.我恨这取决于互联网接入.

还有其他选择吗?

PS:我目前正在运行Linux,因此您的操作系统可能有不同的解决方案.

Ism*_*sma 13

根据文档,尝试使用pyttsx3 2.5 :

gTTS在python3中完美运行,但它需要互联网连接才能工作,因为它依靠谷歌来获取音频数据.但是Pyttsx完全脱机并且工作似乎很有并且有多个tts引擎支持.

适用于Python 2和3

要安装它:

pip install pyttsx3
Run Code Online (Sandbox Code Playgroud)

使用它应该很简单:

import pyttsx3;
engine = pyttsx3.init();
engine.say("I will speak this text");
engine.runAndWait() ;
Run Code Online (Sandbox Code Playgroud)

编辑1 - 更改语音

要获得较少的机器人声音,您可以尝试更改声音,如下所示:

engine.setProperty('voice', voice.id)
Run Code Online (Sandbox Code Playgroud)

获得可用的声音

voices = engine.getProperty('voices')
Run Code Online (Sandbox Code Playgroud)

您可以尝试不同的可用声音,如此问题中所述:使用python中的PYTTSX模块更改声音.

编辑2 - 选择语音引擎

该库支持以下引擎:

  • sapi5 - Windows上的SAPI5
  • nsss - Mac OS X上的NSSpeechSynthesizer
  • espeak - eSpeak在其他平台上

如果espeak不是很自然,你可以试试sapi5,如果你在Windows或nsss,如果你在Mac OS X上.

您可以在init方法中指定引擎,例如:

pyttsx3.init(driverName='sapi5') 
Run Code Online (Sandbox Code Playgroud)

更多信息:http://pyttsx3.readthedocs.io/en/latest/engine.html

  • 如果我运行的是 Windows,sapi5 引擎就可以工作,但不幸的是我运行的是 Linux。 (2认同)