101 lines
3.8 KiB
Markdown
101 lines
3.8 KiB
Markdown
# 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
|
||
```
|