Skip to content

AlexMelanFromRingo/WhisperBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WhisperBot — Telegram Bot для распознавания речи

Этот Telegram бот использует модель Whisper от OpenAI для преобразования голосовых сообщений и видео-кружочков в текст. Бот поддерживает очередь задач и обрабатывает сообщения параллельно с использованием нескольких рабочих потоков.

Возможности

  • Преобразование голосовых сообщений в текст.
  • Поддержка обработки видео-кружочков (видео-сообщений).
  • Очередь задач для обработки голосовых сообщений.
  • Поддержка использования GPU для обработки с использованием CUDA.
  • Возможность сохранять аудио-файлы, если требуется.
  • Информирование пользователя о статусе очереди и обработке.

Установка

  1. Клонируйте репозиторий:

    git clone https://github.com/AlexMelanFromRingo/WhisperBot.git
    cd WhisperBot
  2. Создайте виртуальное окружение и активируйте его:

    python -m venv venv
    source venv/bin/activate  # для Linux/Mac
    .\venv\Scripts\activate  # для Windows
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Создайте файл .env и настройте переменные окружения:

    Пример содержимого .env:

    TG_BOT_TOKEN=your_telegram_bot_token
    WHISPER_MODEL=base  # Возможные значения: base, small, medium, large, turbo, etc. Подробнее см. в документации OpenAI Whisper
    WHISPER_DEVICE=cpu  # Используйте "cuda" для GPU, "cpu" для использования процессора или "auto" для автоматического выбора
    WORKER_COUNT=2  # Количество рабочих потоков
    QUEUE_MAXSIZE=200  # Максимальный размер очереди
    SAVE_VOICES=True  # Устанавливайте False, если не хотите сохранять аудио файлы
    VOICES_DIR=voices  # Директория для хранения голосовых файлов
    LOG_LEVEL=INFO  # Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  5. Запустите бота:

    python telegram_whisper_bot.py

Использование

Команды бота

  • /start — Приветственное сообщение с информацией о сервере и возможностях бота.
  • /status — Отображает статус очереди и состояние обработки сообщений для пользователя.

Как это работает?

  1. Отправьте боту голосовое сообщение или видео-кружочек (video note).
  2. Бот начнёт процесс транскрипции с использованием модели Whisper.
  3. После завершения обработки бот отправит текст обратно в чат.

Если очередь переполнена, бот сообщит об этом и предложит попробовать позже.

Структура проекта

  • bot.py — Основной файл с логикой работы бота.
  • config.py — Конфигурационные настройки для работы с ботом.
  • requirements.txt — Все необходимые библиотеки.
  • .env — Файл с переменными окружения.
  • voices/ — Директория для хранения голосовых файлов (если SAVE_VOICES=True).
  • logs/ — Логи работы бота (если логирование активно).

Логирование

Бот поддерживает логирование для отслеживания ошибок и состояния системы. Уровень логирования можно настроить в файле .env через переменную LOG_LEVEL.

  • Уровни логирования: DEBUG, INFO, WARNING, ERROR, CRITICAL.

Примечания

  • Если очередь обработки переполнена, бот уведомит пользователя о том, что сервер перегружен, и предложит повторить попытку позже.
  • Для корректной работы с GPU, необходимо установить соответствующие зависимости для CUDA.
  • Если модель Whisper не доступна для вашей системы, бот будет использовать CPU для обработки.

Зависимости

В проекте используются следующие библиотеки:

  • whisper — Модель для распознавания речи от OpenAI.
  • python-telegram-bot — Библиотека для работы с Telegram API.
  • dotenv — Для загрузки переменных окружения из файла .env.
  • torch — Для работы с моделью Whisper на GPU (если доступно).

Установите их с помощью команды:

pip install -r requirements.txt

Автор

Этот проект был разработан Alex Melan и является открытым исходным кодом. Вы можете использовать его по своему усмотрению и модифицировать в соответствии с вашими потребностями.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages