我正在检索声音:
然后将其写入WAV文件,当我双击该文件时,声音播放正常,但当我使用python中的WAVE模块打开它时,它会给出以下错误:
wave.Error: file does not start with 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 BTW
出现此错误是因为您试图播放的文件不是
WAV
。Google Translate生成的声音被编码为
MP3
。至于如何用Python播放
MP3
声音,我建议您阅读this StackOverflow question。(基本上你必须安装一些库,比如Pyglet)
或者,如果您想要wav文件,可以安装一些东西将其转换为wav文件。Pymedia是一个很好的模块。为当前版本的python制作的pymedia版本可能很难找到,但是,我已经找到了一个很好的地方,可以在:http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymedia获得它
下面是一个将mp3文件转换为wav文件并在文件系统中保存wav文件的函数:
您可能只想播放mp3,但在python中播放wav文件要容易得多。例如,pygame对mp3文件的支持是有限的,但它始终可以播放wav文件。
相关问题 更多 >
编程相关推荐