我正在尝试使用Google语音API在Python中创建语音识别器。我一直在使用和调整here中的代码(转换为Python3)。我正在使用我的计算机上的音频文件,该文件已使用在线转换器从mp3转换为flac 16000 Hz(如原始代码中所指定)。运行代码时出现此错误:
$ python3 speech_api.py 02-29-2016_00-12_msg1.flac
Traceback (most recent call last):
File "speech_api.py", line 12, in <module>
data = f.read()
File "/usr/lib/python3.4/codecs.py", line 319, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 9: invalid start byte
这是我的代码。 (我确信在Python3中仍然存在一些不起作用的东西,因为我一直在努力调整它并且是urllib
的新手...)
#!/usr/bin/python
import sys
from urllib.request import urlopen
import json
try:
filename = sys.argv[1]
except IndexError:
print('Usage: transcribe.py <file>')
sys.exit(1)
with open(filename) as f:
data = f.read()
req = urllib.request('https://www.google.com/intl/en/chrome/demos/speech.html', data=data, headers={'Content-type': 'audio/x-flac; rate=16000'})
try:
ret = urllib.urlopen(req)
except urllib.URLError:
print("Error Transcribing Voicemail")
sys.exit(1)
resp = ret.read()
text = json.loads(resp)['hypotheses'][0]['utterance']
print(text)
任何想法我能做什么?
答案 0 :(得分:2)
您需要以二进制模式打开文件:
open(filename, 'wb')
请注意'b'
,否则文件将被视为文本并解码为Unicode。