Голосовое сообщение вымышленного персонажа работает, когда голос совпадает с человеком, а подача — с моментом. Qwen3 TTS превращает сценарий взрослого персонажа в один MP3 с одним голосом, а подачу вы направляете обычной заметкой. В задаче SpicyAPI девять заданных голосов, стоимость — $0,068 за 1 000 символов текста, минимум 100 символов на запрос. По нашим тестам сентября 2026 года откровенная лексика для взрослых в прямых отрывках и в стилистике аудиокниги читалась дословно. Используйте её для записанных голосовых сообщений и закадровой озвучки; на этом маршруте нет ни клонирования голоса, ни прямого эфира.
Что входит в размещённую задачу
| Деталь | Задача Qwen3 TTS |
|---|---|
| Обязательный ввод | text, 1–2 000 символов |
| Указание подачи | instructions, до 1 000 символов; не произносится, не тарифицируется |
| Голос по умолчанию | Serena |
| Результат | один MP3, моно, 24 кГц |
| Цена | $0,068 за 1 000 символов текста, минимум 100 символов ($0,0068) |
| Загруженный голос-референс | недоступен |
| Несколько говорящих в одном запросе | недоступно; генерируйте каждую реплику отдельно |
| Числовые скорость или высота тона | недоступны; опишите подачу в instructions |
Выберите пресет и сгенерируйте на странице задачи Qwen3 TTS. Репозиторий команды Qwen описывает также варианты CustomVoice, Base (клонирование) и VoiceDesign. Это отдельные предложения: аргумент ref_audio или speaker библиотеки здесь не является вводом, поле голоса — voice_id.
Подберите голос под свой сценарий
| Пресет | Опубликованное описание голоса | Родной язык |
|---|---|---|
| Serena | тёплый, мягкий женский голос | китайский |
| Vivian | яркий, слегка резкий женский голос | китайский |
| Uncle_Fu | низкий, мягкий мужской голос | китайский |
| Dylan | отчётливый пекинский мужской голос | китайский, пекинский диалект |
| Eric | живой, слегка хриплый мужской голос | китайский, диалект Сычуани |
| Ryan | мужской голос с ритмом | английский |
| Aiden | отчётливый американский мужской голос | английский |
| Ono_Anna | лёгкий, игривый женский голос | японский |
| Sohee | тёплый, выразительный женский голос | корейский |
Каждый пресет читает любой поддерживаемый язык, но команда Qwen рекомендует родной язык голоса для лучшего качества. Для мужского персонажа, говорящего по-английски, начните с Ryan или Aiden. Для женского персонажа на английском попробуйте Serena или Vivian; в наборе нет женского голоса с английским родным языком, поэтому прослушайте его до того, как решите.
Прослушайте пример голосового сообщения голосом Serena: ночная записка «позвони мне», прочитанная с запыханной, кокетливой инструкцией.
Сначала попробуйте в Playground
Откройте страницу задачи Qwen3 TTS и используйте вкладку Playground:
- В поле Text вставьте только те слова, которые нужно услышать (пример сценария на странице — хороший первый тест).
- Выберите имя в Voice (по умолчанию Serena).
- Напишите заметку о подаче в Delivery instructions.
- Оставьте Language на Auto-detect или выберите английский для английского сценария, если определение неоднозначно.
- Запустите, затем прослушайте результат в Output и скачайте MP3.
Вымышленная взрослая после свидания: Text «I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.», Voice Serena, Delivery instructions «Тепло и немного застенчиво, негромко, обращаясь к одному взрослому слушателю. Последний вопрос оставьте в разговорном тоне». Не начинайте текст с Serena: или с «Read this in a soft voice»: оба варианта будут произнесены. Прослушайте здесь два-три голоса и заметки, прежде чем писать код; цена показывается до запуска.
language принимает auto, zh, en, de, fr, es, it, pt, ru, ja и ko. Он определяет, как читается ваш текст; он не переводит.
Затем вызовите из кода
Установите Python SDK (pip install spicyapi), задайте SPICY_API_KEY в окружении и выполните:
import urllib.request
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="alibaba/qwen-3-tts/text-to-speech",
input_data={
"text": "I had a good time tonight. More than I expected, actually. Call me tomorrow? I'd like to see you again.",
"voice_id": "Serena",
"language": "en",
"instructions": "Warm and slightly shy, speaking quietly to one adult listener. Keep the final question conversational.",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
urllib.request.urlretrieve(output_assets(final)[0]["url"], "voice-message.mp3")Ожидание, повторы, расценки и ошибки описаны в справочнике Python SDK и в руководстве по асинхронным задачам.
Или пусть это выполнит Agent
Если помощник должен озвучивать ваши реплики, дайте ему CLI или MCP-сервер. Оба показывают цену и просят подтвердить перед платным вызовом. Skill добавляет инструкции поверх любого из них.
- CLI.
spicyapiвыполняет одну задачу из терминала (npx @spicyapi/cliработает без установки). Положите тот же объектinputвinput.json:
``bash spicyapi tasks create --model alibaba/qwen-3-tts/text-to-speech \ --input-file input.json --idempotency-key voice-message-take-1 --wait ``
- MCP-сервер. Добавьте MCP-сервер помощнику и спросите: «Прочитай эту реплику голосом Qwen3 TTS, Serena, тепло и немного застенчиво». Он вызывает
spicyapi_task_create(который останавливается для подтверждения цены), затемspicyapi_task_wait. - Skill.
npx skills add spicyapi-ai/spicy-skillустанавливает Agent Skill, который учит помощника по программированию читать актуальную схему и переиспользовать ключи идемпотентности. Сам он задачи не выполняет, поэтому используйте его с CLI или MCP.
Направьте одну и ту же реплику тремя способами
Оставьте текст и голос, меняйте только заметку. Для «I thought you'd forgotten»:
| Задуманное чувство | Инструкция для пробы |
|---|---|
| Облегчение | «Мягкий выдох с облегчением, с улыбкой, последнее слово чуть тише» |
| Обида | «Тихо и сдержанно, медленнее, без улыбки» |
| Поддразнивание | «Легко и игриво, с лёгким подъёмом в конце, будто прячется улыбка» |
Меняйте по одному. «Уберите шёпот» или «медленнее после первого предложения» чинит дубль, а «эмоциональнее, человечнее» — нет. Если результат слишком театральный, сократите заметку до «Естественная разговорная подача.»
Может ли он прочитать NSFW-сценарий?
Тесты охватили прямой фрагмент для взрослых, фрагмент в обрамлении аудиокниги и фрагмент с обилием ремарок, используя Serena или Ryan с указаниями подачи. Прямая и аудиокнижная расшифровки совпали со сценарием слово в слово, включая лексику для взрослых, а текст указаний ни разу не прозвучал.
Фрагмент с обилием ремарок сохранил лексику для взрослых, но сильнее отклонился от сценария из-за несловесных вокализаций. Относитесь к дыханию и смеху как к тому, что стоит прослушать, а не контролировать: если от этого зависит сцена, сначала сгенерируйте этот момент и не рассчитывайте, что синтаксис квадратных или круглых скобок другой модели здесь сработает.
Сделайте сцену на двух персонажей
Один запрос — один голос. Для двух вымышленных взрослых генерируйте каждую реплику отдельно:
| Реплика | Голос | Текст | Подача |
|---|---|---|---|
| 1 | Serena | «Did you really think I'd leave without saying goodnight?» | тёплый, спокойный вопрос |
| 2 | Ryan | «No. I was hoping you would come find me.» | тихий, ироничный ответ |
Руководства ComfyUI по нескольким говорящим разбирают имена говорящих, паузы и наложения в отдельном узле; эти теги здесь не являются полями ввода. Уберите имена из произносимого текста, отправьте каждую реплику со своим voice_id, а паузы расставьте в монтажёре. Начните с короткой паузы и двигайте второй клип, пока ответ не станет естественным. Если поместить оба имени в одно поле text, один пресет прочитает и подписи, и обе реплики. Чтобы прописать весь диалог и собрать клипы автоматически, посмотрите рабочий процесс диалога Seed Speech 2.0; его скрипт склейки работает с любым голосом.
Для длинной истории одним голосом делите текст до 2 000 символов по границам предложений или абзацев и повторяйте один и тот же голос и заметку для каждого фрагмента. Чтобы заменить фразу, перегенерируйте всё окружающее предложение и режьте по соседним паузам — тогда громкость и темп совпадут.
Минимальная оплата важна для коротких ответов
Стоимость — max(text characters, 100) × $0.068 / 1,000, пробелы и знаки препинания считаются. Указания бесплатны.
| Длина ввода | Оплачиваемые символы | Стоимость |
|---|---|---|
| 40 символов | 100 | $0,0068 |
| 80 символов | 100 | $0,0068 |
| 180 символов | 180 | $0,01224 |
| 1 000 символов | 1 000 | $0,068 |
| 2 000 символов | 2 000 | $0,136 |
Десять отдельных ответов по 40 символов стоят $0,068, хотя их тексты вместе дают всего 400 символов; один запрос на 400 символов тем же голосом стоит $0,0272. Объединяйте слитную закадровую речь одного голоса, когда это допускает монтаж, но не объединяйте разных персонажей ради обхода минимума.
Исправьте разочаровывающий результат
| Проблема | Изменение |
|---|---|
| Реплика звучит торопливо | Добавьте в instructions «Без спешки, с естественной паузой после первого предложения» |
| Имя произносится неверно | Напишите его фонетически в text; в публичной расшифровке оставьте правильное написание |
| Заметка почти не меняет тембр | Попробуйте другой пресет; указания подачи не меняют базовый характер голоса |
Запрос отклоняет speed, pitch или ref_audio | Уберите их и используйте четыре поля выше |
Если нужно клонирование загруженного голоса или живой разговор, выберите задачу, которая это предоставляет; чтобы сравнить другие речевые модели для сценариев для взрослых, посмотрите наше сравнение API синтеза речи.






