Python 如何在PyGame混合器中释放资源?
我使用gTTS python模块从Google Text-to-Speech API获取mp3,并使用PyGame在不打开外部播放器的情况下播放输出的mp3文件(有没有更简单的方法呢?) 然而,PyGame mixer似乎并没有释放文件资源,即使在它的退出方法之后Python 如何在PyGame混合器中释放资源?,python,pygame,google-text-to-speech,Python,Pygame,Google Text To Speech,我使用gTTS python模块从Google Text-to-Speech API获取mp3,并使用PyGame在不打开外部播放器的情况下播放输出的mp3文件(有没有更简单的方法呢?) 然而,PyGame mixer似乎并没有释放文件资源,即使在它的退出方法之后 phrase = "Hello!" tts = gtts.gTTS(text=phrase, lang='en') tts.save("googleTTS.mp3") f = MP3("googleTTS.mp3") mixer.i
phrase = "Hello!"
tts = gtts.gTTS(text=phrase, lang='en')
tts.save("googleTTS.mp3")
f = MP3("googleTTS.mp3")
mixer.init(f.info.sample_rate)
mixer.music.load("googleTTS.mp3")
mixer.music.play()
while mixer.music.get_busy() == True:
continue
mixer.quit() # doesn't free resource?
phrase = "Bye!"
tts = gtts.gTTS(text=phrase, lang='en')
tts.save("googleTTS.mp3")
最后一行给出了例外情况:
IOError: [Errno 13] Permission denied: 'googleTTS.mp3'
我应该注意到问题不在tts.save函数中,因为没有混音器的代码可以正常工作
如何释放混音器资源并反复使用同一个文件?这种方法对我很有效:
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
clock.tick(30)
pygame.mixer.music.stop()
pygame.mixer.quit()
这种方法对我很有效:
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
clock.tick(30)
pygame.mixer.music.stop()
pygame.mixer.quit()
也许问题出在
f
?你试过delf或别的什么吗?不知道MP3
类(?)做什么。不,当我使用静态比特率值如mixer.init(16000)时,没有f的问题是一样的。你在mixer.music.stop()
之前尝试过mixer.quit()
?是的,从命令行使用chmod 777 googleTTS.MP3?可能问题是f
?你试过delf或别的什么吗?不知道MP3
类(?)做什么。不,当我使用静态比特率值如mixer.init(16000)时,没有f的问题是一样的。你在mixer.quit()
之前尝试过mixer.music.stop()
?是的,它没有帮助eitherTrychmod 777 googleTTS.MP3
?