在python中,使用模块gTTS和VLC-python,我已经创建了一个文本到语音转换程序,这非常容易完成。
但让我头疼的是,当我播放由gTTS创建的mp3文件时,它会跳过第一个或两个单词。
因此,如果我有字符串“今天的天气将是多云的”。它会说出“今天是多云的”
即使我调整字符串,它似乎遗漏了第一个或两个单词,有时它从中间的单词开始。
当我在代码之外播放音频文件时,它正常播放,有时它在第一个单词时卡顿,但如果我倒带并让它等待一秒钟,它播放得很好。
有没有一种方法可以在播放之前加载或缓冲音频剪辑,以便顺利启动?
发布于 2016-02-18 16:28:04
在您的代码中,您将拥有类似以下内容的内容:
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
或
vlc --start-paused vp.mp3
命令行选项。
例如,加载文件,但不要开始播放它,直到我告诉你。
发布于 2020-07-30 04:04:02
我找到了另一个名为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媒体播放器,而这个playsound
库不需要你安装其他任何东西就可以工作。
https://stackoverflow.com/questions/35485972
复制相似问题