Русскоязычный локальный интерфейс Qwen3-TTS для Mac с Apple Silicon. Приложение
запускает Gradio только на 127.0.0.1, а синтез выполняется локально через
MLX-Audio и Apple Metal.
Это не официальный продукт Qwen, MLX Community, Apple, Nerual Dreaming или Нейро-Софт. Это независимая адаптация интерфейса для macOS.
- русскоязычный интерфейс;
- встроенные голоса Qwen3-TTS;
- клонирование голоса по WAV-образцу и точной расшифровке;
- диалог до четырёх дикторов;
- дизайн голоса и инструкции для поддерживающих его моделей;
- сохранение результатов в WAV PCM16 и JSON с параметрами;
- одна общая очередь: модель и Metal-память не используются параллельно.
- Mac с Apple Silicon (M1 или новее);
- macOS 14 или новее;
- нативный
arm64-сеанс Terminal, без Rosetta; - интернет при первой установке и при первом скачивании каждой модели;
- свободное место для Python, пакетов и выбранных моделей.
MLX требует Apple Silicon, нативный Python и macOS 14+; подробнее — в документации MLX. Производительность и требуемая объединённая память зависят от модели, длины текста и других запущенных приложений.
git clone https://github.com/8bitsage/Qwen3-TTS-MLX-RU.git
cd Qwen3-TTS-MLX-RU
chmod +x install.command run.command
./install.command- Скачайте и распакуйте архив исходного кода.
- Откройте Terminal, перейдите в папку распакованного проекта.
- Выполните
./install.command.
Установщик создаёт изолированное окружение .venv. Если в папке проекта нет
локального Python 3.12, он получает подписанный установщик Python 3.12.10 с
python.org, сверяет SHA-256 и подпись пакета, затем устанавливает зависимости
из requirements.lock.txt. Системный Python и глобальные пакеты не меняются.
Не запускайте install.command, если не доверяете его содержимому: это скрипт,
который скачивает Python и пакеты из сети.
./run.commandПосле строки о готовности интерфейс автоматически откроется в браузере. Если
вкладка не появилась, откройте
http://127.0.0.1:7860 вручную. Это локальный адрес:
интерфейс не доступен из локальной сети и публичная ссылка Gradio не создаётся.
Для остановки приложения нажмите Control+C в том же окне Terminal.
При первом использовании нужной модели нажмите «Загрузить модель» или
«Сгенерировать речь». Будут загружены только веса и токенизаторы выбранной
модели. Затем выберите голос, введите текст и нажмите «Сгенерировать речь».
Готовые WAV и JSON сохраняются в data/output/.
В каждой вкладке можно выбрать размер и точность модели. Варианты 8 бит занимают меньше места и объединённой памяти. Варианты BF16 не квантизованы, но требуют заметно больше места, памяти и времени загрузки.
| Режим и размер | Экономичная (8 бит) | Без квантования (BF16) |
|---|---|---|
| Встроенные голоса, 0.6B | mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-8bit |
mlx-community/Qwen3-TTS-12Hz-0.6B-CustomVoice-bf16 |
| Встроенные голоса + настройка стиля и эмоции, 1.7B | mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-8bit |
mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-bf16 |
| Клонирование голоса и диалог, 0.6B | mlx-community/Qwen3-TTS-12Hz-0.6B-Base-8bit |
mlx-community/Qwen3-TTS-12Hz-0.6B-Base-bf16 |
| Клонирование голоса и диалог, 1.7B | mlx-community/Qwen3-TTS-12Hz-1.7B-Base-8bit |
mlx-community/Qwen3-TTS-12Hz-1.7B-Base-bf16 |
| Дизайн голоса, 1.7B | mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-8bit |
mlx-community/Qwen3-TTS-12Hz-1.7B-VoiceDesign-bf16 |
VoiceDesign 0.6B в каталоге MLX Community не опубликована, поэтому для этого режима доступны только модели 1.7B. По умолчанию приложение по-прежнему выбирает экономичную CustomVoice 0.6B 8-bit; другие веса скачиваются только после выбора пользователя.
CustomVoice 0.6B позволяет выбрать один из встроенных голосов. CustomVoice 1.7B дополнительно принимает текстовую инструкцию для настройки эмоции, темпа и подачи речи. Поэтому поле настройки стиля включается только для 1.7B.
Движок — mlx-audio==0.5.1. Перечень вариантов и методы инференса сверены с
документацией Qwen3-TTS в MLX-Audio.
Список голосов и языков приложение получает от фактически загруженной модели,
а не из захардкоженного списка.
Сборка не является офлайн-продуктом до первой установки: ей нужны Python,
Python-пакеты и как минимум одна модель. После успешного скачивания конкретной
модели её snapshot фиксируется в data/models/snapshots.json и повторно
открывается только из локального кэша. Поэтому уже загруженные режимы можно
использовать без интернета.
Интернет всё ещё понадобится, если:
- запустить
install.commandна чистом Mac; - выбрать модель, которой нет в
data/models/; - удалить
.python,.venvили кэш модели.
Не публикуйте весовые кэши, .venv, .python, журналы, результаты синтеза или
голосовые образцы в Git. Они намеренно исключены .gitignore. Для полностью
офлайн-архива нужно отдельно упаковать все необходимые модели вместе с
относительными symbolic links каталога Hugging Face и проверить архив на другом
Mac без сети.
| Путь | Назначение |
|---|---|
data/models/ |
локальный кэш моделей Hugging Face |
data/voices/ |
ваши WAV-образцы и их расшифровки |
data/output/ |
сгенерированные WAV и JSON-метаданные |
data/logs/ |
журналы запуска и ошибок |
data/temp/ |
временные файлы Gradio и обработки аудио |
Интерфейс отключает аналитику Gradio и Hugging Face и не передаёт токен Hugging Face. Во время первого скачивания модели запросы, конечно, уходят к Hugging Face. Не добавляйте в публичный репозиторий чужие голоса, расшифровки или результаты синтеза без права на их распространение.
Для клонирования нужен WAV и точная расшифровка того, что в нём сказано. Используйте только свой голос или голос, на использование которого вы получили явное разрешение. Не выдавайте синтезированную речь за запись реального человека.
- «Нужны Apple Silicon … без Rosetta» — откройте нативный Terminal на Mac
с процессором Apple и убедитесь, что
uname -mвыводитarm64. - Модель не скачивается — проверьте доступ к Hugging Face и свободное место; повторный запуск продолжит загрузку той же revision.
- Недостаточно памяти — выгрузите модель кнопкой интерфейса, закройте тяжёлые приложения или выберите вариант 0.6B.
- Порт 7860 занят — завершите другой экземпляр приложения и повторите запуск. Одновременно нужен только один экземпляр.
- Gatekeeper предупреждает об архиве — исходный проект не является
подписанным
.app. Для готовой бинарной поставки используйте Developer ID, hardened runtime и notarization; Apple описывает этот процесс в документации по распространению macOS.
Код распространяется под Apache License 2.0, как и донорский Qwen3-TTS_portable_rus. Сведения об изменённом интерфейсе и сторонних компонентах находятся в THIRD_PARTY_NOTICES.md.
- интерфейс основан на
timoncool/Qwen3-TTS_portable_rus; - инференс реализован с Blaizzy/mlx-audio (MIT);
- MLX — проект Apple и сообщества (MIT);
- исходные Qwen3-TTS и указанные модели — Apache-2.0.
Лицензии моделей, Python и всех пакетов имеют приоритет над этим кратким описанием. Перед публикацией бинарного архива обязательно включите требуемые уведомления о стороннем ПО.