正在学习关于制作 AI 助手的编码教程(Mikael 代码),但它给了我错误,即使代码与示例中的代码相同

问题描述 投票:0回答:0

我把视频初始化章节的文字一个字母一个字母抄下来,他跑我就跑。我安装了 pocketsphynx、datetime、speech_recognition、pyttsx3、webbrowser、wikipedia 和 wolfaramalpha(以及 loggin.config)。但是,在查看评论后,我没有找到任何答案。我在他第一次运行时运行了它 (https://www.youtube.com/watch?v=OqFI_g8vAoc),无论如何,它给了我同样的错误。

我尝试询问 chatgpt,但这没有帮助,我尝试查看视频的评论部分,并尝试自我诊断问题。

我的代码是:

from datetime import datetime
from logging.config import listen
import speech_recognition as sr
import pyttsx3 
import webbrowser
import wikipedia
import wolframalpha
 
# Speech engine initialisation
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) # 0 = male, 1 = female
activationWord = 'computer' # Single word
 
def speak(text, rate = 120):
    engine.setProperty('rate', rate)
    engine.say(text)
    engine.runAndWait()
 
def parseCommand():
    listener = sr.Recognizer()
    print('Listening for a command')
 
    with sr.Microphone() as source:
        listener.pause_threshold = 2
        input_speech = listener.listen(source)
 
    try: 
        print('Recognizing speech...')
        query = listener.recognize_google(input_speech, language='en_gb')
        print(f'The input speech was: {query}')
    except Exception as exception:
        print('I did not quite catch that')
        speak('I did not quite catch that')
        print(exception)
        return 'None'
 
    return query
 
 
 
# Main loop
if __name__ == '__main__':
    speak('All systems nominal.')
 
    while True:
        # Parse as a list
        query = parseCommand().lower().split()
 
        if query[0] == activationWord:
            query.pop(0)
 
            # List commands
            if query[0] == 'say':
                if 'hello' in query:
                    speak('Greetings, all.')
                else: 
                    query.pop(0) # Remove say
                    speech = ' '.join(query)
                    speak(speech)

它给我的错误是:

监听命令 追溯(最近一次通话): 文件“c:\Users_.vscode\Python\AI voice\main.py”,第26行,parseCommand input_speech = listener.listen(来源) ^^^^^^^^^^^^^^^^^^^^^^^^ 文件“C:\Users___\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\speech_recognition_init_.py”,第651行,在监听 assert source.stream is not None,“收听前必须输入音频源,请参阅

AudioSource
的文档;您是否在
source
语句之外使用
with
?” ^^^^^^^^^^^^^^^^^^^^^^^^^^ AssertionError: Audio source must be entered before listening,
AudioSource
见文档;你在
source
声明之外使用
with
吗?

在处理上述异常的过程中,又出现了一个异常:

回溯(最后一次通话): 文件“c:\Users___.vscode\Python\AI voice\main.py”,第 48 行,在 query = parseCommand().lower().split() ^^^^^^^^^^^^^^ 文件“c:\Users_.vscode\Python\AI voice\main.py”,第24行,parseCommand 以 sr.Microphone() 作为来源: 文件“C:\Users_\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\speech_recognition_init.py”,第 201 行,在exit
self.stream.close() ^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' 对象没有属性 'close'

python artificial-intelligence text-to-speech voice python-3.11
© www.soinside.com 2019 - 2024. All rights reserved.