# Русская озвучка локально: почему начинать с Qwen3-TTS

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

// точка входа

## Не путай новость с рабочим маршрутом

История с VibeVoice звучит как готовый сюжет: Microsoft выложила TTS-модель, через 11 дней убрала код, сообщество сохранило форки, а вокруг сразу появилась легенда про бесплатную замену сервисам озвучки.

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

карточка 1 — значение «11 дней» / капшен «между релизом VibeVoice-TTS и удалением кода»; карточка 2 — значение «код ≠ веса» / капшен «удаление кода не равно исчезновению модели»; карточка 3 — значение «RU не заявлен» / капшен «в официальном списке VibeVoice для TTS русский не стоит». Ключевая — #3

// меньше Microsoft

## Что оставить от VibeVoice

От старого лонгрида достаточно оставить три факта. Первое: Microsoft действительно убрала TTS-код из репозитория, но не стерла всю историю проекта. Второе: у семейства VibeVoice есть разные ветки, и их нельзя складывать в один мешок. Третье: официальная realtime-ветка не дает прямого маршрута к русской озвучке.

- VibeVoice-1.5B - длинная TTS-модель с открытыми весами, но удаленным официальным TTS-кодом.
- VibeVoice-Realtime-0.5B - официальная streaming-модель, но без заявленного русского языка.
- Community-форки - рабочий, но неофициальный маршрут, где ответственность за код, ограничения и голос лежит на пользователе.

Этого хватает для контекста. Дальше центр материала должен уходить не в Microsoft, а в Qwen3-TTS: именно там русский указан в официальном списке, есть отдельные модели под готовые голоса и клонирование, и есть нормальный путь через пакет qwen-tts.

// главный маршрут

## Для русского главный герой - Qwen3-TTS

Qwen3-TTS вышла как открытая серия моделей для синтеза речи. В официальной документации прямо указаны 10 языков: китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский и итальянский.

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

строки «Модель → Для чего нужна»: Qwen3-TTS-12Hz-0.6B-CustomVoice → русская речь готовыми голосами; Qwen3-TTS-12Hz-0.6B-Base → voice clone по аудиореференсу; Qwen3-TTS-12Hz-1.7B → тяжелее, не обязательна для первой локальной демонстрации; VoiceDesign → голос по текстовому описанию

карточка 1 — значение «Russian» / капшен «язык указан официально»; карточка 2 — значение «0.6B» / капшен «логичный размер для ноутбука»; карточка 3 — значение «qwen-tts-demo» / капшен «локальный Web UI из официального quickstart». Ключевая — #1

// размер модели

## Почему в промпте выбран 0.6B

Для первого локального теста не нужно начинать с самой тяжелой версии. Цель - не выиграть бенчмарк, а доказать рабочий маршрут: окружение создано, пакет импортируется, модель скачивается, русский WAV генерируется, UI отвечает на localhost.

- 0.6B проще поднять на ноутбуке, чем 1.7B.
- CustomVoice закрывает быстрый тест готовым голосом.
- Base нужен для проверки маршрута voice clone.
- Обе модели остаются внутри официальной линейки Qwen3-TTS.
- Две модели не нужно держать в памяти одновременно без необходимости.

Сначала запускается CustomVoice на 7860. Clone UI включается отдельно: после остановки первого сервера или на 7861, если памяти хватает. Это не косметика, а нормальная инженерная гигиена для локальной демонстрации.

// промо

## Готовый промпт для локальной установки Qwen3-TTS

Этот блок можно дать Codex как отдельную задачу. Он не просит верить инструкции на слово: модель должна быть скачана, WAV должен реально создаться, localhost должен ответить HTTP 200, публичный share должен быть выключен.

