Репорт по установке и пример

#2
by TreeLoys - opened

Репорт: что нужно знать при установке Shtorm-PocketTTS-RU

Сводка по развёртыванию русской TTS-модели ArtShtorm/Shtorm-PocketTTS-RU
локально на Windows. Написано по итогам реальной установки (октябрь 2026), все пункты проверены на практике.

Пример получившийся ниже:

1. Установка

Достаточно скинуть ссылку на реп курсору или zcode.

2. Системные требования

Что Требование Факт на этой машине
Python 3.10 – 3.14 3.13.12 (miniconda G:\conda\miniconda)
PyTorch ≥ 2.5, достаточно CPU-сборки 2.14.1 CPU (~200 МБ, без CUDA-пакетов)
Библиотека pocket-tts 3.3.0
Дополнительно scipy (запись wav) 1.18.1
ffmpeg и прочее не нужно — 16-битные wav читает встроенный модуль wave —
Место на диске ~1 ГБ (fast-веса 438 МБ + venv ~700 МБ) —
GPU не обязателен см. раздел 6

Установка целиком: python -m venv .venv → pip install pocket-tts scipy. На Windows стандартные
wheels torch с PyPI уже CPU-only, CUDA-тонна (гигабайты) не тянется — это и есть «минимум зависимостей».

3. Главная ловушка: модель не грузится через (это фиаско, баратан) hf://

В конфигах на HuggingFace (config.yaml, config_fast.yaml, config_slow.yaml) пути весов и
токенайзера записаны как:

hf://ArtShtorm/Shtorm_PocketTTS_RU/model_fast.safetensors   ← подчёркивания

а репозиторий на самом деле называется ArtShtorm/Shtorm-PocketTTS-RU (дефисы). То есть
TTSModel.load_model(config="hf://ArtShtorm/Shtorm-PocketTTS-RU/config.yaml") из примера карточки
упадёт — библиотека пойдёт к несуществующему repo id. Решение, использованное здесь:

  1. Скачать вручную: config.yaml, config_slow.yaml, tokenizer.model, model_fast.safetensors
    (slow-веса model_slow.safetensors — ещё 438 МБ, качать только если нужен slow-вариант).
  2. В конфиге заменить пути на локальные: weights_path: model_fast.safetensors,
    tokenizer_path: tokenizer.model.

Вторая ловушка про пути: у pocket-tts относительные пути в конфиге резолвятся от текущей рабочей
директории, а не от папки конфига
. Поэтому скрипт tts.py перед загрузкой делает os.chdir(model/).
Если пишете свой код — либо делайте так же, либо прописывайте в конфиге абсолютные пути.

4. Голос: без референса не заведётся

  • Готовых голосов в репозитории нет — pretrained-голоса pocket-tts английские и с кастомными
    весами всё равно не работают (библиотека это явно запрещает).
  • Нужен wav-референс: ~5 секунд чистой речи (без музыки и шума), обязательно законченная фраза,
    а не обрывок. Длинный референс (>30 сек) библиотека сама обрежет, но лучше короткий.
  • Формат: обычный 16-бит PCM wav читается без доп. зависимостей; mp3/flac потребуют soundfile.
  • Для теста референс можно получить локально: встроенный в Windows SAPI-голос (у нас — «Microsoft
    Irina Desktop», ru-RU) пишет нормальный wav через PowerShell System.Speech. Тембр роботизируется,
    но для проверки пайплайна хватает; для реальной начитки подставьте живой голос.

5. Текст: три правила качества

  1. Ударения проставлять комбинируемым акутом U+0301: го́род, не́бо. Без ударений модель
    говорит заметно хуже — для аудиокниг это главный источник качества.
  2. Латиница и цифры не поддерживаются: USB, 2022 надо заранее заменять русскими словами
    («юэсбэ», «две тысячи двадцать второй»).
  3. Куски по 120–180 символов: длинный текст бить по границам предложений (скрипт tts.py
    делает это сам для .txt-входа).

Известные артефакты модели (из карточки, подтвердились):

  • редкий стохастический глитч — кусок генерируется полной тишиной (у нас случился 1 раз).
    Лечится перегенерацией; tts.py детектирует тишину и повторяет сам (до 3 попыток);
  • паузы после знаков препинания бывают неоправданно длинными;
  • к концу длинного куска громкость спадает — лечится пост-нормализацией громкости.

6. Железо: CPU достаточно, GPU — опция

  • Замер на CPU этой машины: 92 символа → 5.8 сек аудио за 2.2 сек, т.е. ~2.5–2.7x реального
    времени
    . Модель грузится ~2.5 сек. Для аудиокниг CPU-режима хватает с запасом.
  • GPU-режим в pocket-tts официально не поддерживается (model.to("cuda") вручную; авторы
    обещают ~2.6x на T4).
  • P106-100: карта видна (драйвер 472.12, CUDA 11.4, 6 ГБ VRAM — модели хватает с огромным
    запасом), но это Pascal (sm_61). Из современных сборок torch её поддерживает только ветка
    cu118 (последняя с ядрами Pascal): pip install torch --index-url https://download.pytorch.org/whl/cu118
    — это ~2.8 ГБ скачивания. Новее (cu126/cu128/cu130) карту не увидят.
  • Важно: int8-квантование (quantize=True, даёт +27% скорости) работает только на CPU.
  • Практический вывод: ставить GPU-сборку ради этой модели смысла мало — выигрыш до ~2x против
    уже «быстрее реального времени» на CPU ценой гигабайтов зависимостей.

7. Чек-лист установки с нуля (Windows)

cd G:\AI\TestShtorm-Poc
python -m venv .venv
.venv\Scripts\python.exe -m pip install pocket-tts scipy

:: скачать файлы модели из HF в model\ :
::   config.yaml, config_slow.yaml, tokenizer.model, model_fast.safetensors
:: в config.yaml заменить hf://...-пути на локальные имена файлов (см. раздел 3)

:: проверка:
.venv\Scripts\python.exe tts.py "Се́рое не́бо висе́ло над го́родом." -o out.wav

Признак, что всё хорошо: в логе «N симв. -> M с аудио за K с», а в готовом wav есть звук
(peak > 0.1). Если вышла тишина — просто перезапустить (см. раздел 5).

8. Версии, на которых проверено

python 3.13.12 · pocket-tts 3.3.0 · torch 2.14.1 (CPU) · scipy 1.18.1 · numpy 2.5.3 ·
sentencepiece 0.2.2 · safetensors 0.8.0. Windows 10 19042, драйвер NVIDIA 472.12.

"3. Главная ловушка: модель не грузится через" - извиняюсь поправил

Sign up or log in to comment