Ваша функция takeCommand
ничего не возвращает, что означает, что она явно возвращает None
. Следовательно, строка
if 'wikipedia' in query:
эквивалентна
if 'wikipedia' in None:
, что недопустимо и вызовет TypeError
.
Вместо этого вы, вероятно, захотите вернуть query
из takeCommand
, при условии успешного распознавания речи, то есть:
def takeCommand():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
audio = r.listen(source)
query = None
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...")
return query
Затем вы можете проверить, что у вас есть допустимое возвращаемое значение, прежде чем рассматривать его как строку:
query = takeCommand()
if query is None:
# Report to user that their speech was not understood
...
else:
# Process query
if 'wikipedia' in query:
# Do something with query
...