在Linux上,以下示例正常工作:
import pygame
from gtts import gTTS
pygame.mixer.init()
t = 'temp.mp3'
for i in range(5):
gTTS(str(i)).save(t)
pygame.mixer.music.load(t)
pygame.mixer.munic.play()
这将播放0-4的数字。
在Windows上,相同的代码将导致错误:
PermissionError: [Errno 13] Permission denied: 'temp3.mp3'
i==1
时。也就是说,它在第二个循环中崩溃了。崩溃发生在gTTS.save
内:
with open(savefile, 'wb') as f:
self.write_to_fp(f)
作为一种解决方法,我也尝试过:
with tempfile.TemporaryFile() as t:
gTTS(str(i)).save(t)
pygame.mixer.music.load(t)
pygame.mixer.munic.play()
但得到错误
error: Couldn't read from RWops
值得注意的是,这是一个每次都失败的最小例子。在我的完整代码中,我经常不经常编写和播放,这是成功的,我可以在同一个脚本中多次从temp.py
播放。只有当我尝试多次写入和读取背靠背时,才会出现此问题。