Python 如何在PyGame混合器中释放资源?

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

我使用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.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()
?是的,它没有帮助eitherTry
chmod 777 googleTTS.MP3