Speech Recognition умирает
Как можно пофиксить то, что программа выдает ошибку, если не может определить что именно я сказал?
import speech_recognition as sr
query = ''
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
audio = r.listen(source)
query = r.recognize_google(audio, language = 'ru-RU')
print(query)
while query != "1":
record_volume()
Текст ошибки:
Traceback (most recent call last):
File "C:/Users/Kompik/Desktop/derm2.py", line 15, in <module>
record_volume()
File "C:/Users/Kompik/Desktop/derm2.py", line 11, in record_volume
query = r.recognize_google(audio, language = 'ru-RU')
File "C:\Users\Kompik\AppData\Local\Programs\Python\Python38-32\lib\site-packages\speech_recognition\__init__.py", line 858, in recognize_google
if not isinstance(actual_result, dict) or len(actual_result.get("alternative", [])) == 0: raise UnknownValueError()
speech_recognition.UnknownValueError
Не совсем понимаю в чем ошибка.
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Исключение нужно ловить
Попробуйте так:
...
while query != "1":
try:
record_volume()
except sr.UnknownValueError:
pass
PS.
В вашем коде query никогда не поменяется, хоть в record_volume есть query = , т.к. это создаст локальную переменную query, вместо того, что поменять глобальную. Чтобы менять глобальные переменные в функциях, нужно использовать оператор global:
def record_volume():
global query
...
query = r.recognize_google(audio, language = 'ru-RU')
print(query)
А еще лучше не использовать глобальные переменные, а возвращать результат из функции:
import speech_recognition as sr
def record_volume() -> str:
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
audio = r.listen(source)
return r.recognize_google(audio, language='ru-RU')
while True:
try:
query = record_volume()
if query == '1':
break
except sr.UnknownValueError:
pass