Реалистичный текст в речь с Python, который не требует интернет?

Я пытаюсь создать искусственно интеллектуальную программу (ничего особенного или особого), и я хотел, чтобы у нее был голос (кто не будет?). Я посмотрел на espeak, festival, gTTS, и они хороши и полезны, но не вполне реалистичны для меня, чтобы действительно гордиться, если это имеет смысл. Я искал что-то более реалистичное. Как это

from gtts import gTTS

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

gTTS работает нормально. Я люблю это. Это реалистично, но для этого требуется интернет. Проблема в том, что я хочу, чтобы мое приложение было как можно более независимым. И я ненавижу в зависимости от доступа в Интернет.

Есть ли другие варианты?

PS: В настоящее время я использую Linux, поэтому у вашей ОС может быть другое решение.

Ответ 1

Попробуйте использовать pyttsx3 2.5, согласно документации:

gTTS, который прекрасно работает в python3, но для работы ему требуется подключение к Интернету, так как он использует google для получения аудиоданных. Но Pyttsx полностью автономен и работает, по-видимому, и поддерживает несколько движков tts.

Работает на 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')

Вы можете попробовать разные доступные голоса, как описано в этом вопросе: Изменение голоса с помощью модуля PYTTSX в python.

Редактировать 2 - Выбор речевого двигателя

Библиотека поддерживает следующие движки:

  • sapi5 - SAPI5 в Windows
  • nsss - NSSpeechSynthesizer в Mac OS X
  • espeak - eSpeak на любой другой платформе

Если espeak не очень естественный, вы можете попробовать sapi5, если вы используете Windows, или nsss, если вы используете Mac OS X.

Вы можете указать движок в методе init, например:

pyttsx3.init(driverName='sapi5') 

Более подробная информация здесь: http://pyttsx3.readthedocs.io/en/latest/engine.html