pocket-tts-ru

Русская модель для pocket-tts: 6-слойный синтезатор речи с клонированием голоса, работающий на CPU.

Получена дообучением english_2026-04_24l на русском корпусе и дистилляцией 24-слойного учителя.

Использование

uvx pocket-tts generate \
    --config hf://amekhrishvili/pocket-tts-ru/russian.yaml \
    --voice ваш_голос.wav \
    --text "прив+ет, +это т+ест" \
    --out out.wav

Текст обязательно нужно готовить

Модель обучена на тексте с ударениями (знак + перед ударной гласной) и с раскрытыми числами. Сырую строку подавать нельзя: ударения поедут, а цифры прочитаются непредсказуемо.

from silero_stress import load_accentor
from runorm import RUNorm

accentor = load_accentor()
normalizer = RUNorm()
normalizer.load(model_size="small", device="cpu")

text = normalizer.norm("В 2026 году вышло 5 моделей.")
text = accentor(text)   # -> "в две т+ысячи двадц+ать шест+ом год+у ..."

Те же самые шаги применялись при подготовке обучающих данных. Расхождение между обучением и инференсом — главная причина плохого звучания.

Ограничения

  • Длинный текст. В pocket-tts зашит предел в 50 токенов на чанк, откалиброванный на английском токенизаторе. Русский с ударениями даёт больше токенов на секунду речи, поэтому длинные фразы обрезаются. Синтезируйте по предложениям либо поднимайте max_tokens.
  • Омографы. Ударения расставляет внешний препроцессор; ошибки на «замок/замок» наследуются от него, модель их не исправляет.
  • Качество промпта воспроизводится. Шумная запись голоса даст шумный синтез. Нужно 10–20 секунд чистой речи одного диктора.

Данные и лицензия

Обучено на ESpeech-podcasts (около 1200 часов). Датасет распространяется под CC-BY-NC-4.0, и это ограничение переходит на модель: только некоммерческое, исследовательское и образовательное использование.

Базовая модель — kyutai/pocket-tts.

Параметры обучения

  • база: english_2026-04_24l, текстовый эмбеддинг переинициализирован
  • токенизатор: SentencePiece BPE, 4000 токенов, обучен на русском с ударениями
  • слоёв: 6
  • температура по умолчанию: 0.7

24-слойная модель-учитель (teacher_24l/)

Тот же корпус, но 24 слоя вместо 6. Опубликована как база для дообучения и дистилляции, а не как готовый синтезатор.

# в своём training-конфиге pocket-tts
model_config: pocket_tts/config/english_2026-04_24l.yaml
model_overrides:
  flow_lm.lookup_table.tokenizer_path: hf://amekhrishvili/pocket-tts-ru/tokenizer.model
start_from_pretrained: true
reset_text_embedding: false   # токенизатор тот же, эмбеддинг сбрасывать не нужно

Веса подставляются через weights_path в конфиге модели: hf://amekhrishvili/pocket-tts-ru/teacher_24l/model.safetensors

Важно: через обычный инференс она звучит хуже, чем есть

24-слойной модели нужен classifier-free guidance с коэффициентом около 2.0. Публичный путь pocket-tts generate работает без CFG — он рассчитан на 6-слойного ученика, в которого guidance запечён на дистилляции. Так что прямое сравнение учителя и ученика через CLI некорректно и не в пользу учителя.

Для чего её стоит брать:

  • дообучение на свой домен или своего диктора (быстрее, чем от английской базы);
  • дистилляция в собственного 6-слойного ученика с другими настройками;
  • исследования, где нужен доступ к CFG через тренировочный код.

Для синтеза берите 6-слойную модель из корня репозитория: она быстрее на CPU и звучит лучше через стандартный путь.

Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for amekhrishvili/pocket-tts-ru

Finetuned
(28)
this model