¿Texto realista a voz con Python que no requiere internet?

Estoy tratando de crear un progtwig artificialmente inteligente (nada realmente grande o especial) y quería que tuviera una voz (¿a quién no?). He buscado en espeak, festival, gTTS y son agradables y utilizables, pero no son lo suficientemente realistas como para que me sienta orgulloso, si eso tiene sentido. He estado buscando algo más realista. Me gusta esto

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

gTTS funciona bien. Me encanta. Es realista, pero requiere Internet. El problema es que quiero que mi aplicación sea lo más independiente posible. Y odio dependiendo del acceso a internet.

¿Hay más opciones?

PD: Actualmente estoy ejecutando Linux, por lo que su sistema operativo podría tener una solución diferente.

Trate de usar pyttsx3 2.5, de acuerdo con la documentación :

gTTS que funciona perfectamente en python3 pero necesita conexión a internet para funcionar, ya que depende de google para obtener los datos de audio. Pero Pyttsx está completamente desconectado y funciona de forma sencilla y tiene soporte para múltiples motores de tts.

Obras para Python 2 y 3.

Para instalarlo:

 pip install pyttsx3 

Su uso debería ser tan simple como:

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

Edit 1 – Cambiando la voz

Para obtener una voz menos robótica, puede intentar cambiar la voz de la siguiente manera:

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

Para obtener las voces disponibles.

 voices = engine.getProperty('voices') 

Puede probar las diferentes voces disponibles como se explica en esta pregunta: Cambiar la voz con el módulo PYTTSX en python .

Edición 2 – Selección de motor de voz

La biblioteca soporta los siguientes motores:

  • sapi5 – SAPI5 en Windows
  • nsss – NSSpeechSynthesizer en Mac OS X
  • espeak – eSpeak en cualquier otra plataforma

Si espeak no es muy natural, puede probar sapi5 si está en Windows o nsss si está en Mac OS X.

Puede especificar el motor en el método init, por ejemplo:

 pyttsx3.init(driverName='sapi5') 

Más información aquí: http://pyttsx3.readthedocs.io/en/latest/engine.html