我把视频初始化章节的文字一个字母一个字母抄下来,他跑我就跑。我安装了 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'