Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Text-to-speech (TTS) module that works under Python 3

I have tried PyTTS (deprecated) and PyTTSx (the most recommended) and two Google TTS solutions (gTTS and another one by some guy named Hung Truong) but none of them worked under Python 3.4. It seems they haven't been ported to 3.x.

I searched here on StackOverflow and Google, but all the proposed TTS solutions don't work under Python 3. I'm on Windows 7.

like image 422
Macondo Avatar asked Jun 03 '15 06:06

Macondo


3 Answers

A user on Reddit found a solution.

Turns out that gTTS works under Python 3.x, it was me that was importing the module wrong.

I was using:

import gtts
blabla = ("Spoken text")
tts = gTTS(text=blabla, lang='en')
tts.save("C:/test.mp3")

Resulting in the following error:

NameError: name 'gTTS' is not defined

When the correct way is:

from gtts import gTTS
blabla = ("Spoken text")
tts = gTTS(text=blabla, lang='en')
tts.save("C:/test.mp3")
like image 135
Macondo Avatar answered Oct 21 '22 20:10

Macondo


The best solution for that is :

pyttsx3


Pyttsx3 is an offline cross-platform Text-to-Speech library which is compatible with both Python 3 and Python 2 and supports multiple TTS engines.

I have found it very useful and there is no delay in sound production unlike gTTS which needs internet connection to work and also has some delay.

To install :

Here is a sample code :


    import pyttsx3
    engine = pyttsx3.init()
    engine.say("Hello this is me talking")
    engine.setProperty('rate',120)  #120 words per minute
    engine.setProperty('volume',0.9) 
    engine.runAndWait()
    

like image 23
Natesh bhat Avatar answered Oct 21 '22 20:10

Natesh bhat


I just installed gtts 1.0.7 that was uploaded on 2015-10-07

The following code works for me in Python 3.5:

import subprocess
from gtts import gTTS

audio_file = "hello.mp3"
tts = gTTS(text="Hello World!", lang="en")
tts.save(audio_file)
return_code = subprocess.call(["afplay", audio_file])

I'm on a Mac using in the inbuilt "afply" to play the mp3 but there are other ways e.g. Playing mp3 song on python

like image 38
Alex Avatar answered Oct 21 '22 19:10

Alex