# Rusvoice

> Подготовить русский текст к озвучке и увидеть, что тракт с ним сделает, ДО синтеза: ударения, словарь брендов (Knight Capital в «Найт Кэпитал»), твёрдая «э» в заимствованиях, аббревиатуры по буквам (ТЗ в «тэ-зэ»), числа прописью. Ставит CLI rusvoice, ядро которого стоит на голой стандартной библиотеке и едет в любое чужое окружение. Используй, когда человек озвучивает текст, жалуется на неверные ударения или на то, что диктор читает бренды и аббревиатуры не так. Триггеры: «озвучь текст», «русская озвучка», «неправильное ударение в озвучке», «как прочитается бренд», «подготовь текст к синтезу», «tts на русском», «rusvoice», «клонировать голос».

- Skill: `ilyautov/rusvoice` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ilyautov/rusvoice`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ilyautov/rusvoice/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ilyautov (https://skillmd.com/u/ilyautov)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ilyautov/rusvoice

---


# rusvoice: слой правки текста перед синтезом

Клонировать голос умеет открытый код. Дефицитен слой ПЕРЕД синтезом: ударения,
бренды, заимствования, аббревиатуры, числа. И возможность увидеть результат до
того, как его услышишь.

## Установка

```bash
pip install rusvoice                    # ядро: explain / lint / dict / doctor
pip install "rusvoice[accent,ui]"       # + ударения (RUAccent) и экран
pip install "rusvoice[voice,accent]"    # + сам синтез (F5)
```

Ядро зависимостей не имеет и ставится куда угодно. Экстра `voice` тянет torch,
веса качаются при первом запуске, около 2,5 ГБ: предупреди человека до того, как
запускать установку.

## Главная команда

```bash
rusvoice explain "Компания Knight Capital потеряла 440 миллионов, ТЗ было на MVP."
```

Печатает вход, выход и что сделал каждый слой, а внизу честно говорит, чего в
окружении нет. Вот эта нижняя часть и есть смысл затеи: без неё окружение
промолчало бы, а озвучка вышла бы с неверными ударениями.

## Остальное

- `rusvoice lint scenario.json`: находит места, где тракт прочтёт не то, и
  подсказывает, что дописать в словарь.
- `rusvoice dict add brands Netlify Нетлифай`: пополнить словарь.
  `dict hear brands Netlify` даёт услышать запись, а не прочитать её.
- `rusvoice doctor`: что доступно именно этому интерпретатору.
- `rusvoice say "реплика" --out o.wav`: синтез, если стоит экстра `voice`.

## Как себя вести

**Запускай тем же интерпретатором, каким пойдёт синтез.** RUAccent и F5 обычно
живут в другом окружении, и `doctor` показывает это честно: в этом половина его
смысла. Проверь `doctor` прежде, чем обещать человеку правильные ударения.

Не переписывай текст за автора ради удобства синтеза. Задача слоя в том, чтобы
диктор прочитал написанное правильно, а не в том, чтобы упростить фразу.

Если читаешь вывод из своего кода на Windows, указывай кодировку явно:
`subprocess.run(..., text=True, encoding="utf-8")`. Без неё Python декодирует по
кодировке системы и отдаёт `None`, что выглядит как «CLI ничего не напечатал».

## Рядом

[github.com/ilyautov](https://github.com/ilyautov), лаборатория
[AI Frontier](https://aifrontier.tech).

