I have a script that makes use of the Google speech recognition API as follows:
import shlex print " say something" os.system('sox -r 16000 -t alsa default recording.flac silence 1 0.1 1% 1 1.5 1%') cmd='wget -q -U "Mozilla/5.0" --post-file recording.flac --header="Content-Type: audio/x-flac; rate=16000" -O - " http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium"' args = shlex.split(cmd) output,error = subprocess.Popen(args,stdout = subprocess.PIPE, stderr= subprocess.PIPE).communicate() if not error: a = eval(output) #a = eval(open("data.txt").read()) confidence= a['hypotheses'][0]['confidence'] speech=a['hypotheses'][0]['utterance'] print "you said: ", speech, " with ",confidence,"confidence" When I run that script by itself, it works fine. When I insert the script into a larger program, I get the following error: ERROR: Traceback (most recent call last): File "inga.py", line 146, in <module> confidence= a['hypotheses'][0]['confidence'] IndexError: list index out of range If I understand it correctly, the traceback is telling me that there is no position [0] in my list, but I don't understand how that can be true. I'm not using the variable "confidence" anywhere else in the program. Here's the larger script/program into which the offending bits were inserted, up to the point of the error: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import aiml import commands import subprocess import marshal import datetime import os import os.path from os.path import exists ####################################################################### #################### read sensors ##################################### ####################################################################### ############ environmental ############ def environRead(): import serial from time import sleep sensors = dict.fromkeys('Sonar1 Sonar2 Sonar3 Sonar4 Dewpoint Temperature Humidity Light'.split()) arduino = serial.Serial('/dev/ttyACM0', 9600) sleep(1) line = arduino.readline().strip() line = line.lstrip('{').rstrip('}').strip() envSense = {} for item in line.split(','): item = item.strip() key, value = item.split(':') key = key.strip() value = value.strip() envSense[key]=int(value) return envSense ######## end environmental ####################### ########### somatic ############################## def somaticRead(): import psutil as ps cpu = ps.cpu_percent() mem = ps.virtual_memory() disk = ps.disk_usage('/') # need code to strip % out of disk, leaving just hdd = and some number # convert it all into a dictionary and return it ############ end somatic ########################## ####################################################################### ################ end sensor read ###################################### ####################################################################### ####################################################################### ############## facerec ################################################ ####################################################################### from SimpleCV import Camera import Image # initialize camera cam = Camera() #snap a picture using the camera img = cam.getImage() # find the face faces = img.findHaarFeatures('/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml') if faces: for face in faces: face.draw() # crop at box around detected face cropped = face.crop() # save to file for processing im = cropped.copy() im.save("temp.png") # process image - grayscale and size im = Image.open("temp.png").convert("L") im = im.resize((125, 150), Image.ANTIALIAS) #delete the temp.png file # filelist = [ f for f in os.listdir(".") if f.endswith(".png") ] # for f in filelist: # os.remove(f) #save image for face recognizer im.save("match.png") subprocess.check_call(["python", "facerec", "match.png", "faceDbase", "18", "3"]) filelist = [ f for f in os.listdir(".") if f.endswith(".png") ] for f in filelist: os.remove(f) tmp = open("namefile.txt") name = tmp.read() #print("Hello " + name) greet = ("Hello " + name) print greet festivalCmd = '(SayText "%s")' % greet subprocess.Popen(['/usr/bin/festival', '-b', festivalCmd]) # need to add functions for not finding or not recognizing a face ############# return from a function #def get_face(arg): # some_variable = 10 * arg # return some_variable #result = get_face(5) ######################################################################## ############## end facerec ############################################# ######################################################################## ######################################################################## ############## sphinx speech rec will go here ########################## ######################################################################## ######################################################################## ####################### Google speech rec ############################## ######################################################################## import shlex print " say something" os.system('sox -r 16000 -t alsa default recording.flac silence 1 0.1 1% 1 1.5 1%') cmd='wget -q -U "Mozilla/5.0" --post-file recording.flac --header="Content-Type: audio/x-flac; rate=16000" -O - " http://www.google.com/speech-api/v1/recognize?lang=en-us&client=chromium"' args = shlex.split(cmd) output,error = subprocess.Popen(args,stdout = subprocess.PIPE, stderr= subprocess.PIPE).communicate() if not error: a = eval(output) #a = eval(open("data.txt").read()) confidence= a['hypotheses'][0]['confidence'] speech=a['hypotheses'][0]['utterance'] print "you said: ", speech, " with ",confidence,"confidence" ######################################################################## ################# end Google speech rec code ########################### ######################################################################## Any help would be greatly appreciated. regards, Richard -- *Mater tua criceta fuit, et pater tuo redoluit bacarum sambucus*
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor