Newer
Older
voice / docs / 04_roadmap.md

План реализации

Этап 1 — Каркас сервера ✅

  • Создать структуру проекта.
  • Настроить pyproject.toml, requirements.txt, .env.example.
  • Реализовать WebSocket сервер на FastAPI.
  • Описать Pydantic-модели протокола.
  • Реализовать сегментатор текста.
  • Реализовать абстракцию TTS engine + dummy backend.
  • Реализовать форматирование аудио (PCM16/base64).
  • Реализовать сессию с управлением буфером, очередью и прерыванием.
  • Добавить базовые тесты сегментатора.
  • Документировать архитектуру и протокол.

Этап 2 — Интеграция F5-TTS

  • Установить и настроить зависимости F5-TTS в pyproject.toml / requirements.txt.
  • Создать src/voice_tts/tts/f5_backend.py.
  • Подключить F5-TTS в _BACKEND_MAP в server.py.
  • Поддержать референсное аудио для клонирования голоса.
  • Автоматическая транскрипция референса, если ref_text не задан.
  • Загрузить модель F5TTS_v1_Base в models/F5TTS_v1_Base/.
  • Проверить загрузку модели на GPU.
  • Проверить настоящий инференс F5-TTS на GPU.
  • Добавить warm-up при старте сервера.
  • Замерить реальную латентность на GPU.
  • Реализовать предобработку текста и токенизацию для мультиязычности.

Этап 3 — Эмоции и голос

  • Определить набор поддерживаемых эмоций (neutral, happy, sad, angry, surprised, whisper).
  • Подготовить/сгенерировать референсы для каждой эмоции от одного спикера.
  • При смене эмоции автоматически выбирать соответствующий референс.
  • (Опционально) Добавить текстовые emotion prompts для усиления интонации.

Этап 4 — Оптимизации

  • Предварительная подготовка следующего сегмента (pre-fetch) параллельно с текущей генерацией.
  • Batching коротких сегментов, если они накопились.
  • Кроссфейд между аудио-сегментами для бесшовного воспроизведения.
  • Кэширование эмбеддингов референсных аудио.
  • Профилирование и замер Time-To-First-Byte (TTFB) и задержки между сегментами.

Этап 5 — Тестирование и совместимость

  • Запустить и замерить производительность на RTX 3090.
  • Проверить работу на RTX 3060 (VRAM/скорость).
  • Покрыть ключевые сценарии тестами:
    • стриминг текста,
    • flush,
    • stop/прерывание,
    • смена эмоции,
    • мультиязычные фразы.
  • Написать простого Python-клиента для демонстрации.
  • Добавить в README инструкции по развёртыванию.

Этап 6 — Продвинутые возможности

  • Опциональный Opus-кодек для экономии трафика.
  • REST endpoint для синхронного TTS (для простых случаев).
  • Автоматический выбор устройства (cuda / cpu) и dtype (bfloat16 / float16).
  • Graceful degradation: fallback на CPU, если GPU недоступна.