【发布时间】:2016-11-06 17:24:44
【问题描述】:
我正在编写一个程序,它读取一个字符串,然后将其转换为语音并以 mp3 形式播放。 但程序不播放音乐。我检查并发现 mp3 文件已创建并且可以使用标准 mp3 播放器播放,但不能使用脚本播放。 我正在使用 gtts 模块(用于将文本转换为语音)和 vlc 模块(用于播放 mp3) 代码是这样的。请注意,'m'是我要转换为声音的文本。
tts = gTTS(text=m, lang='en')
tts.save("greeting.mp3")
p = vlc.MediaPlayer("greeting.mp3")
p.play()
我进一步发现,当我在播放命令后提供无限循环时,会播放 mp3。像这样
tts = gTTS(text=m, lang='en')
tts.save("greeting.mp3")
p = vlc.MediaPlayer("greeting.mp3")
p.play()
while True:
pass
有什么办法可以避免无限循环。我已经将所有需要的模块导入到项目中。
【问题讨论】:
-
是
p.play()程序中的最后一条语句吗?如果是这样,问题可能是程序在有机会播放 mp3 之前就终止了 -
是的,我也这么认为...我们该如何解决?
-
我对您使用的 vlc 模块了解不多,但它似乎有一个
is_playing()方法。因此,您可以将while True:替换为while p.is_playing(),并可能将pass替换为sleep函数以避免忙等待 -
我猜还有一个
get_length()方法,它以 ms 为单位返回长度。您也可以像time.sleep( p.get_length()/1000.)一样使用它
标签: python mp3 infinite-loop vlc playback