```
Ты - автономный инженер по локальной установке AI-инструментов. Установи на мой компьютер полностью локальную демонстрационную систему Qwen3-TTS с русской озвучкой и клонированием голоса. Не ограничивайся инструкцией или планом: самостоятельно выполни установку, создай запускатели, скачай модели, проведи реальные тесты и открой работающий localhost.

Цель

После завершения у меня должны работать два локальных интерфейса:

1. CustomVoice - генерация русской речи готовыми голосами:
http://127.0.0.1:7860

2. Voice Clone - клонирование голоса по аудиореференсу:
http://127.0.0.1:7861

Используй только официальные компоненты:
- репозиторий: https://github.com/QwenLM/Qwen3-TTS
- пакет: qwen-tts
- CustomVoice: Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice
- Voice Clone: Qwen/Qwen3-TTS-12Hz-0.6B-Base

Версии 0.6B выбраны намеренно: они подходят для локальной демонстрации на ноутбуке лучше, чем 1.7B. Не заменяй их неофициальными форками или сторонними моделями.

Правила работы

- Не задавай предварительных вопросов, если можешь безопасно определить все самостоятельно.
- Сначала определи ОС, архитектуру, процессор, объем RAM, свободное место и доступные ускорители.
- Поддержи текущую систему: Apple Silicon/MPS, NVIDIA/CUDA либо CPU.
- Не меняй системный Python.
- Не ломай существующие окружения и проекты.
- Не удаляй файлы, модели, кэши или окружения пользователя.
- Не используй sudo, если без него можно обойтись.
- Не устанавливай драйверы GPU автоматически.
- Не создавай Git-репозиторий, ветку, коммит или PR.
- Все файлы системы держи в одной новой папке Qwen3-TTS-Demo.
- Если текущая директория занята чужим проектом, создай новую соседнюю папку и работай только в ней.
- Привязывай сервер только к 127.0.0.1.
- Обязательно используй --no-share.
- Не создавай Gradio Share, Cloudflare Tunnel и другие публичные ссылки.
- Не проси присылать API-ключи или Hugging Face токены в чат.
- Если авторизация потребуется, остановись непосредственно перед вводом секрета и попроси пользователя выполнить вход вручную.
- Клонируй только собственный голос пользователя или голос человека с явным согласием.
- Не называй технический тест клоном пользователя.
- Не заканчивай словами "должно работать". Требуются фактическая генерация WAV и HTTP-проверка localhost.

Этап 1. Аудит компьютера

Определи и зафиксируй: операционную систему и архитектуру; CPU/GPU; объем оперативной памяти; свободное место; наличие Python, uv, ffmpeg, ffprobe, SoX и Git; наличие MPS или CUDA; заняты ли порты 7860 и 7861.

Для скачивания двух моделей, окружения и рабочих файлов желательно не менее 15 GB свободного места. Если места явно недостаточно, ничего не удаляй - остановись и сообщи пользователю точный дефицит.

Если порт занят неизвестным процессом, не убивай его. Определи владельца и выбери другой свободный порт либо попроси пользователя принять решение.

Этап 2. Создание изолированного проекта

Создай структуру:
Qwen3-TTS-Demo/
├── .venv/
├── output/
├── reference/
│   ├── RECORD_THIS.txt
│   └── user_ref.txt
├── README.md
├── CHECK_READY.md
├── test_text.txt
├── qwen_demo.py
├── check_ready.sh или check_ready.ps1
├── prepare_reference.sh или prepare_reference.ps1
├── START_QWEN_UI.command/.sh/.ps1
└── START_QWEN_CLONE_UI.command/.sh/.ps1

Создай виртуальное окружение Python 3.12 через uv:
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python qwen-tts

Если uv, ffmpeg или SoX отсутствуют, установи их только из официального менеджера пакетов текущей ОС: macOS - Homebrew; Linux - системный пакетный менеджер; Windows - winget либо официальный источник.

На macOS не устанавливай flash-attn. Во всех локальных запускателях используй --no-flash-attn.

Этап 3. Выбор устройства

Определи устройство программно через PyTorch.

Правила:
- Apple Silicon: device=mps, сначала dtype=bfloat16;
- NVIDIA: device=cuda:0, dtype=bfloat16, если это действительно поддерживается;
- CPU: device=cpu, dtype=float32.

На Apple Silicon установи для запуска PYTORCH_ENABLE_MPS_FALLBACK=1.

Если выбранное устройство падает на реальном inference, зафиксируй точную ошибку и попробуй безопасный fallback. Не скрывай, на каком устройстве реально прошел тест.

Этап 4. Создание CLI

Создай qwen_demo.py с командами:

1. info - показывает Python, версию qwen-tts, версию PyTorch, устройство и dtype, поддерживаемые модели, русский язык и список встроенных голосов.

2. custom - загружает Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice, использует language="Russian", голос Ryan, читает текст из test_text.txt и сохраняет output/qwen_custom_ru.wav.

3. clone - загружает Qwen/Qwen3-TTS-12Hz-0.6B-Base, принимает reference/user_ref.wav, читает дословную расшифровку из reference/user_ref.txt, использует language="Russian", вызывает официальный generate_voice_clone и сохраняет output/qwen_clone_ru.wav.

При загрузке моделей используй Qwen3TTSModel.from_pretrained, передавай выбранные device_map и dtype, не передавай flash_attention_2 на Mac, выводи продолжительность загрузки и генерации. После записи WAV проверяй, что файл непустой, и выводи длительность, sample rate и количество каналов.

Этап 5. Тестовый текст

Запиши в test_text.txt:
"Привет! Это один и тот же русский текст для честного сравнения двух моделей. Сегодня мы проверяем разборчивость речи, естественные паузы, ударения и то, насколько уверенно система произносит сложные сочетания слов."

В reference/RECORD_THIS.txt запиши инструкцию пользователю записать одним спокойным дублем:
"Сегодня я записываю короткий образец своего голоса. Я говорю спокойно, без спешки и стараюсь произносить каждое слово разборчиво. Этот фрагмент нужен только для проверки локальной модели синтеза речи."

Тот же текст без пояснений помести в reference/user_ref.txt.

Создай prepare_reference-скрипт, который принимает WAV, M4A или MP3 и через ffmpeg создает reference/user_ref.wav: PCM WAV, mono, 24 kHz.

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

Этап 6. Реальная генерация

Запусти:
.venv/bin/python qwen_demo.py info
.venv/bin/python qwen_demo.py custom

Дождись загрузки модели и создания output/qwen_custom_ru.wav.

Проверь WAV через ffprobe или soundfile: файл существует, размер больше нуля, длительность больше нуля, sample rate корректный, есть хотя бы один канал.

После этого проверь маршрут Voice Clone без использования чужого голоса: используй созданный qwen_custom_ru.wav как технический референс, используй его точный текст из test_text.txt, сохрани результат как output/qwen_clone_smoke_ryan.wav и явно пометь его как технический smoke-test Ryan, а не голос пользователя.

Этап 7. Локальные интерфейсы

Создай запускатель CustomVoice:
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice --device <DEVICE> --dtype <DTYPE> --no-flash-attn --ip 127.0.0.1 --port 7860 --no-share

Создай отдельный запускатель Voice Clone:
qwen-tts-demo Qwen/Qwen3-TTS-12Hz-0.6B-Base --device <DEVICE> --dtype <DTYPE> --no-flash-attn --ip 127.0.0.1 --port 7861 --no-share

Запускатели должны переходить в собственную директорию, активировать правильное окружение, выставлять переменные, запускать только локальный сервер, открывать соответствующий localhost в браузере и не создавать публичную ссылку.

Не держи обе модели в памяти без необходимости. Основным запусти CustomVoice на 7860. Clone UI пользователь сможет включить отдельным запускателем после остановки первого либо на отдельном порту, если памяти достаточно.

Этап 8. Проверка localhost

Запусти основной CustomVoice UI. Дождись полной загрузки модели.

Проверь:
- процесс слушает 127.0.0.1:7860;
- HTTP-запрос возвращает 200;
- страница содержит Qwen3 TTS Demo;
- checkpoint соответствует 0.6B-CustomVoice;
- в интерфейсе доступны поле текста, язык, голос, кнопка Generate и аудиорезультат.

Открой http://127.0.0.1:7860 в браузере пользователя.

Затем отдельно запусти и проверь Clone UI на 7861. После получения HTTP 200 останови тестовый Clone UI, чтобы он не занимал память. Основной CustomVoice UI оставь запущенным.

Этап 9. Документация

В README.md напиши коротко и по-русски: что установлено; как запустить CustomVoice; как запустить Voice Clone; как записать и подготовить собственный референс; как сгенерировать qwen_clone_ru.wav; где лежат результаты; как остановить сервер; какое устройство реально используется; что сервер доступен только локально; что клонировать можно только собственный или разрешенный голос.

В CHECK_READY.md создай чеклист: окружение найдено; зависимости импортируются; ускоритель определен; обе модели скачаны; русский есть в get_supported_languages(); CustomVoice WAV создан; технический Clone WAV создан; UI 7860 отвечает HTTP 200; UI 7861 отвечает HTTP 200; личный референс пользователя пока отсутствует либо подготовлен; публичный share выключен.

Критерии завершения

Считай задачу выполненной только если одновременно подтверждено: изолированное окружение создано; официальный qwen-tts импортируется; CustomVoice checkpoint скачан; Base checkpoint скачан; реальный русский WAV создан; техническое клонирование реально прошло; оба WAV непустые и проверены; оба localhost-интерфейса реально ответили HTTP 200; основной интерфейс открыт в браузере; --no-share включен; подготовлены запускатели и документация.

Если какой-то критерий не выполнен, не пиши «готово». Продолжай диагностику. Если дальнейшее действие требует пароля, токена, системного разрешения, записи голоса или физического участия пользователя, остановись только в этой точке и сформулируй одно конкретное действие, которое должен выполнить пользователь.

Финальный отчет

В конце дай компактный отчет:
1. Путь к установленной системе.
2. ОС, устройство и dtype.
3. Установленные версии Python, PyTorch и qwen-tts.
4. Какие модели скачаны.
5. Пути и длительность созданных WAV.
6. Результат HTTP-проверки 7860 и 7861.
7. Ссылка на работающий localhost.
8. Что остается сделать пользователю для клонирования собственного голоса.
9. Какие действия ты намеренно не выполнял из соображений безопасности.
```

