Инструменты5 сентября 2026 г., 13:45 МСК🤖 Auto

Pocket-TTS-RU: Русский синтез речи на CPU с клонированием голоса

Появилась 6-слойная модель pocket-tts-ru, способная синтезировать речь и клонировать голос прямо на CPU. Модель обучена на 1200 часах подкастов и требует строгой подготовки текста с ударениями.

Баннер новости 6843

Технические характеристики и архитектура

Модель pocket-tts-ru (автор amekhrishvili) представляет собой дообученную версию базовой модели english_2026-04_24l от Kyutai. Ключевая особенность — оптимизация для работы на CPU без потери качества, что делает её доступной для локального развертывания на обычных устройствах. Модель прошла дистилляцию от 24-слойного учителя, что позволило сократить количество параметров до 0.1B, сохранив при этом высокую интеллигибельность.

Обучение проводилось на корпусе ESpeech-podcasts объемом около 1200 часов. Лицензия модели — CC-BY-NC-4.0, что ограничивает использование некоммерческими, исследовательскими и образовательными целями.

Сравнение версий и производительность

В репозитории представлены две версии модели: финальная 6-слойная (ученик) и 24-слойная (учитель). Важно понимать разницу в их применении, так как прямое сравнение через стандартный CLI некорректно из-за различий в алгоритмах вывода (CFG).

Характеристика 6-слойная (pocket-tts-ru) 24-слойная (teacher_24l)
Назначение Готовый синтез речи (инференс) Дообучение и дистилляция
Параметры 0.1B Информация недостаточна (значительно больше)
Токенизатор SentencePiece BPE, 4000 токенов Унаследован от базы
Температура 0.7 (по умолчанию) Требует CFG ~2.0
Качество звука Высокое (через стандартный CLI) Ниже без Classifier-Free Guidance

Критическое требование: подготовка текста

Главная причина плохого звучания модели — расхождение между этапами обучения и инференса. Модель обучена на тексте с проставленными ударениями (знак + перед ударной гласной) и полностью раскрытыми числами. Подача «сырой» строки приводит к непредсказуемому чтению цифр и сбиванию интонации.

Для корректной работы необходимо использовать препроцессинг. Пример на Python с использованием библиотек silero_stress и runorm:

  • Нормализация чисел: преобразование «2026» в «две тысячи двадцать шесть».
  • Расстановка ударений: автоматическое добавление знака +.

Пример вывода после обработки: "в две т+ысячи двадц+ать шест+ом год+у ..."

Ограничения и рекомендации

Модель имеет ряд технических ограничений, о которых нужно знать перед внедрением:

  1. Длина текста: Лимит составляет 50 токенов на чанк. Из-за более длинных русских слов с ударениями длинные фразы могут обрезаться. Рекомендуется синтезировать текст по предложениям или увеличивать параметр max_tokens.
  2. Омографы: Модель не исправляет ошибки препроцессора. Если ударение в слове «замок» (дверь/форт) поставлено неверно, ошибка будет зафиксирована в аудио.
  3. Клонирование голоса: Качество промпта критично. Требуется 10–20 секунд чистой речи одного диктора. Шумная запись приведет к шумному синтезу.

Как запустить

Для генерации аудио используйте команду uvx. Не забудьте передать путь к файлу голоса и предварительно обработанный текст:

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

Источник: Huggingface ↗