web-dev-qa-db-fra.com

Texte réaliste à la parole avec Python qui ne nécessite pas Internet?

J'essaie de créer un programme artificiellement intelligent (rien de vraiment grand ou spécial) et je voulais qu'il ait une voix (qui ne le ferait pas?). J'ai jeté un coup d'œil à espeak, festival, gTS et ils sont gentils et utilisables, mais pas assez réalistes pour que je puisse en être fier, si cela a du sens. Je cherchais quelque chose de plus réaliste. Comme ça

from gtts import gTTS

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

gTT fonctionne bien. J'aime cela. C'est réaliste, mais cela nécessite Internet. Le problème est que je souhaite que mon application soit aussi indépendante que possible. Et je déteste dépendre de l'accès à Internet.

Il y a-t-il des alternatives?

PS: Je suis actuellement sous Linux, votre système d’exploitation pourrait donc avoir une solution différente.

13
jumbi533

Essayez d’utiliser pyttsx3 2.5, conformément à la documentation :

gTTS fonctionne parfaitement en python3 mais nécessite une connexion internet, car il repose sur google pour obtenir les données audio.Mais Pyttsx est complètement déconnecté et fonctionne normalement, avec une prise en charge multiple de tts-engine.

Fonctionne pour Python 2 et 3

Pour l'installer:

pip install pyttsx3

Son utilisation devrait être aussi simple que:

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

Éditer 1 - Changer la voix

Pour obtenir une voix moins robotique, vous pouvez essayer de changer la voix comme suit:

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

Pour obtenir les voix disponibles

voices = engine.getProperty('voices')

Vous pouvez essayer les différentes voix disponibles comme expliqué dans cette question: Modification de la voix avec le module PYTTSX en python .

Edition 2 - Sélection du moteur de conversation

La bibliothèque prend en charge les moteurs suivants:

  • sapi5 - SAPI5 sous Windows
  • nsss - NSSpeechSynthesizer sur Mac OS X
  • espeak - eSpeak sur toutes les autres plateformes

Si espeak n’est pas très naturel, vous pouvez essayer sapi5 si vous utilisez Windows ou nsss si vous utilisez Mac OS X.

Vous pouvez spécifier le moteur dans la méthode init, par exemple:

pyttsx3.init(driverName='sapi5') 

Plus d'infos ici: http://pyttsx3.readthedocs.io/en/latest/engine.html

13
Isma