Обработка ошибки в боте 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, "Произошла ошибка при распознавании голоса!")
Пример работы кода:
"Произошла ошибка при распознавании голоса!" можете заменить на любое иное сообщение