_Промпт для Codex_

// проверка

## Что должно быть подтверждено

- [ ] Изолированное окружение создано, системный Python не тронут.
- [ ] Официальный пакет qwen-tts импортируется.
- [ ] CustomVoice checkpoint 0.6B скачан.
- [ ] Base checkpoint 0.6B скачан.
- [ ] Русский язык есть в get_supported_languages().
- [ ] Русский WAV создан и проверен по длительности, sample rate и каналам.
- [ ] Технический smoke-test клонирования прошел без чужого голоса.
- [ ] CustomVoice UI отвечает HTTP 200 на 127.0.0.1:7860.
- [ ] Clone UI отвечает HTTP 200 на 127.0.0.1:7861 и затем остановлен.
- [ ] Основной UI открыт локально, публичный share выключен.

// выбор

## Как выбрать маршрут без мифа про бесплатность

строки «Задача → Маршрут»: Русский текст готовым голосом → Qwen3-TTS CustomVoice; Собственный голос → Qwen3-TTS Base + свой референс; Английский streaming → VibeVoice-Realtime-0.5B; Минимум настройки → платный сервис с лицензией и поддержкой

Бесплатная модель не отменяет стоимость настройки, железа, времени и ответственности. Она меняет точку контроля: файлы лежат у тебя, процесс запускается у тебя, ограничения проверяешь тоже ты.

