Skip to content

Latest commit

 

History

History
340 lines (277 loc) · 11.2 KB

File metadata and controls

340 lines (277 loc) · 11.2 KB

AI Secretary System - Итоговая сводка

Что создано

Полноценная система виртуального секретаря с клонированием голоса (Анна/Марина), способная:

  • Принимать телефонные звонки (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 сервер

Технологический стек

AI & ML

  • XTTS v2 (Coqui TTS) - клонирование голоса с streaming synthesis
  • Vosk / Whisper - распознавание речи (realtime/batch)
  • vLLM (Qwen2.5-7B + LoRA) - локальный LLM
  • Cloud LLM (Gemini, OpenAI, Claude, DeepSeek, OpenRouter) - fallback

Backend

  • FastAPI - веб-фреймворк (~115 endpoints)
  • Python 3.12+ - язык программирования
  • Vue 3 PWA - админ-панель (13 вкладок)
  • SQLite + Redis - база данных и кэширование

Telephony

  • Twilio - облачная телефония
  • SIM7600G-H - GSM модем (в разработке)
  • Audio Pipeline - 8kHz PCM16, G.711 A-law

Infrastructure

  • Docker + Docker Compose - контейнеризация
  • CUDA 12.x - GPU ускорение
  • GitHub Actions - CI/CD

Архитектура (схема)

┌──────────────┐
│   Телефон    │
└──────┬───────┘
       │
       ↓ (Twilio)
┌──────────────────┐
│  Phone Service   │ :8001
│  Прием звонков   │
└────────┬─────────┘
         │
         ↓
┌────────────────────────┐
│    Orchestrator        │ :8000
│  Координация потока    │
└──┬──────┬──────┬───────┘
   │      │      │
   ↓      ↓      ↓
┌─────┐┌────┐┌─────┐
│ STT ││LLM ││ TTS │
└─────┘└────┘└─────┘

API Endpoints

Orchestrator (localhost:8000)

Endpoint Метод Описание
/ GET Информация о системе
/health GET Проверка здоровья
/tts POST Синтез речи
/stt POST Распознавание речи
/chat POST Чат с LLM
/process_call POST Полный цикл обработки
/reset_conversation POST Сброс истории диалога

Phone Service (localhost:8001)

Endpoint Метод Описание
/ GET Информация о сервисе
/status GET Статус телефонии
/incoming_call POST Webhook входящих звонков
/handle_speech POST Обработка записанной речи
/continue_or_end POST Продолжение диалога

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

1. Установка

./setup.sh

2. Настройка

nano .env
# Добавьте GEMINI_API_KEY

3. Запуск

./run.sh

4. Тест

curl 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 ✅

Производительность

Типичная обработка звонка (batch)

  1. STT (Vosk/Whisper): ~0.5-1 сек
  2. LLM (vLLM/Cloud): ~1-2 сек
  3. TTS (XTTS v2 batch): ~2-3 сек
  4. Общее время: ~4-6 секунд

Streaming TTS для телефонии

  • 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.

Настройка под себя

1. Системный промпт секретаря

Редактируйте llm_service.py, метод _default_system_prompt():

return """
Ты - секретарь компании "Моя Компания".
График: Пн-Пт 9-18
Телефон: +7 123 456-78-90
...
"""

2. Информация о компании

Добавьте в промпт:

  • Название компании
  • Услуги/продукты
  • График работы
  • Контакты
  • Часто задаваемые вопросы

3. Стиль общения

Настройте тон:

  • Формальный / неформальный
  • Краткий / развернутый
  • Дружелюбный / строгий

Интеграция с Twilio

Шаг 1: Регистрация

  1. Зарегистрируйтесь на https://twilio.com
  2. Получите бесплатный пробный номер
  3. Скопируйте Account SID и Auth Token

Шаг 2: Настройка .env

TWILIO_ACCOUNT_SID=ACxxxx...
TWILIO_AUTH_TOKEN=your_token
TWILIO_PHONE_NUMBER=+1234567890

Шаг 3: Webhook

В Twilio Console настройте входящие звонки:

  • URL: https://your-domain.com/incoming_call
  • Method: POST

Шаг 4: Публичный URL

Используйте ngrok для тестирования:

ngrok http 8001

Deployment

Development (локально)

./run.sh

Production (Docker)

docker-compose up -d
docker-compose logs -f

Масштабирование

docker-compose up -d --scale orchestrator=3

Мониторинг

Логи звонков

ls -lh calls_log/
cat calls_log/call_*_transcript.txt

Здоровье системы

curl http://localhost:8000/health | jq

GPU мониторинг

watch -n 1 nvidia-smi

Troubleshooting

Проблема Решение
CUDA out of memory Уменьшите размер моделей (base → small)
Медленная работа Проверьте GPU, используйте faster-whisper
Плохое качество голоса Проверьте образцы в Марина/, добавьте больше
API ошибки Gemini Проверьте GEMINI_API_KEY в .env
Twilio не подключается Проверьте webhook URL, используйте ngrok

Roadmap

Недавно реализовано ✅

  • 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

Полезные ссылки

Контакты и поддержка

Вопросы? Проблемы? Предложения?

  • Создайте Issue в репозитории
  • Проверьте документацию в README.md
  • Посмотрите примеры в examples.md

Система готова к использованию! 🚀

Начните с ./setup.sh и следуйте инструкциям в QUICKSTART.md