def listen_for_speech(): """ Does speech recognition using Google's speech recognition service. Records sound from microphone until silence is found and save it as WAV and then converts it to FLAC. Finally, the file is sent to Google and the result is returned. """ stream = initStream() print "* listening. CTRL+C to finish." all_m = [] data = '' #SILENCE_LIMIT = 2 rel = vConfig.RATE/vConfig.INPUT_FRAMES_PER_BLOCK slid_win = deque(maxlen=vConfig.SILENCE_LIMIT*rel) started = False while (True): data = stream.read(vConfig.INPUT_FRAMES_PER_BLOCK) slid_win.append (abs(audioop.avg(data, 2))) if(True in [ x>vConfig.THRESHOLD for x in slid_win]): if(not started): print "starting record" started = True all_m.append(data) elif (started==True): print "finished" #the limit was reached, finish capture and deliver filename = save_speech(all_m,p) print filename textString = GoogleSpeech.stt(filename, vConfig.RATE) if ( textString != '' ): #os.system( "say " + str(textString) ) print "Initiating Configuration Lookup" #cmd = vConfig.getConfig( textString ) #if ( cmd is not None ): runCommand(textString) #reset all started = False slid_win = deque(maxlen=vConfig.SILENCE_LIMIT*rel) all_m= [] stream = initStream() print stream print "listening ... again" print "* done recording" stream.close()