Простой телеграм бот, который извлекает из аудио слова.
Работает с бэкэндом faster-whisper-fastapi, который и занимается обработкой аудио. Бэкэнд сделан на основе модели whisper от openai: https://github.com/openai/whisper.
Перетянуть или переслать боту аудио сообщение или аудио файл. После его обработки бот в ответ отправит переведенный текст.
Бот работает с файлами _меньше 20 МБ. Бот работает с сообщениями содержащими:
- аудио файлы
- голосовые сообщения
- видео
- видео-записки
- документы
-
Переменные окружения Бот использует переменную окружения
WHISPER_MIBOT_TOKEN
иWHISPER_BACKEND_URL
. Первая задаёт токен для бота, полученный от@BotFather
в телеграмме. Вторая определяет адрес сервиса для извлечения текста из речи.Задать данные переменные окружения можно любым удобным способом, например, вписав их значения напрямую в конфиг
config.py
. -
Установка зависимостей и запуск Переходим в каталог с программой и устанавливаем зависимости для python 3.9+
cd src pip3 install -r requirements.txt python app.py
- Создаете файл
.env
рядом сdocker-compose.yml
c переменными окружения.WHISPER_MIBOT_TOKEN="<bot_token>" WHISPER_BACKEND_URL="<http://127.0.0.1:8000/transcribe>"
- Запускаете
docker-compose up -d
Создать файл /etc/systemd/system/whisper-mibot.service
со следующим содержимым:
[Unit]
Description=Telegram bot whisper-mibot
After=syslog.target
After=network.target
[Service]
Type=simple
User=<username>
Group=<usergroup>
WorkingDirectory=/home/<username>/whisper_mibot
ExecStart=/home/<username>/whisper_mibot/.venv/bin/python3 /home/<username>/whisper_mibot/app.py
RestartSec=30
Restart=always
KillMode=control-group
EnvironmentFile=/home/<username>/whisper_mibot/.env
[Install]
WantedBy=multi-user.target
, в котором вместо <username>
и <usergroup>
подставить имя пользователя и группу пользователя, от имени которого будет запускаться сервис.
Важно указать в параметре ExecStart
правильный путь до интерпретатора python и путь до файла программы app.py
.
Параметр EnvironmentFile
указывает путь до файла .env
, в котором записана переменная окружения WHISPER_MIBOT_TOKEN
и WHISPER_BACKEND_URL
.
Пример файла .env
:
WHISPER_MIBOT_TOKEN="<bot_token>"
WHISPER_BACKEND_URL="<http://127.0.0.1:8000/transcribe>"
Далее включить и запустить сервис командами:
sudo systemctl enable whisper-mibot.service
sudo systemctl start whisper-mibot.service
Имеется возможность логирования событий в базу данных MongoDB.
При логировании записывается хеш (получаемый из имени и телеграм ид пользователя) и время обращения к боту. Если переменная со строкой подключения с MongoDB будет не определена, то запись событий не происходит.
Настройки MongoDB Находятся в файле consfig.py
и определяются двумя параметрами:
MongoDB_string
- строка подключения к монгоMongoDB_db_name
- имя базы данных