Полноценная система виртуального секретаря с клонированием голоса (Анна/Марина), способная:
- Принимать телефонные звонки (Twilio, готовится SIM7600G-H GSM)
- Распознавать речь абонента (STT - Vosk/Whisper)
- Генерировать умные ответы (LLM - vLLM локальный или Cloud)
- Отвечать клонированным голосом (XTTS v2 TTS)
- Streaming TTS для real-time телефонии (<500ms latency)
voice-tts/
│
├── 📄 Основные сервисы
│ ├── orchestrator.py # Главный координатор (FastAPI)
│ ├── phone_service.py # Телефонная интеграция (Twilio)
│ ├── voice_clone_service.py # Клонирование голоса (XTTS v2)
│ ├── stt_service.py # Распознавание речи (Whisper)
│ └── llm_service.py # Генерация ответов (Gemini)
│
├── 🔧 Конфигурация
│ ├── .env # Переменные окружения (API ключи)
│ ├── requirements.txt # Python зависимости
│ ├── docker-compose.yml # Docker оркестрация
│ ├── Dockerfile.orchestrator # Образ оркестратора
│ └── Dockerfile.phone # Образ телефонного сервиса
│
├── 🚀 Скрипты
│ ├── setup.sh # Установка системы
│ ├── run.sh # Запуск системы
│ └── test_system.sh # Тестирование
│
├── 📚 Документация
│ ├── README.md # Полная документация
│ ├── QUICKSTART.md # Быстрый старт
│ ├── ARCHITECTURE.md # Архитектура системы
│ ├── examples.md # Примеры использования
│ └── PROJECT_SUMMARY.md # Эта сводка
│
├── 🎤 Данные
│ ├── Марина/ # 54 WAV образца голоса
│ ├── models/ # TTS модели (ONNX)
│ ├── temp/ # Временные файлы
│ └── calls_log/ # Логи звонков
│
└── 🗑️ Прочее
├── .gitignore # Исключения для git
├── server.py # Старый edge-tts сервер
└── tts_server.py # Старый TTS сервер
- XTTS v2 (Coqui TTS) - клонирование голоса с streaming synthesis
- Vosk / Whisper - распознавание речи (realtime/batch)
- vLLM (Qwen2.5-7B + LoRA) - локальный LLM
- Cloud LLM (Gemini, OpenAI, Claude, DeepSeek, OpenRouter) - fallback
- FastAPI - веб-фреймворк (~115 endpoints)
- Python 3.12+ - язык программирования
- Vue 3 PWA - админ-панель (13 вкладок)
- SQLite + Redis - база данных и кэширование
- Twilio - облачная телефония
- SIM7600G-H - GSM модем (в разработке)
- Audio Pipeline - 8kHz PCM16, G.711 A-law
- Docker + Docker Compose - контейнеризация
- CUDA 12.x - GPU ускорение
- GitHub Actions - CI/CD
┌──────────────┐
│ Телефон │
└──────┬───────┘
│
↓ (Twilio)
┌──────────────────┐
│ Phone Service │ :8001
│ Прием звонков │
└────────┬─────────┘
│
↓
┌────────────────────────┐
│ Orchestrator │ :8000
│ Координация потока │
└──┬──────┬──────┬───────┘
│ │ │
↓ ↓ ↓
┌─────┐┌────┐┌─────┐
│ STT ││LLM ││ TTS │
└─────┘└────┘└─────┘
| Endpoint | Метод | Описание |
|---|---|---|
/ |
GET | Информация о системе |
/health |
GET | Проверка здоровья |
/tts |
POST | Синтез речи |
/stt |
POST | Распознавание речи |
/chat |
POST | Чат с LLM |
/process_call |
POST | Полный цикл обработки |
/reset_conversation |
POST | Сброс истории диалога |
| Endpoint | Метод | Описание |
|---|---|---|
/ |
GET | Информация о сервисе |
/status |
GET | Статус телефонии |
/incoming_call |
POST | Webhook входящих звонков |
/handle_speech |
POST | Обработка записанной речи |
/continue_or_end |
POST | Продолжение диалога |
./setup.shnano .env
# Добавьте GEMINI_API_KEY./run.shcurl http://localhost:8000/health- CPU: 4 cores
- RAM: 16GB
- Диск: 10GB
- GPU: Опционально (CPU режим доступен)
- CPU: 8+ cores
- RAM: 32GB+
- Диск: 20GB SSD
- GPU: NVIDIA с 12GB+ VRAM (RTX 3060/4060)
- GPU 1: NVIDIA P104-100 (8GB)
- GPU 2: NVIDIA GeForce RTX 3060 (12GB)
- Всего: 20GB VRAM ✅
- RAM: 64GB ✅
- STT (Vosk/Whisper): ~0.5-1 сек
- LLM (vLLM/Cloud): ~1-2 сек
- TTS (XTTS v2 batch): ~2-3 сек
- Общее время: ~4-6 секунд
- Time-to-first-audio (TTFA): 300-500ms target
- Real-time factor (RTF): 0.5-0.9x
- Формат: 8kHz PCM16 для GSM
- Streaming TTS: первый звук через <500ms
- Vosk realtime STT вместо Whisper batch
- vLLM с LoRA для локального LLM
- Кэширование speaker latents
- Audio pipeline с crossfade для плавности
В папке Марина/ уже есть:
- ✅ 54 WAV файла (~50MB)
- ✅ Качественные записи
- ✅ Достаточно для отличного клонирования
Система автоматически использует первые 3 файла для few-shot learning.
Редактируйте llm_service.py, метод _default_system_prompt():
return """
Ты - секретарь компании "Моя Компания".
График: Пн-Пт 9-18
Телефон: +7 123 456-78-90
...
"""Добавьте в промпт:
- Название компании
- Услуги/продукты
- График работы
- Контакты
- Часто задаваемые вопросы
Настройте тон:
- Формальный / неформальный
- Краткий / развернутый
- Дружелюбный / строгий
- Зарегистрируйтесь на https://twilio.com
- Получите бесплатный пробный номер
- Скопируйте Account SID и Auth Token
TWILIO_ACCOUNT_SID=ACxxxx...
TWILIO_AUTH_TOKEN=your_token
TWILIO_PHONE_NUMBER=+1234567890В Twilio Console настройте входящие звонки:
- URL:
https://your-domain.com/incoming_call - Method: POST
Используйте ngrok для тестирования:
ngrok http 8001./run.shdocker-compose up -d
docker-compose logs -fdocker-compose up -d --scale orchestrator=3ls -lh calls_log/
cat calls_log/call_*_transcript.txtcurl http://localhost:8000/health | jqwatch -n 1 nvidia-smi| Проблема | Решение |
|---|---|
| CUDA out of memory | Уменьшите размер моделей (base → small) |
| Медленная работа | Проверьте GPU, используйте faster-whisper |
| Плохое качество голоса | Проверьте образцы в Марина/, добавьте больше |
| API ошибки Gemini | Проверьте GEMINI_API_KEY в .env |
| Twilio не подключается | Проверьте webhook URL, используйте ngrok |
- Real-time streaming TTS (<500ms TTFA)
- WebSocket endpoint для телефонии
- GSM audio pipeline (8kHz, G.711)
- Benchmark скрипт для latency
- SIM7600G-H GSM модем интеграция
- WebRTC для браузерных звонков
- Asterisk/FreeSWITCH интеграция
- Календарь интеграция
- CRM интеграция (Битрикс24)
- Multi-language support
- Emotion detection
- Voice analytics
- Custom wake words
- Mobile app
- Gemini API: https://makersuite.google.com/
- Twilio: https://www.twilio.com/
- XTTS v2 Docs: https://docs.coqui.ai/en/latest/models/xtts.html
- Whisper: https://github.com/openai/whisper
- FastAPI: https://fastapi.tiangolo.com/
Вопросы? Проблемы? Предложения?
- Создайте Issue в репозитории
- Проверьте документацию в README.md
- Посмотрите примеры в examples.md
Система готова к использованию! 🚀
Начните с ./setup.sh и следуйте инструкциям в QUICKSTART.md