Простой телеграм бот, который извлекает из аудио слова.
Работает с бэкэндом 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.ymlc переменными окружения.
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- имя базы данных