Python gtts vlc播放太快,听不到前几个单词

时间:2016-02-18 15:44:23

标签: python audio vlc

在python中,使用模块gTTS和VLC-python,我创建了一个文本到语音程序,这很简单。

但是,让我烦恼的是,当我开始播放由gTTS创建的mp3文件时,它会跳过第一个或第二个字。

所以,如果我有字符串“今天天气会阴天”。它会说“今天会阴天”

即使我调整了字符串,它似乎错过了第一个字或第二个字,有时它会从字中间开始。

当我在代码之外播放音频文件时,它会正常播放,有时它会在第一个单词上出现断言但如果我倒回并让它等待一秒钟,它就会播放完美。

有没有办法在播放前加载音频片段或缓冲它,以便顺利开始?

2 个答案:

答案 0 :(得分:0)

在您的代码中,您将拥有以下内容:

self.Media = self.Instance.media_new_path('my.mp3')
self.player.set_media(self.Media)
self.player.set_xwindow(self.panel1.GetHandle())

定义将要播放的内容。

然后你会有类似的东西:

if self.player.play() == -1:
    print("Error playing file")
else:
    pass

告诉vlc开始播放文件。

在播放命令之前放置time.sleep(3)或从单独的按钮或其他东西启动播放功能 这相当于vlc --no-playlist-autostart vp.mp3命令行
即加载文件,但不要开始播放,直到我告诉你。

答案 1 :(得分:0)

我发现了另一个名为playsound的库,该库可以在没有任何剪辑的情况下播放音频文件:

from gtts import gTTS
from playsound import playsound

text = "Say something."
speech = gTTS(text = text, lang = 'en', slow = False)
mp3_file = 'text.mp3'
speech.save(mp3_file)
playsound(mp3_file)

我认为,即使VLC中没有音频剪辑,这也是比VLC更好的解决方案,因为使用vlc库要求您在计算机上安装VLC Media Player,而{{1 }}库不需要您安装其他任何东西即可工作。