// безопасность

## Границы, которые нельзя размазывать

- [ ] Не клонировать чужой голос без явного согласия.
- [ ] Не называть технический smoke-test клоном пользователя.
- [ ] Не открывать Gradio share, tunnel или внешний доступ.
- [ ] Не подменять официальные модели форками без отдельной проверки.
- [ ] Не строить вывод о качестве русского по одному случайному удачному аудио.
- [ ] Не запускать две тяжелые модели одновременно, если памяти мало.

// источники

## Что проверено перед правкой

- Дата проверки: 28 августа 2026 года.
- QwenLM/Qwen3-TTS - официальный репозиторий, quickstart, qwen-tts и qwen-tts-demo: https://github.com/QwenLM/Qwen3-TTS
- Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice - модель для готовых голосов, русский указан в поддерживаемых языках: https://huggingface.co/Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice
- Qwen/Qwen3-TTS-12Hz-0.6B-Base - модель для voice clone по аудиореференсу: https://huggingface.co/Qwen/Qwen3-TTS-12Hz-0.6B-Base
- microsoft/VibeVoice - официальный статус VibeVoice, удаление TTS-кода и ветка Realtime: https://github.com/microsoft/VibeVoice
- vibevoice-community/VibeVoice - community-форк как отдельная зона ответственности: https://github.com/vibevoice-community/VibeVoice

врезка `// сухой вывод`: текст «VibeVoice остается важным контекстом, но для русского локального TTS практический маршрут начинается с Qwen3-TTS: русский заявлен, модели разделены по задачам, есть официальный пакет и понятный локальный UI.»

---

Источник: https://localhost:3000/m/vibevoice-qwen3-russian-tts
