【问题标题】:How do Fix the exception error where my mic does not pick up an input properly?如何修复我的麦克风无法正确接收输入的异常错误?
【发布时间】:2020-04-07 19:34:30
【问题描述】:

我正在以 siri 和谷歌助手的形式构建一个弱 Ai 平台,但是,每次我运行我的代码时,它总是返回“对不起,我没听懂”——这个异常而不是通过我的麦克风接收输入.我正在按照 YouTube 教程来构建它,因为我对 python 还很陌生,因此我不知道问题是什么,因为它似乎对教程中的人来说很好。有人可以指导我解决这个问题吗?谢谢

import pyttsx3
import speech_recognition as sr
import datetime
import wikipedia
import webbrowser
import os
import smtplib
import pythoncom

print("Initializing Karren")

MASTER = "Nadeem"

engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)

def speak(text):
    engine.say(text)
    engine.runAndWait()


def wishMe():
    hour = int(datetime.datetime.now().hour)

    if hour>=0 and hour <12:
        speak("Good Morning" + MASTER)

    elif hour>=12 and hour<18:
        speak("Good Afternoon" + MASTER)
    else:
        speak("Good Evening" + MASTER)


    speak("How may I assist you?")

def takeCommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening...")
        audio = r.listen(source)
    try :
        print("Recognizing...")
        query = r.recognize_google(audio, language ='en-uk')
            print(f"user said: {query}\n")

        except Exception as e:
            print("Sorry i didn't catch that...")

speak("Initializing Karren...")
wishMe()
query = takeCommand()

#Logic
if query:
    if 'wikipedia' in query.lower():
        speak('Searching wikipedia...')
        query = query.replace("wikipedia", "")
        results = wikipedia.summary(query, sentences =2)
        print(results)
        speak(results)


    if 'open youtube' in query.lower():
        webbrowser.open("youtube.com")

【问题讨论】:

    标签: python python-3.x artificial-intelligence speech-recognition


    【解决方案1】:

    嗯,这是更新后的代码@iSavageSkull

    import pyttsx3
    import speech_recognition as sr
    import datetime
    import wikipedia
    import webbrowser
    import os
    import smtplib
    import pythoncom
    
    print("Initializing Karren")
    
    MASTER = "Nadeem"
    
    engine = pyttsx3.init('sapi5')
    voices = engine.getProperty('voices')
    engine.setProperty('voice', voices[1].id)
    
    def speak(text):
        engine.say(text)
        engine.runAndWait()
    
    
    def wishMe():
        hour = int(datetime.datetime.now().hour)
    
        if hour>=0 and hour <12:
            speak("Good Morning" + MASTER)
    
        elif hour>=12 and hour<18:
            speak("Good Afternoon" + MASTER)
        else:
            speak("Good Evening" + MASTER)
    
    
        speak("How may I assist you?")
    
    def takeCommand():
        r = sr.Recognizer()
        with sr.Microphone() as source:
            print("Listening...")
            audio = r.listen(source)
        try :
            print("Recognizing...")
            query = r.recognize_google(audio, language ='en-uk')
            print(f"user said: {query}\n")
    
        except Exception as e:
            print("Sorry i didn't catch that...")
    
    speak("Initializing Karren...")
    wishMe()
    query = takeCommand()
    
    #Logic
    if query:
        if 'wikipedia' in query.lower():
            speak('Searching wikipedia...')
            query = query.replace("wikipedia", "")
            results = wikipedia.summary(query, sentences =2)
            print(results)
            speak(results)
    
    
        if 'open youtube' in query.lower():
            webbrowser.open("youtube.com")
    

    您在这里犯的错误:

    1. def takeCommand()下,print(f"user said: {query}\n")缩进错误,应该正确缩进。

    2. 在同一个def takeCommand()下,

        except Exception as e:
            print("Sorry i didn't catch that...")
    

    这里又是缩进错误,这就是为什么它总是不断打印错误,即使代码产生了合法的输出

    运行我更新的你的代码,程序运行良好!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多