TTS

Qwen3-TTS: локальный синтез и клонирование голоса - Гайд по моделям от Alibaba

Heli
Автор
Heli
Опубликовано 02.02.2026
0,0
Views 45

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

5 моделей Qwen3-TTS

В релиз вошли пять моделей двух классов - 0.6B и 1.8B параметров:

Модель Характеристики Языковая поддержка Потоковое вещание Управление инструкциями
Qwen3-TTS-12Hz-1.7B-VoiceDesign Генерирует голос по текстовому описанию Китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский, итальянский
Qwen3-TTS-12Hz-1.7B-CustomVoice Управление стилем через инструкции; 9 готовых голосов (разный пол, возраст, язык, диалект) Китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский, итальянский
Qwen3-TTS-12Hz-1.7B-Base Базовая модель с клонированием голоса за 3 секунды; можно дообучать Китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский, итальянский
Qwen3-TTS-12Hz-0.6B-CustomVoice 9 готовых голосов (разный пол, возраст, язык, диалект) Китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский, итальянский
Qwen3-TTS-12Hz-0.6B-Base Базовая модель с клонированием голоса за 3 секунды; можно дообучать Китайский, английский, японский, корейский, немецкий, французский, русский, португальский, испанский, итальянский

Ключевые возможности

Новый токенизатор 12Hz обеспечивает эффективное сжатие аудио и многомерное семантическое моделирование речи.

Поддержка 11 языков. Потоковая генерация с минимальной задержкой. Можно дообучать под свои задачи.

Установка

Сначала устанавливаем SoX: скачиваем файл с https://sourceforge.net/projects/sox/ и добавляем путь к .exe в переменную Path.

Затем необходимо установить:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install huggingface_hub[hf_xet]

9 готовых голосов в Qwen3-TTS

Qwen3-TTS поставляется с девятью голосами. Для лучшего качества рекомендую использовать их на родном языке:

Спикер Описание голоса Родной язык
Vivian Яркий, слегка резковатый молодой женский голос Китайский
Serena Тёплый, нежный голос молодой женщины Китайский
Uncle_Fu Опытный мужской голос с низким, мягким тембром Китайский
Dylan Молодой пекинский мужской голос с чистым, естественным тембром Китайский (пекинский диалект)
Eric Живой мужской голос из Чэнду с лёгкой хрипотцой Китайский (сычуаньский диалект)
Ryan Динамичный мужской голос с сильным ритмическим напором Английский
Aiden Солнечный американский мужской голос с чистым средним регистром Английский
Ono_Anna Игривый японский женский голос с лёгким, подвижным тембром Японский
Sohee Тёплый корейский женский голос, наполненный эмоциями Корейский

Озвучиваем текст готовыми голосами

Для работы со стандартными голосами используется метод generate_custom_voice. В него передаются:

  • строку или список строк, которые необходимо озвучить
  • язык (список языков)
  • имена спикеров
  • необязательный параметр - instruct (тонкая настройка голоса)
  • Дополнительные аргументы, такие как temperature, top_k, top_p и другие, но они нам пока не понадобятся. По умолчанию значения:
  • top_k: int = 50, top_p: float = 1.0, temperature: float = 0.9, subtalker_dosample: bool = True, subtalker_top_k: int = 50, subtalker_top_p: float = 1.0, subtalker_temperature: float = 0.9, eos_token_id: Optional[int] = None, repetition_penalty: float = 1.05,

Инициализируем модель:

import torch
import soundfile as sf
from qwen_tts import Qwen3TTSModel

model = Qwen3TTSModel.from_pretrained(
    "Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice",
    device_map="cuda:0",
    dtype=torch.bfloat16,
    attn_implementation="sdpa",
)

Теперь попробуем озвучить несколько текстов разными голосами и инструкциями. Возьмём два текста:

Первый текст

Метеорологи обещают стабильную погоду на ближайшие дни. В южных областях воздух прогреется до двадцати пяти градусов, осадков не предвидится. Идеальное время для прогулок на свежем воздухе.

Второй текст

Здравствуйте! Это автоинформатор сервисного центра “ПроТех”. Все операторы сейчас заняты. Для получения информации о ремонте нажмите один. Для вопросов по гарантии нажмите два. Оставайтесь на линии.

first_text  = '''Метеорологи обещают стабильную погоду на ближайшие дни. В южных областях воздух прогреется до двадцати пяти градусов, осадков не предвидится. Идеальное время для прогулок на свежем воздухе.'''

second_text = '''Здравствуйте! Это автоинформатор сервисного центра “ПроТех”. Все операторы сейчас заняты. Для получения информации о ремонте нажмите один. Для вопросов по гарантии нажмите два. Оставайтесь на линии.'''

wavs, sr = model.generate_custom_voice(
    text=[first_text, second_text],
    language=["Russian","Russian"],
    speaker=["Vivian","Vivian"]
)
sf.write("output_base_voice_first_text_raw.wav", wavs[0], sr)
sf.write("output_base_voice_second_text_raw.wav", wavs[1], sr)

Теперь добавим инструкции для изменения голоса.

Инструкции:

  • Используй профессиональный деловой тон. Говори нейтрально, сдержанно и информативно
  • Соблюдай умеренный темп, делай короткие паузы для акцентирования важной информации
wavs, sr = model.generate_custom_voice(
    text=[first_text, second_text],
    language=["Russian", "Russian"],
    speaker=["Vivian", "Vivian"],
    instruct=["Используй профессиональный деловой тон. Говори нейтрально, сдержанно и информативно", 
              "Соблюдай умеренный темп, делай короткие паузы для акцентирования важной информации"]
)
sf.write("output_professional_first_text.wav", wavs[0], sr)
sf.write("output_professional_second_text.wav", wavs[1], sr)

Если готовые спикеры вас не устраивают, используйте метод generate_voice_design с инструкцией:

wavs, sr = model.generate_voice_design(
    text=first_text,
    language="Russian",
    instruct="Используй профессиональный деловой тон. Говори нейтрально, сдержанно и информативно",
)
sf.write("output_voice_design.wav", wavs[0], sr)

Результат получился одновременно и интересным, и немного забавным , но у всех голосов азиатский акцент. Конечно, это недостаток, голоса плохо адаптируются под новый язык. Но меня приятно удивила интонация.

Демо версия доступна здесь

И того

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

Конечно, это не OpenAI или Google. Но для свободных моделей с 1.8B параметров уже неплохо.

К 2026 году, скорее всего, выйдет несколько крупных релизов. Модели станут больше, качество улучшится. Они начнут адекватнее обрабатывать знаки препинания, паузы, интонации, акценты. Русский язык станет более проработанным, исчезнут акценты и неправильные ударения.

Авторизуйтесь, чтобы оставить комментарий.

Комментариев: 0

Нет комментариев.