Обработка ошибки в боте telegram

Есть бот, который преобразует голосовое сообщение в текст с помощью библиотеки speech_recognition, вот его код:

import telebot
import speech_recognition as sr
import subprocess

r = sr.Recognizer()

bot = telebot.TeleBot(token)

@bot.message_handler(commands=["start"])
def command_start(message):
    bot.send_message(message.chat.id, "Привет! Отправь голосвое сообщение")

@bot.message_handler(content_types=['voice'])
def handle(message):
    fileID = message.voice.file_id
    file = bot.get_file(fileID)
    down_file = bot.download_file(file.file_path)
    with open('audio.ogg', 'wb') as f:
        f.write(down_file)

    process = subprocess.run(['ffmpeg', '-i', 'audio.ogg', 'audio.wav', '-y'])

    file = sr.AudioFile('audio.wav')
    with file as source:
        audio = r.record(source)
        text = r.recognize_google(audio, language='ru-RU`')
        bot.send_message(message.chat.id, text)
bot.polling(none_stop=True)

При этом если голосовое сообщение расшифровать не удается, то возникает ряд ошибок:

Traceback (most recent call last):
  File "C:/Users/zenfo/PycharmProjects/pythonProject3/main.py", line 31, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\zenfo\anaconda3\lib\site-packages\telebot\__init__.py", line 496, in polling
    self.__threaded_polling(none_stop, interval, timeout, long_polling_timeout)
  File "C:\Users\zenfo\anaconda3\lib\site-packages\telebot\__init__.py", line 555, in __threaded_polling
    raise e
  File "C:\Users\zenfo\anaconda3\lib\site-packages\telebot\__init__.py", line 518, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\zenfo\anaconda3\lib\site-packages\telebot\util.py", line 117, in raise_exceptions
    raise self.exception_info
  File "C:\Users\zenfo\anaconda3\lib\site-packages\telebot\util.py", line 69, in run
    task(*args, **kwargs)
  File "C:/Users/zenfo/PycharmProjects/pythonProject3/main.py", line 26, in handle
    text = r.recognize_google(audio, language='ru-RU`')
  File "C:\Users\zenfo\anaconda3\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 шт):

Автор решения: OniShlange
    with file as source:
        try:
            audio = r.record(source)
            text = r.recognize_google(audio, language='ru-RU`')
            bot.send_message(message.chat.id, text)
        except sr.UnknownValueError:
            bot.send_message(message.chat.id, "Произошла ошибка при распознавании голоса!")

Пример работы кода:

"Произошла ошибка при распознавании голоса!" можете заменить на любое иное сообщение

→ Ссылка