gTTS прямой вывод - PullRequest
       32

gTTS прямой вывод

0 голосов
/ 04 июля 2018

Я хочу сделать ответ чат-бота в audio и тексте.

Весь пример кода, использующего gTTS, кажется, что нужно «сохранить текст в файл, а затем воспроизвести файл».

Есть ли другой способ упростить процесс, такой как автоматическое воспроизведение ответа от чат-бота с помощью gTTS?

1 Ответ

0 голосов
/ 04 июля 2018

Если вы даже кратко посмотрите на документы , вы увидите, что из трех примеров только один из них требует от вас save, а третий специально называется "Играем". Звук прямо ".

Итак, просто сделайте именно то, что в этом примере, но замените вашу строку вместо литерала '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)

Но обратите внимание, что gTTS не поставляется с MP3-плеером; вам нужна отдельная аудио библиотека для воспроизведения этого буфера mp3_fp:

>>> # Load `audio_fp` as an mp3 file in
>>> # the audio library of your choice

Как сказано в документации, таких библиотек много, и переполнение стека не является хорошим местом для получения рекомендаций для библиотек. У меня установлена ​​библиотека с именем musicplayer и пример приложения, которое можно легко адаптировать здесь, но, возможно, оно далеко не самое простое (оно сделано для более мощного высокого уровня):

>>> import musicplayer
>>> class Song:
...     def __init__(self, f):
...         self.f = f
...     def readPacket(self, size):
...         return self.f.read(size)
...     def seekRaw(self, offset, whence):
...         self.f.seek(offset, whence)
...         return f.tell()
>>> player = musicplayer.createPlayer()
>>> player.queue = [Song(mp3_fp)]
>>> player.playing = True
...