「自然会話ロボットを作ろう!RasberryPiとArduinoで作る人工知能」という書籍を元にPythonの勉強をしています。
その中にあるコードを指定された通り実行した際にエラーが生じてしまったので質問致しました。
- 書籍名
自然会話ロボットを作ろう!RasberryPiとArduinoで作る人工知能 - 該当ページ
pp.90 - 92 - 使用環境
(書籍に記載された環境と同様 のものを使用)
PCのOS:Windows7
環境:RasberryPi3 (M-10414),Python2
以下にソースコードとエラー内容を記載します。
#!/usr/bin/env python
# coding: UTF-8
import requests
import json
import os
import time
GOOGLE_APIKEY = 'Your_Google_APIKEY' #この部分は自分で取得したAPIKEYと差し替え
VOICE_REC_PATH = '/home/pi/ai/hello.flac'
def recognize():
print('recognizing...')
f = open(VOICE_REC_PATH, 'rb')
voice = f.read()
f.close()
url = 'https://www.google.com/speech-api/v2/recognize?xjerr=1&client=chromium&' \ 'lang=ja-JP&maxresults=10&pfilter=0&xjerr=1&key=' + \ GOOGLE_APIKEY
hds = {'Content-type': 'audio/x-flac; rate=11025'}
try:
rsp = requests.post(url, data=voice, headers=hds).text
except IOError:
return '#CONN_ERR'
expect:
return '#ERROR'
print 'results:', rsp
objs = rsp.split(os.linesep)
for obj in objs:
if not obj:
continue
alternatives = json.loads(obj)['result']
if len(alternatives) == 0:
continue
return alternatives[0]['alternative'][0]['transcript']
return ""
def current_milli_time():
return int(round(time.time()*1000))
if __name__ == '__main__':
t0 = current_milli_time()
message = recognize().encode('utf-8')
print 'recognized:'+str(current_milli_time()-t0)+'ms'
if(message == '#CONN_ERR'):
print 'internet not available'
message = ''
elif(message == '#ERROR'):
print 'voice recognizing failed'
message = ''
else:
print 'your words:'+message
Traceback (most recent call last):
File "/home/pi/ai/test-recognize.py", line 46, in <module>
message = recognize().encode('utf-8')
File "/home/pi/ai/test-recognize.py", line 34, in recognize
alternatives = json.loads(obj)['result']
File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s,0).end())
File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded
自分なりにエラー内容について調べてみたのですが、python初心者なので具体的な解決方法がわからず困っています。