Qwen: Qwen-Audio-3.0-TTS Flash
Qwen-Audio-3.0-TTS-Flash is Qwen’s text-to-speech model focused on responsive voice assistants and interactive dialogue. It combines streaming synthesis, model-specific preset or cloned voices, and instructions or tags for expressive speech.
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-Flash converts a supplied script into speech, with the Flash edition focused on real-time interaction. Qwen identifies voice assistants, interactive dialogue and intelligent customer service as its main applications. Compared with the preceding version, the producer describes broader low-resource-language and Chinese-dialect support, more authentic dialect expression and stronger control of emotion, tone, character, speed, volume and speaking style. It also reports improved clarity and robustness in noisy or reverberant acoustic conditions. This is text-to-audio synthesis, rather than recognition of incoming speech or a voice-dialogue model.
Flash prioritises the start of speech in an interactive exchange. Qwen reports first-packet latency within 200 milliseconds for this model’s real-time synthesis; its usage guide also notes that the initial connection setup contributes to the first submission’s measured delay. Prepare the actual words to be spoken separately from the desired delivery. For a voice-assistant response, an illustrative brief could combine a concise answer with a calm, clear delivery instruction. The relevant result is the generated speech for that text, with the application handling playback and the surrounding conversation.
The producer’s system-voice list includes model-specific options such as Long An Feng Yue for a natural, friendly delivery and Long An Xiao Xin for a friendly, lively delivery, both listed for Mandarin and English. It also includes English voices such as loongmary with a British accent and loongjohn with a calm, friendly American accent. Each model additionally has more than 500 base voices. Qwen recommends starting with system voices for consistency and assessing previews when selecting a base voice. A voice must belong to the selected model, and the script must use a language that voice supports.
Cloned voices broaden the documented language range to Chinese, English, Japanese, Korean, Russian, French, German, Portuguese, Thai, Indonesian, Vietnamese, Spanish, Italian, Malay, Filipino and Arabic. The Chinese coverage includes Mandarin, Cantonese, Chongqing, Northeastern, Gansu, Guizhou, Zhejiang, Hebei, Henan, Hubei, Hunan, Jiangxi, Ningbo, Ningxia, Qingdao, Shaanxi, Shanxi, Shandong, Shanghainese, Sichuan and Yunnan varieties, with dialect selection through instructions. The model table supports sample-based voice cloning and distinguishes it from creating a new voice solely from a text description, which this edition does not support.
For cloning, the producer recommends a 10–20-second recording, with a 60-second maximum and a file size no greater than 10 MB. The supported reference formats are 16-bit WAV, MP3 and M4A, at a sample rate of at least 16 kHz. The recording needs at least five seconds of continuous clear speech; other pauses should be no longer than two seconds. Avoid background sound, other voices and singing. Stereo is accepted, but only the first channel is processed. The cloning workflow returns a voice identifier bound to the exact target model, and synthesis uses that identifier once the voice is ready. The same recording requires separate cloned voices for Flash and Plus.
Natural-language instructions control delivery for both system and cloned voices. Describe audible qualities such as a gentle tone, clear articulation or a slightly slower pace. Inline tags provide a different control: [empathetic] or [serious] sets a style for subsequent text, while [laughing] or [sighing] inserts a vocal effect at a particular position. A control tag lasts until another control tag or automatic sentence segmentation. These emotion and rich-language tags are documented only for unidirectional streaming, rather than the bidirectional text-input mode. Prepare an expressive line in the mode appropriate to those controls.
The producer’s speech interface supports PCM, WAV, MP3 and Opus. Its listed sample rates are 8,000, 16,000, 22,050, 24,000, 44,100 and 48,000 Hz, with MP3 and 22,050 Hz as defaults. Volume ranges from 0 to 100; speech rate and pitch each range from 0.5 to 2.0. MP3 and Opus also expose a bitrate setting from 6 to 510 kbps. Select a format and sample rate to match the intended player or processing workflow. For an interactive application, the producer documents streaming audio frames and sentence metadata, with word-level timestamps available in streaming output for eligible voices, including cloned voices.
The documented WebSocket text protocol accepts up to 20,000 characters in one text message and 200,000 characters cumulatively in a task, with no more than 23 seconds between submissions. These are producer protocol limits, separate from a universal model output-duration limit. It supports cancellation of the current synthesis turn and a subsequent task on the same connection. Keep text segments in their intended spoken order and end the input when the script is complete. For pronunciation preparation, the producer documents target-language hints, pinyin annotations and text replacements, useful when digits, abbreviations or symbols are spoken unexpectedly.
SSML is a separate markup option with voice and interaction-mode conditions: Qwen documents it for cloned voices, with non-streaming or unidirectional-streaming calls, and a single text submission when SSML is enabled. It should not be assumed for every preset voice or bidirectional stream. For ordinary dialogue, begin with a compatible voice, a clean spoken script and a specific delivery instruction; add targeted pronunciation or expressive controls where the task requires them. This keeps the Flash profile centred on responsive speech from prepared text rather than on capabilities of other Qwen audio models.
Ailoot Ultra · Text to speech POST /v1/audio/speech qwen/qwen-audio-3.0-tts-flash
qwen/qwen-audio-3.0-tts-flashOverview
Qwen-Audio-3.0-TTS-Flash is Qwen’s text-to-speech model focused on responsive voice assistants and interactive dialogue. It combines streaming synthesis, model-specific preset or cloned voices, and instructions or tags for expressive speech.
- Accepted inputs
- Text
- Results
- Audio
Available in Ailoot · inputs & methods
Ailoot Ultra · Text to speech POST /v1/audio/speech
- Input types
text- Output types
audio- Output format
- mp3
| Field | Type | Requirement | Values & limits | Default |
|---|---|---|---|---|
Fieldmodel | Typestring | RequirementRequired | Values & limits qwen/qwen-audio-3.0-tts-flash | Default— |
Fieldinput | Typestring | RequirementRequired | Values & limits Minimum length: 1 Unit: Unicode characters | Default— |
Fieldvoice | Typestring | RequirementRequired | Values & limits loongjohn, longanhuan_v3.6 | Default— |
Fieldresponse_format | Typestring | RequirementRequired | Values & limits mp3 | Default— |
Input material combinations
text_to_speech · Required: input
Method parameters and lifecycle
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, input, voice, response_format |
Parametervoice_ids | Contractloongjohn, longanhuan_v3.6 |
Parameterresponse_format | Contractmp3 |
Parametermax_input_characters | Contractnull |
Parameterother_options | Contractfalse |
Parameterinput | Contractexact UTF-8 text; Unicode character count without normalization |
Parametermaterial_types | Contracttext |
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}
Select exact voice from this model profile.
Input characters and audio seconds are different meters.
Pricing
Tariff references do not add request options. Supported parameters are listed for the selected method.
- Fast mode
- Not specified When fast mode is selected
- Flex mode
- Not specified When flex mode is selected
- Maximum reasoning effort
- Not specified When maximum reasoning effort uses the default adjustment
Ailoot rates
Prices by configuration
Match each charge to the conditions shown. Use one rate for each set of alternative configurations.
| Configuration | Rate schedule | Billable quantity | Billing unit | Charge |
|---|---|---|---|---|
| ConfigurationBase token rates | Rate scheduleBase rate | Billable quantity— | Billing unit— | Charge Input · Input tokens — / 1K tokens Output · Output tokens — / 1K tokens Input · Cache read — / 1K tokens Input · Cache write — / 1K tokens Input · Cache write, 1 hour — / 1K tokens |
| ConfigurationUltra | Rate schedule— | Billable quantityEach Unicode code point counts as one character, including Han characters. | Billing unitper 1000 input character | Charge Input · input character $0.03 per 1000 input character |
Reference tariff details
Model-level reference schedules do not change method selection, quotes or charges. Active charges use the selected Ailoot method rates.
Qwen: Qwen-Audio-3.0-TTS Flash
Prices by configuration
| Configuration | Billing conditions | Charge |
|---|---|---|
| ConfigurationQwen: Qwen-Audio-3.0-TTS Flash · Default configuration | Billing conditionsDefault configuration | Charge Input · Input characters $0.00003 per input character |
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 Ultra · Text to speech
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}"
export AILOOT_VOICE_ID
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qwen/qwen-audio-3.0-tts-flash", "input": "Good afternoon! This is a short voice take."}')
voice=os.environ["AILOOT_VOICE_ID"]
allowed=json.loads('["loongjohn", "longanhuan_v3.6"]')
if voice not in allowed: raise SystemExit("Choose an accepted voice ID from this exact model profile")
p["voice"]=voice
p["response_format"]="mp3"
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 Ultra · Text to speech
mp3
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Other content reads
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
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 Ultra qwen/qwen-audio-3.0-tts-flash
Method path aliases
Use the method paths shown above.
Related caller IDs
FAQ · Qwen: Qwen-Audio-3.0-TTS Flash
- What inputs and results are available?
POST /v1/audio/speech·qwen/qwen-audio-3.0-tts-flash:text→audio- Which fields does the request use?
POST /v1/audio/speech·qwen/qwen-audio-3.0-tts-flash:model,input,voice,response_format