from urllib.request import URLopener
from urllib.parse import quote
from pygame import mixer
def speak(text):
downloader = URLopener()
downloader.addheader('Referer', 'https://translate.google.com/')
downloader.addheader('User-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')
downloader.retrieve('https://translate.google.com/translate_tts?ie=UTF-8&q={0}&tl=en&client=tw-ob'.format(quote(text)), 'storage/tts.mp3')
mixer.init()
mixer.music.load('storage/tts.mp3')
mixer.music.play()
這裏是我的代碼時,我嘗試在第二次使用funtion它給我的錯誤(對不起不好英語)的urllib - 檢索得到錯誤的第二次運行
downloader.retrieve('https://translate.google.com/translate_tts?ie=UTF-8&q={
0}&tl=en&client=tw-ob'.format(quote(text)), 'storage/tts.mp3')
File "C:\Users\pc\AppData\Local\Programs\Python\Python36-32\lib\urllib\request
.py", line 1800, in retrieve
tfp = open(filename, 'wb')
PermissionError: [Errno 13] Permission denied: 'storage/tts.mp3'
我也試過,但它沒有工作,發揮它的聲音,但仍然發生同樣的錯誤
def speak(text):
downloader = URLopener()
downloader.addheader('Referer', 'https://translate.google.com/')
downloader.addheader('User-agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36')
downloader.retrieve('https://translate.google.com/translate_tts?ie=UTF-8&q={0}&tl=en&client=tw-ob'.format(quote(text)), 'storage/tts.mp3')
mixer.init()
mixer.music.load('storage/tts.mp3')
mixer.music.play()
while mixer.music.get_busy():
pass
mixer.music.stop()
不是urllib的問題(順便說一句之後,您可能需要使用[要求](HTTP: //docs.python-requests.org/en/master/)),除非urllib沒有關閉()它。您的程序無法打開文件進行寫入。你有沒有在別的地方打開它? –
似乎是由檢索調用導致文件被拒絕的權限,可能是由於您的調音臺仍然在該文件上持有句柄。 – BoboDarph