Instructions to use ArtShtorm/Shtorm-PocketTTS-RU with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Pocket-TTS
How to use ArtShtorm/Shtorm-PocketTTS-RU with Pocket-TTS:
from pocket_tts import TTSModel import scipy.io.wavfile tts_model = TTSModel.load_model("ArtShtorm/Shtorm-PocketTTS-RU") 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
Репорт по установке и пример
Репорт: что нужно знать при установке 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. Решение, использованное здесь:
- Скачать вручную:
config.yaml,config_slow.yaml,tokenizer.model,model_fast.safetensors
(slow-весаmodel_slow.safetensors— ещё 438 МБ, качать только если нужен slow-вариант). - В конфиге заменить пути на локальные:
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 через PowerShellSystem.Speech. Тембр роботизируется,
но для проверки пайплайна хватает; для реальной начитки подставьте живой голос.
5. Текст: три правила качества
- Ударения проставлять комбинируемым акутом U+0301:
го́род,не́бо. Без ударений модель
говорит заметно хуже — для аудиокниг это главный источник качества. - Латиница и цифры не поддерживаются:
USB,2022надо заранее заменять русскими словами
(«юэсбэ», «две тысячи двадцать второй»). - Куски по 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. Главная ловушка: модель не грузится через" - извиняюсь поправил