init: TTS Telegram Bot (edge-tts, Dmitry voice, admin panel)

This commit is contained in:
vrubel 2026-06-03 18:39:05 +00:00
commit ed3c1cf0ce
9 changed files with 498 additions and 0 deletions

101
README.md Normal file
View file

@ -0,0 +1,101 @@
# T2S Telegram Bot — Text-to-Speech
Сервис озвучивания текста через Telegram. Пользователь отправляет текст — получает голосовое сообщение голосом Дмитрия (Microsoft edge-tts). Администратор получает копию каждой озвучки с информацией об отправителе.
## Быстрый старт
```bash
# Запустить сервис
docker compose up -d
# Посмотреть логи
docker compose logs -f
# Остановить
docker compose down
```
### Первичная настройка
1. Напиши `/start` **админ-боту** (токен `ADMIN_BOT_TOKEN`) — он запомнит твой `chat_id`
2. После этого все сообщения пользователей будут дублироваться тебе с аудио + информацией
3. Любой пользователь может писать текст **пользовательскому боту** (токен `USER_BOT_TOKEN`) и получать озвучку
## Архитектура
```mermaid
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) используйте для сборки:
```bash
DOCKER_BUILDKIT=0 docker build --network=host -t t2s-telegram-bot ./app
```