qwen-audio-3.0-tts-plus
An expressive text-to-speech model for videos, audiobooks and voice content. Supports control over speaking style and selection of a preset voice or one created from a sample.
- Ailoot · Text to speech
POST /v1/audio/speechqwen-audio-3.0-tts-plus - Ailoot · Text to speech
POST /v1/audio/speechqwen-tts - Ailoot · Text to speech
POST /v1/audio/speechqwen-tts-latest
About the model
This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.
Qwen-Audio-3.0-TTS-Plus turns text into expressive speech. Alibaba positions it for professional narration of content, audiobooks, videos and material with a recognizable vocal character. Text is supplied as input and audio is generated as output; audio can also be delivered incrementally during synthesis.
Speaking style as part of the prompt
Delivery can be specified using natural-language instructions and detailed control annotations. They define emotion, tone, character, pace, volume and speaking style. This allows the performance of the same phrase to be directed from calm narration to a more energetic or emotional delivery.
Expressiveness depends on the selected voice and the text's content. For consistent pronunciation, the language of the material must match the languages supported by the voice. The model is intended to voice written material; analysis of conversational meaning and transcription of an original recording are other audio tasks.
Preset voices and voices based on a sample
There are two system voices: a warm female voice and a cheerful male voice. They support Chinese and English. More than 500 base voices and the ability to reproduce a voice from a speech sample are also provided. The manufacturer recommends the system options when consistent vocal output is required.
Sample-based voices support Chinese with regional pronunciation variants, English, French, German, Japanese, Korean, Russian, Portuguese, Thai, Indonesian, Vietnamese, Italian, Spanish, Malay, Filipino and Arabic. This language support belongs to that mode; it does not automatically apply to every preset voice.
Sample requirements concern the manufacturer's separate voice creation method; speech synthesis uses a voice that has already been prepared. The prepared voice must match the selected text-to-speech model: using another model's voice results in a synthesis error with the manufacturer. A clean speech sample lasting 10–20 seconds is recommended. The overall limit is 60 seconds and 10 MB, with at least five seconds of continuous speech required. WAV with a 16-bit representation, MP3 and M4A are supported at a sample rate of at least 16 kHz. One or two channels are allowed, but only the first is used when there are two.
The speech sample must contain a single voice without people speaking simultaneously, music or singing. The manufacturer's requirements limit short pauses in the sample to two seconds. This helps identify the timbre and pronunciation characteristics needed for subsequent synthesis. Delivery control and sample-based voice reproduction describe different aspects of the model and can be used to prepare the sound of the same material.
Ailoot · Text to speech POST /v1/audio/speech qwen-audio-3.0-tts-plus
qwen-audio-3.0-tts-plusqwen-audio-3.0-tts-plusqwen-ttsqwen-tts-latest
Overview
An expressive text-to-speech model for videos, audiobooks and voice content. Supports control over speaking style and selection of a preset voice or one created from a sample.
- Accepted inputs
- Text
- Results
- speech
Available in Ailoot · inputs & methods
Ailoot · Text to speech POST /v1/audio/speech
- Input types
text- Output types
speech- Output format
- selectedmp3/wav/pcm
| Field | Type | Requirement | Values & limits | Default |
|---|---|---|---|---|
Fieldmodel | Typestring | RequirementRequired | Values & limits qwen-audio-3.0-tts-plus | Default— |
Fieldinput | Typestring | RequirementRequired | Values & limits Minimum length: 1 Maximum length: 600 Unit: Unicode characters | Default— |
Fieldvoice | Typestring | RequirementOptional | Values & limits Examples: longanlingxin, longanlufeng Accepted custom pattern: ^qwen-audio-3\.0-tts-plus- Conditions: Actual custom voice IDs with exactqwen-audio-3.0-tts-plus- prefix are accepted. | Defaultlonganlingxin |
Fieldresponse_format | Typestring | RequirementOptional | Values & limits mp3, wav, pcm | Defaultmp3 |
Fieldsample_rate | Typeinteger | RequirementOptional | Values & limits 16,000, 24,000, 48,000 Unit: Hz | Default24,000 |
Input material combinations
text_to_speech · Required: input
Method parameters and lifecycle
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractnull |
Parameteroptional_controls | Contractnull |
Lifecycle: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · actual returned task_id or media library record
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Method shapes and IDs are exact; supplier capability is separate from admission.
Pricing
Ailoot method rates
POST /v1/audio/speech- Input
- $20.00 per 1 million characters
- Output
- $0.00 per request
$20.00 per 1 million billable characters. A CJK ideograph counts as 2 billable characters: $40.00 per 1 million ideographs. Weight of other Unicode characters: 1. Output audio: $0.00.
Exact conditional metering rules from the catalog
{
"cjk_ideograph_weight": 2,
"input_usd_per_10000_counted_characters": 0.2,
"other_unicode_character_weight": 1,
"output_audio_usd": 0,
"unit": "counted_unicode_characters"
}Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. How reservation and settlement work →
Example requests
Ailoot · Text to speech
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-audio-3.0-tts-plus", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]=text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o speech.mp3
Receive and save results
Ailoot · Text to speech
selectedmp3/wav/pcm
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Keep all completed results
Keep every complete returned response, file and content part.
Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.
If the original response needs checking
Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.
Response fields
| Field | Type |
|---|---|
Fieldbinary audio | Typebytes |
Fieldresponse headers | Typeheaders |
Errors and next steps
| Response | Condition | Next step |
|---|---|---|
Response400 · invalid_request_error | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
Responseserver_error | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |
Aliases
Model aliases
Ailoot qwen-audio-3.0-tts-plus, qwen-tts, qwen-tts-latest
Method path aliases
Use the method paths shown above.
Related caller IDs
Ailoot · Text to speech POST /v1/audio/speech qwen-tts
qwen-ttsqwen-audio-3.0-tts-plusqwen-ttsqwen-tts-latest
Overview
An expressive text-to-speech model for videos, audiobooks and voice content. Supports control over speaking style and selection of a preset voice or one created from a sample.
- Accepted inputs
- Text
- Results
- speech
Available in Ailoot · inputs & methods
Ailoot · Text to speech POST /v1/audio/speech
- Input types
text- Output types
speech- Output format
- selectedmp3/wav/pcm
| Field | Type | Requirement | Values & limits | Default |
|---|---|---|---|---|
Fieldmodel | Typestring | RequirementRequired | Values & limits qwen-tts | Default— |
Fieldinput | Typestring | RequirementRequired | Values & limits Minimum length: 1 Maximum length: 600 Unit: Unicode characters | Default— |
Fieldvoice | Typestring | RequirementOptional | Values & limits Examples: longanlingxin, longanlufeng Accepted custom pattern: ^qwen-audio-3\.0-tts-plus- Conditions: Actual custom voice IDs with exactqwen-audio-3.0-tts-plus- prefix are accepted. | Defaultlonganlingxin |
Fieldresponse_format | Typestring | RequirementOptional | Values & limits mp3, wav, pcm | Defaultmp3 |
Fieldsample_rate | Typeinteger | RequirementOptional | Values & limits 16,000, 24,000, 48,000 Unit: Hz | Default24,000 |
Input material combinations
text_to_speech · Required: input
Method parameters and lifecycle
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractnull |
Parameteroptional_controls | Contractnull |
Lifecycle: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · actual returned task_id or media library record
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Method shapes and IDs are exact; supplier capability is separate from admission.
Pricing
Ailoot method rates
POST /v1/audio/speech- Input
- $20.00 per 1 million characters
- Output
- $0.00 per request
$20.00 per 1 million billable characters. A CJK ideograph counts as 2 billable characters: $40.00 per 1 million ideographs. Weight of other Unicode characters: 1. Output audio: $0.00.
Exact conditional metering rules from the catalog
{
"cjk_ideograph_weight": 2,
"input_usd_per_10000_counted_characters": 0.2,
"other_unicode_character_weight": 1,
"output_audio_usd": 0,
"unit": "counted_unicode_characters"
}Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. How reservation and settlement work →
Example requests
Ailoot · Text to speech
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-tts", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]=text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o speech.mp3
Receive and save results
Ailoot · Text to speech
selectedmp3/wav/pcm
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Keep all completed results
Keep every complete returned response, file and content part.
Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.
If the original response needs checking
Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.
Response fields
| Field | Type |
|---|---|
Fieldbinary audio | Typebytes |
Fieldresponse headers | Typeheaders |
Errors and next steps
| Response | Condition | Next step |
|---|---|---|
Response400 · invalid_request_error | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
Responseserver_error | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |
Aliases
Model aliases
Ailoot qwen-audio-3.0-tts-plus, qwen-tts, qwen-tts-latest
Method path aliases
Use the method paths shown above.
Related caller IDs
Ailoot · Text to speech POST /v1/audio/speech qwen-tts-latest
qwen-tts-latestqwen-audio-3.0-tts-plusqwen-ttsqwen-tts-latest
Overview
An expressive text-to-speech model for videos, audiobooks and voice content. Supports control over speaking style and selection of a preset voice or one created from a sample.
- Accepted inputs
- Text
- Results
- speech
Available in Ailoot · inputs & methods
Ailoot · Text to speech POST /v1/audio/speech
- Input types
text- Output types
speech- Output format
- selectedmp3/wav/pcm
| Field | Type | Requirement | Values & limits | Default |
|---|---|---|---|---|
Fieldmodel | Typestring | RequirementRequired | Values & limits qwen-tts-latest | Default— |
Fieldinput | Typestring | RequirementRequired | Values & limits Minimum length: 1 Maximum length: 600 Unit: Unicode characters | Default— |
Fieldvoice | Typestring | RequirementOptional | Values & limits Examples: longanlingxin, longanlufeng Accepted custom pattern: ^qwen-audio-3\.0-tts-plus- Conditions: Actual custom voice IDs with exactqwen-audio-3.0-tts-plus- prefix are accepted. | Defaultlonganlingxin |
Fieldresponse_format | Typestring | RequirementOptional | Values & limits mp3, wav, pcm | Defaultmp3 |
Fieldsample_rate | Typeinteger | RequirementOptional | Values & limits 16,000, 24,000, 48,000 Unit: Hz | Default24,000 |
Input material combinations
text_to_speech · Required: input
Method parameters and lifecycle
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractnull |
Parameteroptional_controls | Contractnull |
Lifecycle: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · actual returned task_id or media library record
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Method shapes and IDs are exact; supplier capability is separate from admission.
Pricing
Ailoot method rates
POST /v1/audio/speech- Input
- $20.00 per 1 million characters
- Output
- $0.00 per request
$20.00 per 1 million billable characters. A CJK ideograph counts as 2 billable characters: $40.00 per 1 million ideographs. Weight of other Unicode characters: 1. Output audio: $0.00.
Exact conditional metering rules from the catalog
{
"cjk_ideograph_weight": 2,
"input_usd_per_10000_counted_characters": 0.2,
"other_unicode_character_weight": 1,
"output_audio_usd": 0,
"unit": "counted_unicode_characters"
}Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. How reservation and settlement work →
Example requests
Ailoot · Text to speech
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 narration script}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen-tts-latest", "input": ""}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["input"]=text
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o speech.mp3
Receive and save results
Ailoot · Text to speech
selectedmp3/wav/pcm
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Keep all completed results
Keep every complete returned response, file and content part.
Keep the complete binary result and headers. If JSON/multiple outputs are returned, retain every data item and fetch each actual signed asset URL.
If the original response needs checking
Retain original operation_id/X-Client-Request-ID for reconciliation without resubmission; no dedicated audio poll route.
Response fields
| Field | Type |
|---|---|
Fieldbinary audio | Typebytes |
Fieldresponse headers | Typeheaders |
Errors and next steps
| Response | Condition | Next step |
|---|---|---|
Response400 · invalid_request_error | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
Responseserver_error | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |
Aliases
Model aliases
Ailoot qwen-audio-3.0-tts-plus, qwen-tts, qwen-tts-latest
Method path aliases
Use the method paths shown above.
Related caller IDs
FAQ · qwen-audio-3.0-tts-plus
- What inputs and results are available?
POST /v1/audio/speech·qwen-audio-3.0-tts-plus:text→speechPOST /v1/audio/speech·qwen-tts:text→speechPOST /v1/audio/speech·qwen-tts-latest:text→speech- Which fields does the request use?
POST /v1/audio/speech·qwen-audio-3.0-tts-plus:model,input,voice,response_format,sample_ratePOST /v1/audio/speech·qwen-tts:model,input,voice,response_format,sample_ratePOST /v1/audio/speech·qwen-tts-latest:model,input,voice,response_format,sample_rate- What limits apply?
POST /v1/audio/speech·qwen-audio-3.0-tts-plus:input.maximum_length:600POST /v1/audio/speech·qwen-tts:input.maximum_length:600POST /v1/audio/speech·qwen-tts-latest:input.maximum_length:600