首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gTTS直接输出

gTTS直接输出
EN

Stack Overflow用户
提问于 2018-07-03 23:33:35
回答 5查看 17.1K关注 0票数 7

我想在、音频、和文本中做出一个聊天机器人的响应。

使用gTTS的所有示例代码似乎都需要“将文本保存到文件中,然后播放该文件”。

还有其他方法可以简化这个过程,例如,使用gTTS自动播放“chatbot的响应”吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-07-04 02:20:31

如果您简单地查看一下医生们,您会发现,在这三个示例中,只有一个需要调用save,第三个示例具体称为“直接播放声音”。

因此,只需完全按照该示例中的内容执行,但是将字符串替换为文字'hello'

代码语言:javascript
复制
>>> 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缓冲区:

代码语言:javascript
复制
>>> # Load `audio_fp` as an mp3 file in
>>> # the audio library of your choice

正如docs说的,有很多这样的库,Stack溢出并不是获得库建议的好地方。我碰巧安装了一个名为musicplayer的库和一个示例应用程序,可以在这里很容易地适应,但它可能不是最简单的(它是为做更强大的,低级的东西而设计的):

代码语言:javascript
复制
>>> 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
票数 5
EN

Stack Overflow用户

发布于 2021-07-20 15:20:07

如果您想一次又一次地调用函数,请不要出错。

基本上,这是为了达到目的。

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2022-09-14 13:24:39

我找到的解决方案之一是使用pygame.mixer。在这种情况下,导入时间只用于确保程序结束前完成音频。

代码语言:javascript
复制
from gtts import gTTS
from io import BytesIO
from pygame import mixer
import time

def speak():
    mp3_fp = BytesIO()
    tts = gTTS('hello, Welcome to Python Text-to-Speech!', lang='en')
    tts.write_to_fp(mp3_fp)
    return mp3_fp

mixer.init()
sound = speak()
sound.seek(0)
mixer.music.load(sound, "mp3")
mixer.music.play()
time.sleep(5)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51164040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档