Генерация голоса: клонируем голос с ИИ при помощи Qwen3-TTS

Никита Калашников
Предыстория: когда рынок бессилен
Все началось с идеи для подарка. На день рождения подруге я решил составить персональную натальную карту — тема сейчас на пике хайпа. Хотелось сделать серию аудиозаписей, где разные этапы карты озвучивались бы голосом Олеси Иванченко (одной из ведущих популярного шоу).
Я начал искать готовые инструменты для генерации голоса нейросетью онлайн. На российском рынке нет нормальных решений именно для клонирования голоса нейросетью: ни в вебе, ни в Telegram, вообще нигде.
Зарубежные сервисы предлагали какие-то решения, но сталкиваться с квестом по оплате подписки ради пяти записей по 60 секунд не хотелось. Какой смысл переплачивать за месячный тариф, если задача разовая? В итоге я вспомнил пост в одном профильном ИТ-канале о новой китайской модели, которую можно развернуть локально. Так я пришел к Qwen3-TTS.
Почему именно Qwen3-TTS?
Использование Qwen TTS для генерации голоса стало для меня открытием по нескольким причинам:
- Локальный запуск: Я вообще не назову свой ноут мощным, и никогда бы не подумал что хоть одна модель заведется локально.
- Архитектура 1.7B параметров: Модель Qwen3-TTS-12Hz-1.7B-Base достаточно компактная, чтобы запуститься на бытовом ПК, но при этом достаточно глубокая, чтобы передавать естественные интонации.
- Качество дискретизации: Частота 12 Гц в архитектуре модели позволяет на выходе получать чистый звук без характерного «роботизированного» металлического звона.
- Open Source: Свободное распространение инструмент, который можно донастроить под свои нужды
Аппаратные требования: ИИ на обычном ноутбуке
Лично я считал что для генерация голоса — нужны минимум видеокарт серии RTX с огромным объемом видеопамяти.
Характеристики моего ПК:
- Устройство: Ноутбук Lenovo.
- Процессор: 11th Gen Intel(R) Core(TM) i5-1155G7 @ 2.50GHz (2.50 GHz)
- Оперативная память: 16,0 GB.
- Видеокарта: Отсутствует (использовался только CPU).
Примеры генерации
Специально не подписывал, но думаю хоть кого-то вы точно знаете и сможете угадать.
Пошаговая инструкция: ставим нейросеть локально
!!! Внимание, я ставил общаясь с нейронкой (Gemini), по шагам официальной документации не завелось.
Процесс настройки требует базовых знаний работы с терминалом и установленного Python.
Шаг 1: Установка системных инструментов
Windows-окружение часто конфликтует с библиотеками для обработки звука. Чтобы избежать ошибок, сделайте следующее:
- Установите Visual Studio Build Tools. В установщике выберите нагрузку «Разработка классических приложений на C++». Это необходимо для компиляции аудио-библиотек.
- Установите FFmpeg (утилита для работы с медиафайлами). Проще всего сделать это через команду:
winget install ffmpeg.
Шаг 2: Создание виртуального окружения
Чтобы зависимости проекта не конфликтовали с системой, создаем отдельную «песочницу»:
1mkdir qwen-tts-local
2cd qwen-tts-local
3python -m venv venv
4.\venv\Scripts\activate
Шаг 3: Установка библиотек (версия для CPU)
Поскольку мы запускаемся на Intel Core i5, устанавливаем PyTorch, оптимизированный под процессор:
1# Установка Torch для CPU
2pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
3
4# Зависимости для работы с моделью
5pip install transformers accelerate librosa soundfile
Шаг 4: Клонирование репозитория
1git clone https://github.com/QwenLM/Qwen3-TTS.git
2cd Qwen3-TTS
3pip install -r requirements.txt
Запуск генерации: магия кода
Для работы я создал скрипт start_tts.py. Основная хитрость здесь в принудительном переводе модели в режим float32, так как процессоры i5 не всегда эффективно обрабатывают формат bfloat16, который используется по умолчанию.
1import torch
2import soundfile as sf
3from qwen_tts import Qwen3TTSModel
4
5model = Qwen3TTSModel.from_pretrained(
6 "Qwen/Qwen3-TTS-12Hz-1.7B-Base",
7 device_map="cpu",
8 dtype=torch.float32, # Используем просто dtype вместо torch_dtype
9 attn_implementation="eager", # ПРИНУДИТЕЛЬНО отключаем Flash Attention
10)
11
12ref_audio = "https://somesite.ru/some_ref.wav"
13ref_text = "Привет, это текст который я говорю в аудио-рефералке"
14
15wavs, sr = model.generate_voice_clone(
16 text="А это текст, который я хочу воспроизвести склонированным голосом",
17 language="Russian",
18 ref_audio=ref_audio,
19 ref_text=ref_text,
20)
21sf.write("output_voice_clone.wav", wavs[0], sr)
22print("Готово! Результат сохранен в файл: output_voice_clone.wav")
Реальные показатели: сколько ждать?
Мои замеры генерация аудио на Core i5:
- Генерация аудио длиной 60–90 секунд занимала в среднем 10–12 минут.
- Загрузка процессора держалась на уровне 80%.
Я считаю, что для персонального пользования, на таких характеристиках ПК — это хороший результат.
Итоги
Клонирование голоса ИИ с помощью Qwen3-TTS — это хорошее решение для тех, кому нужна автономность и качество.
Результата действительно удивил. Модель хорошо работает с Русским языком и генерирует действительно очень хороший и похожий голос.
Конечно иногда бывают проблемы с ударением и лучше всего писать текст не по правилам грамматики, а по произношению (как слышите и произносите, так и пишете). Но в целом если поработать с текстом, то можно получить очень хорошиу результат.
Ну и не забывайте эксперементировать с реф. аудио дорожкой. Модель генерирует интонацию и манеру именно по дорожке, поэтому если вы прикладываете спокойный, размеренный голос, то генерация будет такая же. А если в дорожке есть все примеры: от воскрилация, вопрошения и высоких интонаций, то и запись будет такая же.
Вообщем эксперементируйте, пробуйте разные вводные и наслаждайтесь результатом.