xVibePocketTTS

Full fine-tune Pocket TTS на русской речи

Демо модели · GitHub · GenVoice · Базовая модель Kyutai

xVibePocketTTS — лёгкая модель синтеза речи (TTS), рассчитанная на эффективную работу на CPU. Для генерации аудио не нужны видеокарта или внешние API: речь можно синтезировать локально, установив библиотеку и вызвав функцию Python.

В демо доступны три готовых голоса, загрузка собственного образца и настройка ударений.

Главное

  • Работает на CPU, видеокарта не обязательна.
  • Небольшой размер: около 90 млн параметров в FlowLM.
  • Потоковая генерация аудио.
  • Низкая задержка: около 193 мс до первого аудиофрагмента на Ryzen 7 3700X после прогрева.
  • Быстрее реального времени: 2,42× на Ryzen 7 3700X и 7,26× на RTX 3090.
  • Python API и CLI.
  • Клонирование голоса по короткому аудиообразцу.
  • Русский язык и управление ударениями.
  • Обработка длинных текстов с разбиением на фрагменты.
  • У оригинального Pocket TTS есть реализации для запуска на стороне клиента в браузере.

Скорость синтеза

В 2,42 раза быстрее реального времени на Ryzen 7 3700X и в 7,26 раза — на RTX 3090.

Оборудование RTF ↓ Скорость относительно реального времени ↑ Первый аудиофрагмент (TTFA) ↓ Весь фрагмент
Ryzen 7 3700X · CPU 0,412 2,42× ≈193 мс 29,36 с речи за 12,17 с
RTX 3090 · GPU 0,138 7,26× ≈37,5 мс 29,2 с речи за 3,97 с

Условия: step80000, температура 0.5, EOS −1, FP32, batch 1; один и тот же русский текст и один мужской голосовой референс. Показаны медианы пяти повторов после прогрева. Загрузка модели и подготовка состояния голоса измерялись отдельно и в эти значения не входят.

RTF — время синтеза, делённое на длительность аудио: чем меньше, тем быстрее. TTFA — время до первого аудиофрагмента при потоковом синтезе.

Быстрый запуск

Код для запуска — GenVoice/xVibePocketTTS на GitHub. Пакет устанавливает Pocket TTS и RUAccent, автоматически загружает русские веса и включает три готовых голоса.

Установите uv, затем выполните:

git clone https://github.com/GenVoice/xVibePocketTTS.git
cd xVibePocketTTS
uv sync --python 3.12 --extra demo --frozen
uv run xvibe-tts generate --text "Привет! Это проверка русской речи." --output output.wav

Для локального веб-демо запустите uv run xvibe-tts serve и откройте http://127.0.0.1:7860. При первом запуске веса и ресурсы RUAccent скачиваются автоматически и сохраняются в кэше.

Пример Python — сохраните в example.py и выполните uv run python example.py из папки проекта:

import soundfile as sf
from xvibe_pocket_tts import RussianTTS

tts = RussianTTS()
audio = tts.generate("Привет! Это проверка русской речи.", voice="male_deep")
sf.write("output.wav", audio.numpy(), tts.sample_rate)

Готовые голоса: male_deep, female_silky, male_authoritative.

В GitHub-репозитории есть WAV-референс male_deep. Пример клонирования из аудиофайла после клонирования репозитория и установки пакета:

uv run xvibe-tts generate --text "Этот голос клонирован из аудиообразца." --voice examples/voices/male_deep.wav

В Python передайте voice="examples/voices/male_deep.wav" в tts.generate(). Для собственного голоса замените путь на путь к вашему аудиообразцу.

RUAccent включён по умолчанию. Ручное ударение можно задать плюсом перед гласной (з+амок) или символом U+0301 после неё (за́мок); оно имеет приоритет над автоматическим. Обработка текста выполняется в пакете — сами веса автоматически ударения не расставляют. Примеры потокового синтеза, работы на GPU и дополнительных настроек — в README проекта.

Обучение

Стартовали с английского checkpoint english_2026-04, сохранив знания базовой модели. Выполнено полное дообучение FlowLM и обучающих голов; аудиокодек Mimi оставался замороженным. Русский токенизатор поддерживает кириллицу, «ё» и явное ударение U+0301.

Параметр Значение
Обучающая выборка 1 884,72 часа русской речи
Оборудование Одна RTX 3090, 24 ГБ
Эффективный batch 64
Оптимизатор AdamW, LR 2e-5, warmup и cosine decay
Финальный обучающий запуск ≈130 тыс. шагов, 8,48 эпохи
Активное время обучения 37 ч 14 мин
Выбранный checkpoint step80000 — по результатам прослушивания и оценки

Качество и ограничения

На проверке из 800 генераций при температуре 0.5 и EOS −1: WER 7,80%, CER 4,80%, потеря окончания 7,63%. Порог EOS подбирался на этой же выборке, поэтому это результаты калибровки, а не независимого финального теста.

Качество зависит от голоса и чистоты референса. Некоторые голоса и отдельные слова могут звучать неудачно; ошибки произношения и потеря окончаний полностью не устранены.

Благодарности

  • Kyutai — за архитектуру, аудиокодек Mimi и базовую модель Pocket TTS.
  • ESpeech и Lab260 — за работу над русскоязычными речевыми данными.
Файлы репозитория
  • model/model.safetensors — веса модели.
  • model/tokenizer.model, model/tokenizer.vocab — русский токенизатор.
  • voices/ — три готовых состояния голоса для этого checkpoint.
  • config.yaml — конфигурация со ссылками на закреплённую версию весов и токенизатора.
  • RUNTIME.json — параметры генерации и происхождение версии.
  • SHA256SUMS — контрольные суммы весов, токенизатора и голосов.

Лицензии базовой модели

Базовые веса Kyutai Pocket TTS заявлены под CC BY 4.0, исходный код — MIT.

GenVoice · Telegram сервиса · xVibeNot

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for genvoice/xVibePocketTTS

Finetuned
(21)
this model