播放从 url 检索到的声音内容?

2024-04-06

我正在从以下位置检索声音:

http://translate.google.com/translate_tts http://translate.google.com/translate_tts

并将其写入 WAV 文件,当我双击该文件时,声音播放正常,但是当我使用 python 中的 WAVE 模块打开它时,它给了我这个错误:

wave.Error:文件不以 RIFF id 开头

我想知道是否有办法打开这个文件,或者是否可以在不事先写入的情况下播放声音。

这是相关代码:

url = "http://translate.google.com/translate_tts?tl=%s&q=%s" % (lang, text)
hrs = {"User-Agent":
       "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7"}

request = urllib.request.Request(url, headers = hrs)
page = urllib.request.urlopen(request)

fname = "Play"+str(int(time.time()))+".wav"
file = open(fname, 'wb')
file.write(page.read())
file.close()

读取该文件的代码是:

INPUT_FRAMES_PER_BLOCK = 1024

wf = wave.open(fname, 'r')

pa = pyaudio.PyAudio()

stream = pa.open(format=pa.get_format_from_width(wf.getsampwidth()),
                 channels=wf.getnchannels(),
                 rate=wf.getframerate(),
                 output=True)

data = wf.readframes(INPUT_FRAMES_PER_BLOCK)

while data != '':
    stream.write(data)
    data = wf.readframes(INPUT_FRAMES_PER_BLOCK)

stream.stop_stream()
stream.close()

pa.terminate()

提前致谢! 顺便说一句,我正在使用 Python 3。


您出现此错误是因为您尝试播放的文件不是WAV.

谷歌翻译生成的声音被编码为MP3.

至于如何玩MP3Python 的声音,我建议你阅读这个 StackOverflow 问题 https://stackoverflow.com/questions/1804366/playing-mp3-files-with-python.

(基本上你必须安装一些库,比如Pyglet http://www.pyglet.org/)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

播放从 url 检索到的声音内容? 的相关文章

随机推荐