python3 OSError:[Errno -9999]语音识别AI

时间:2017-06-22 21:11:20

标签: python-3.x speech-recognition pyaudio errno google-speech-api

我正在研究AI,就像python3中的Jarvis一样。我正在使用python speech_recognition模块和pyaudio以及其他所需的内容。

https://pypi.python.org/pypi/SpeechRecognition/

我现在在覆盆子pi上使用它,在我使用我的mac工作正常之前。现在有时我在我的Raspberry pi上运行我的Jarvis代码时会出错!并非总是如此,但却足以让我们取得进展。不知道什么时候会出现错误是一个大问题,我们需要摆脱它。我用蓝色雪球麦克风。如果你能提供帮助,这是我的代码和错误,非常感谢!

Traceback (most recent call last):
  File "/media/pi/TRAVELDRIVE/Jarvis(10.0).py", line 172, in <module>
    with m as source: r.adjust_for_ambient_noise(source)
  File "/usr/local/lib/python3.4/dist-packages/speech_recognition/__init__.py", line 140, in __enter__
    input=True,  # stream is an input stream
  File "/usr/local/lib/python3.4/dist-packages/pyaudio.py", line 750, in open
    stream = Stream(self, *args, **kwargs)
  File "/usr/local/lib/python3.4/dist-packages/pyaudio.py", line 441, in __init__
    self._stream = pa.open(**arguments)
OSError: [Errno -9999] Unanticipated host error

Jarvis.py

#JARVIS mark 10. python 3.5.1 version
#JUST.A.RATHER.VERY.INTELEGENT.SYSTEM.
##import speech_recognition
##import datetime
##import os
##import random
##import datetime
##import webbrowser
##import time
##import calendar
from difflib import SequenceMatcher
import nltk
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.tokenize import PunktSentenceTokenizer
import speech_recognition as sr
import sys
from time import sleep
import os
import random
r = sr.Recognizer()
m = sr.Microphone()



#Brain functions, vocab!
what_i_should_call_someone = [""]
Good_Things = ["love","sweet","nice","happy","fun","awesome","great"]
Bad_Things = ["death","kill","hurt","harm","discomfort","rape","pain","sad","depression","depressed","angry","mad","broken","raging","rage"]
# Words that you might says in the beginning of your input, for example: "um hey where are we!?!"
Slang_Words = ["um","uh","hm","eh"]
# Put all greetings in here
Static_Greetings = ["Hey","Hi","Hello"]
# Put your AIs Name and other names just in case.
Name = ["jarvis"]
posible_answer_key_words = ["becuase","yes","no"]
Chance_that_question_was_asked_1 = 0
Chance_that_question_was_asked_2 = 0
certainty_question_was_asked = 0
Me_statment_keywords = ["you","your","yours"]
You_statment_keywords = ["i","i'm","me"]
global certainty_person_is_talking_to_me
what_i_said = ("")
Just_asked_querstion = False
the_last_thing_i_said = ("")
the_last_thing_person_said = ("")
what_person_said = ("")
what_person_said_means = [""]
what_im_about_to_say = [""]
why_im_about_to_say_it = [""]
who_im_talking_to = [""]
how_i_feel = [""]
why_do_i_feel_the_way_i_do = [""]
what_i_am_thinking = ("")
# ways to describe the nouns last said
it_pronouns = ["it","they","she","he"]
# last person place or thing described spoken or descussed!
last_nouns = [""]

# Sample of random questions so Jarvis has somthing to index to know what a question is!
Sample_Questions = ["what is the weather like","where are we today","why did you do that","where is the dog","when are we going to leave","why do you hate me","what is the Answer to question 8",
                    "what is a dinosour","what do i do in an hour","why do we have to leave at 6.00", "When is the apointment","where did you go","why did you do that","how did he win","why won’t you help me",
                    "when did he find you","how do you get it","who does all the shipping","where do you buy stuff","why don’t you just find it in the target","why don't you buy stuff at target","where did you say it was",
                    "when did he grab the phone","what happened at seven am","did you take my phone","do you like me","do you know what happened yesterday","did it break when it dropped","does it hurt everyday",
                    "does the car break down often","can you drive me home","where did you find me"
                    "can it fly from here to target","could you find it for me"]

Sample_Greetings = ["hey","hello","hi","hey there","hi there","hello there","hey jarvis","hey dude"]

