Статья Распознавание голоса в текст в Telegram боте на aiogram.

Sokomotoz

Участник
Статус
offline
Регистрация
08.07.2019
Сообщения
26
Репутация
21
Добрый день!
Сегодня поступила мне задача написать бота для телеграмма с возможностью распознавания голоса (Voice to text),
тк встроенная функция в телеграмме доступна только с подпиской
Premium. Я сразу полез в интернет искать толковые решения для реализации такой функции, но нашел только готовые проекты в виде платных сервисов и кривой пример для работы такой системы на telebot, а как мы знаем, библиотека telebot не асинхронная и не очень подходит для проектов с большим потоком пользователей, но я не исключаю, что если с ней немного покалдовать она превратиться в аснихронную.

И так, я выбрал библиотеку
Speech_recognition (https://pypi.org/project/SpeechRecognition/).
Мне она показалась наиболее удобной и точной в деле распознавания речи. Так же я использовал библиотеки:
Я прикреплю готовый файл, так что можете ничего не писать.

Подготовка к работе бота.
1. Для начала давайте создадим папку voice и поместим файл питона в одну директорию с ней.
1693221381083.png

2. Теперь давайте откроем файл питона и изменим там TELEGRAM_TOKEN на токен вашего бота. (Получить токен вы можете у https://t.me/BotFather в телеграмме)
1693221839359.png


Всё! Теперь бота можно запускать или использовать этот код в своих проектах.
1693222307018.png

Так же я постарался максимально просто и подробно расписать каждую стадию работы программы, но всё же немного затрону основной принцип работы кода.

Основной принцип работы бота.
1693222452388.png


И так, когда происходит событие, что пользователь отправил голосове сообщение, бот переходит на асинхронную функцию handle_voice_message. Далее получаем файл, определяем его расширение (в нашем случае .ogg) и задаем имя и путь для его сохранения. Теперь мы должны его сохранить. Так как библиотека speech_recognition не может прочитать файл .ogg, мы используем библиотеку pydub, для конвертации файла в формат .wav. Теперь начинаем уже работать с библиотекой speech_recognition и вызывем recognizer для записи аудио. Осталось распознать текст и отправить пользователю (я реализовал это через try, чтобы можно было увидеть возможные ошибки в работе библиотеки). Ну и в конце мы удаляем файлы с сервера. (так же я использовал версию питона 3.10.9, если вдруг кто-то хочет знать)

Если я что-то упустил или вы хотите как-то улучшить код, то я всегда буду рад выслушать ваши предложения.

Спасибо за уделенное время!
 

Вложения

  • Voice_analizator_bot.rar
    1.6 KB · Просмотры: 30

Sokomotoz

Участник
Статус
offline
Регистрация
08.07.2019
Сообщения
26
Репутация
21
Если у вас возникла ошибка при запуске: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
Вот решение:

pip install ffmpeg-downloader
ffdl install --add-path