python - 使用不需要互联网的 Python 进行逼真的文本转语音?

标签 python python-2.7 text-to-speech

<分区>

我正在尝试创建一个人工智能程序(没什么大的或特别的),我希望它有声音(谁不想呢?)。我研究了 espeak、festival、gTTS,它们很好用,但不够现实,我无法真正为之自豪,如果这有意义的话。我一直在寻找更现实的东西。 像这样

from gtts import gTTS

tts = gTTS(text='what to say', lang='en')
tts.save('/path/to/file.mp3')

gTTS 工作正常。我喜欢它。这是现实的,但它需要互联网。问题是,我希望我的应用程序尽可能独立。而且我讨厌依赖互联网访问。

还有其他选择吗?

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

最佳答案

尝试使用 pyttsx3 2.5,根据 documentation :

gTTS which works perfectly in python3 but it needs internet connection to work since it relies on google to get the audio data.But Pyttsx is completely offline and works seemlesly and has multiple tts-engine support.

适用于 Python 2 和 3

安装它:

pip install pyttsx3

使用它应该很简单:

import pyttsx3;
engine = pyttsx3.init();
engine.say("I will speak this text");
engine.runAndWait() ;

编辑 1 - 改变声音

要获得不那么机械化的声音,您可以尝试按如下方式更改声音:

engine.setProperty('voice', voice.id)

获取可用的语音

voices = engine.getProperty('voices')

您可以按照以下问题中的说明尝试不同的可用声音:Changing the voice with PYTTSX module in python .

编辑 2 - 选择语音引擎

该库支持以下引擎:

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

如果 espeak 不是很自然,您可以在 Windows 上尝试 sapi5,或者在 Mac OS X 上尝试 nsss。

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

pyttsx3.init(driverName='sapi5') 

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

关于python - 使用不需要互联网的 Python 进行逼真的文本转语音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48438686/

相关文章:

带有生成器的 Python 嵌套循环不起作用(在某些情况下)?

Python/pandas - 将 DataFrame.apply 与函数返回字典一起使用

python - 函数adaptiveThreshold中的CV_8UC1(错误215)

windows - 如何在 PowerShell 7 中使用 Windows System.Speech for TTS(或者是否有替代方案)

java - View 的 contentDescription 不能与 TextToSpeech 一起正常工作

c++ - 如何获取Microsoft TTS语音的耗时?

python - 创建元组,其中第一个元素是混合大小写的单词,第二个元素是完全小写的字符串

python - Google Cloud 上的 Bokeh Flask 部署

python - 使用 Python 在一个文件中找不到另一个文件中最常见的单词

python - 在 openCV 中使用 waitkey() 时出错