Question_Keyword_Answer = []

Int_Question_Keywords_In_Input = []

Possible_Question_Key_Words = ["whats","what","where","when","why","isn't","whats","who","should","would","could","can","do","does","can","can","did"]

Possible_Greeting_Key_Words = ["hey","hi","hello",Name]

# In this function: Analyze the user input find out if it's (Question, Answer, Command. Etc) and what is being: Asked, Commanded, ETC.
def Analyze():


    def Analyze_For_Greeting():

        def Greeting_Keyword_Check():
                global Possible_Greeting_Key_Words
                Int_Greeting_Keywords_In_Input = []
                for words in what_person_said_l_wt:
                    if words in Possible_Greeting_Key_Words:
                        Int_Greeting_Keywords_In_Input.append(words)
                Amount_Greeting_Keywords = (len(Int_Greeting_Keywords_In_Input))
                if Amount_Greeting_Keywords > 0:
                    return True
        def Greeting_Sentence_Match():

                for Ran_Greeting in Sample_Greetings:
                    Greeting_Matcher = SequenceMatcher(None, Ran_Greeting, what_person_said_l).ratio()
                    if Greeting_Matcher > 0.5:
                        print (Greeting_Matcher)
                        print ("Similar to Greeting: "+Ran_Greeting)
                        return True



        Greeting_Keyword_Check()
        Greeting_Sentence_Match()

    #In this function: determin if the input is a question or not.
    def Analyze_For_Question():
            # In this function: if there is atleast one question keyword in the user input then return true.
            def Question_Keyword_Check():
                global Possible_Question_Key_Words
                Int_Question_Keywords_In_Input = []
                for words in what_person_said_l_wt:
                    if words in Possible_Question_Key_Words:
                        Int_Question_Keywords_In_Input.append(words)
                Amount_Question_keywords = (len(Int_Question_Keywords_In_Input))
                if Amount_Question_keywords > 0:
                    return True
            # In this function: if the users input is simular to other sample questions, return true.
            def Question_Sentence_Match():
                for Ran_Question in Sample_Questions:
                    Question_Matcher = SequenceMatcher(None, Ran_Question, what_person_said_l).ratio()
                    if Question_Matcher > 0.5:
                        print (Question_Matcher)
                        print ("Similar to Question: "+Ran_Question)
                        return True
            # In this function: if the first word of the users input is a question keyword and there is a different question keyword in the input return true.
            def Question_Verb_Noun_Check():
                #if you say "hey jarvis" before somthing like a question or command it will still understand
                try:
                    for word in what_person_said_l_wt:
                        if word in Static_Greetings or word in Name:
                                print (word)
                                Minus_Begin_Greet1 = what_person_said_l_wt.remove(word)
                                print (Minus_Begin_Greet1)
                                return True 
                except IndexError:
                    pass

            Question_Keyword_Check()                  
            Question_Sentence_Match()
            Question_Verb_Noun_Check()
            if Question_Keyword_Check()==True and Question_Sentence_Match()==True and Question_Verb_Noun_Check()==True:
                return True
            else:
                return False                



    # All the funtions in Analyze
    Analyze_For_Greeting()
    Analyze_For_Question() 










Conversation=True
Conversation_Started=False

while Conversation==True:

    try:
        if Conversation_Started==False:
            #Greeting()
            Conversation_Started=True

        with m as source: r.adjust_for_ambient_noise(source)
        print(format(r.energy_threshold))

        print("Say something!") # just here for now and testing porposes so we know whats happening
        with m as source: audio = r.listen(source)
        print("Got it! Now to recognize it...")
        try:
            # recognize speech using Google Speech Recognition
            value = r.recognize_google(audio)

            # we need some special handling here to correctly print unicode characters to standard output
            if str is bytes:  # this version of Python uses bytes for strings (Python 2)
                print(u"You said {}".format(value).encode("utf-8"))
            else:  # this version of Python uses unicode for strings (Python 3+)
                print("You said {}".format(value))

            what_person_said_l = value.lower()
            what_person_said_l_wt = word_tokenize(what_person_said_l)
            Analyze()

        except sr.UnknownValueError:
            print ("what was that?")
        except sr.RequestError as e:
            print("Uh oh! Sorry sir Couldn't request results from Google Speech Recognition service; {0}".format(e))
    except KeyboardInterrupt:
        pass   

0 个答案:

没有答案