Instructions to use genvoice/xVibePocketTTS with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Pocket-TTS
How to use genvoice/xVibePocketTTS with Pocket-TTS:
from pocket_tts import TTSModel import scipy.io.wavfile tts_model = TTSModel.load_model("genvoice/xVibePocketTTS") voice_state = tts_model.get_state_for_audio_prompt( "hf://kyutai/tts-voices/alba-mackenna/casual.wav" ) audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.") # Audio is a 1D torch tensor containing PCM data. scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy()) - Notebooks
- Google Colab
- Kaggle
xVibePocketTTS
Full fine-tune Pocket TTS на русской речи
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.
- Downloads last month
- -
Model tree for genvoice/xVibePocketTTS
Base model
kyutai/pocket-tts