Skip to content

Repository files navigation

Qwen3-TTS MLX RU

Русскоязычный локальный интерфейс 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. Производительность и требуемая объединённая память зависят от модели, длины текста и других запущенных приложений.

Установка

Из GitHub

git clone https://github.com/8bitsage/Qwen3-TTS-MLX-RU.git
cd Qwen3-TTS-MLX-RU
chmod +x install.command run.command
./install.command

Из архива

  1. Скачайте и распакуйте архив исходного кода.
  2. Откройте Terminal, перейдите в папку распакованного проекта.
  3. Выполните ./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 и всех пакетов имеют приоритет над этим кратким описанием. Перед публикацией бинарного архива обязательно включите требуемые уведомления о стороннем ПО.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages