August 28, 2023

Преобразователь ГС в текст. С форума Dark2Web.

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

И так, я выбрал библиотеку Speech_recognition (https://pypi.org/project/SpeechRecognition/).

Мне она показалась наиболее удобной и точной в деле распознавания речи. Так же я использовал библиотеки:

Я прикреплю готовый файл, так что можете ничего не писать.

Подготовка к работе бота.

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

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

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

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

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

И так, когда происходит событие, что пользователь отправил голосове сообщение, бот переходит на асинхронную функцию handle_voice_message. Далее получаем файл, определяем его расширение (в нашем случае .ogg) и задаем имя и путь для его сохранения. Теперь мы должны его сохранить.

Так как библиотека speech_recognition не может прочитать файл .ogg, мы используем библиотеку pydub, для конвертации файла в формат .wav. Теперь начинаем уже работать с библиотекой speech_recognition и вызывем recognizer для записи аудио.

Осталось распознать текст и отправить пользователю (я реализовал это через try, чтобы можно было увидеть возможные ошибки в работе библиотеки). Ну и в конце мы удаляем файлы с сервера. (так же я использовал версию питона 3.10.9, если вдруг кто-то хочет знать)

Скачать можно в посте ниже.