телеграм бот, который принимает текст или новости даже с картинками и видео и озвучивает текст, отправляя пользователю в ответ голосовое сообщение с озвучкой
Find a file
vrubel b241d86181
Some checks failed
CI/CD Pipeline / build (push) Failing after 2s
CI/CD Pipeline / deploy (push) Has been skipped
fix: use container.volumes for docker sock mount
2026-06-06 15:55:39 +00:00
.forgejo/workflows fix: use container.volumes for docker sock mount 2026-06-06 15:55:39 +00:00
app fix: support forwarded media with captions (text from caption, ignore media-only) 2026-06-03 18:43:02 +00:00
.env.example feat: CI/CD pipeline with build test and deploy gate 2026-06-06 15:17:58 +00:00
.gitignore Remove env file and add env example 2026-06-04 10:40:55 +00:00
ARCHITECTURE.md init: TTS Telegram Bot (edge-tts, Dmitry voice, admin panel) 2026-06-03 18:39:05 +00:00
docker-compose.yml fix: mount docker sock in CI job, remove obsolete version 2026-06-06 15:48:58 +00:00
README.md init: TTS Telegram Bot (edge-tts, Dmitry voice, admin panel) 2026-06-03 18:39:05 +00:00

T2S Telegram Bot — Text-to-Speech

Сервис озвучивания текста через Telegram. Пользователь отправляет текст — получает голосовое сообщение голосом Дмитрия (Microsoft edge-tts). Администратор получает копию каждой озвучки с информацией об отправителе.

Быстрый старт

# Запустить сервис
docker compose up -d

# Посмотреть логи
docker compose logs -f

# Остановить
docker compose down

Первичная настройка

  1. Напиши /start админ-боту (токен ADMIN_BOT_TOKEN) — он запомнит твой chat_id
  2. После этого все сообщения пользователей будут дублироваться тебе с аудио + информацией
  3. Любой пользователь может писать текст пользовательскому боту (токен USER_BOT_TOKEN) и получать озвучку

Архитектура

graph LR
    User[Пользователь Telegram] -->|текст| UBot[Пользовательский бот]
    UBot -->|TTS запрос| edge[edge-tts<br/>Microsoft TTS]
    edge -->|audio.ogg| UBot
    UBot -->|голосовое сообщение| User
    UBot -->|копия + информация| ABot[Админ-бот]
    ABot -->|голосовое + информация| Admin[Администратор]
  • Один процесс запускает два экземпляра python-telegram-bot Application
  • Озвучка — Microsoft edge-tts, голос ru-RU-DmitryNeural (бесплатно, без API-ключа)
  • Аудио — временные .ogg файлы, удаляются сразу после отправки

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

.
├── .env                 # Токены ботов + настройки
├── .gitignore
├── README.md
├── docker-compose.yml   # Оркестрация
└── app/
    ├── Dockerfile
    ├── requirements.txt
    └── bot.py            # Логика ботов

Конфигурация (.env)

Переменная Описание Пример
USER_BOT_TOKEN Токен пользовательского бота 856708...
ADMIN_BOT_TOKEN Токен админского бота 880853...
TTS_VOICE Голос edge-tts (опционально) ru-RU-DmitryNeural

Доступные русские голоса

Имя Пол
ru-RU-DmitryNeural Мужской (по умолчанию)
ru-RU-SvetlanaNeural Женский
ru-RU-DariyaNeural Женский

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

Пользователь пишет любое текстовое сообщение пользовательскому боту:

User: Привет, как дела?
Bot: 🎵 (голосовое сообщение с озвучкой)

Администратору приходит:

👤 Иван Иванов
🆔 123456789
📝 Привет, как дела?
⏰ 2026-06-03 18:09:00
🎵 (то же голосовое сообщение)

Требования

  • Docker + Docker Compose
  • Доступ к api.telegram.org (боты)
  • Доступ к Microsoft edge-tts CDN (первый запрос кеширует голос)

Особенности сети

При использовании с роутером GLiNet (DPI, блокировка Docker Hub) используйте для сборки:

DOCKER_BUILDKIT=0 docker build --network=host -t t2s-telegram-bot ./app