Gtts Direct Output
Solution 1:
If you look even briefly at the docs, you'll see that, of the three examples, only one of them requires you to call save
, and the third one is specifically called "Playing sound directly".
So, just do exactly what's in that example, but substitute your string in place of the literal 'hello'
:
>>>from gtts import gTTS>>>from io import BytesIO>>>>>>my_variable = 'hello'# your real code gets this from the chatbot>>>>>>mp3_fp = BytesIO()>>>tts = gTTS(my_variable, 'en')>>>tts.write_to_fp(mp3_fp)
But notice that gTTS doesn't come with an MP3 player; you need a separate audio library to play that mp3_fp
buffer:
>>># Load `audio_fp` as an mp3 file in>>># the audio library of your choice
As the docs say, there are many such libraries, and Stack Overflow is not a good place to get recommendations for libraries. I happen to have a library installed, named musicplayer
, and a sample app that can be easily adapted here, but it's probably not the simplest one by a long shot (it's made for doing more powerful, low-level stuff):
>>>import musicplayer>>>classSong:...def__init__(self, f):... self.f = f...defreadPacket(self, size):...return self.f.read(size)...defseekRaw(self, offset, whence):... self.f.seek(offset, whence)...return f.tell()>>>player = musicplayer.createPlayer()>>>player.queue = [Song(mp3_fp)]>>>player.playing = True
Solution 2:
You can also use the playsound library.
>>>import playsound
>>>playsound.playsound('sound.mp3')
For more information on playsound.Visit Playsound Docs .
Solution 3:
if you want to call speak function again and again without any error.
Basically, this serves the purpose.
from gtts import gTTS
import os
import playsound
def speak(text):
tts = gTTS(text=text, lang='en')
filename = "abc.mp3"
tts.save(filename)
playsound.playsound(filename)
os.remove(filename)
Post a Comment for "Gtts Direct Output"