Qwen-Audio-TTS/CosyVoice non-real-time speech synthesis HTTP API reference

Updated at:

Call the Qwen-Audio-TTS/CosyVoice non-real-time speech synthesis API over HTTP in non-streaming or streaming mode.

User guide: See Non-real-time speech synthesis.

ImportantThe features described in this document are available only in the China (Beijing) region.

ImportantAlibaba Cloud Model Studio has released a workspace-specific domain for the China (Beijing) region. The new dedicated domain delivers superior performance and higher stability for inference requests. We recommend migrating from dashscope.aliyuncs.com to {WorkspaceId}.cn-beijing.maas.aliyuncs.com.

Replace {WorkspaceId} with your actual Workspace ID. The existing domain remains fully functional.

Endpoint

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer

Replace {WorkspaceId} with your actual workspace ID.

Request headers

Parameter

Type

Required

Description

Authorization

string

Yes

Authentication token in the format Bearer <your_api_key>. Replace <your_api_key> with your actual API key.

Content-Type

string

Yes

Media type of the request body. Fixed to application/json.

X-DashScope-SSE

string

No

Enables streaming mode for the response. Required for streaming synthesis. Set to enable.

Request body

modelstring(required)

The speech synthesis model.

Valid values:

  • qwen-audio-3.0-tts-plus
  • qwen-audio-3.1-tts-flash
  • qwen-audio-3.0-tts-flash
  • cosyvoice-v3.5-plus
  • cosyvoice-v3.5-flash
  • cosyvoice-v3-plus
  • cosyvoice-v3-flash
  • cosyvoice-v2

inputobject(required)

The input parameter object.

Properties

text string(required)

The text to synthesize.

SSML and LaTeX format inputs are supported. Replace the text content with the corresponding format.

voice string(required)

The voice for synthesis.

Valid values:

format string(optional)

The audio format.

Default value: mp3.

Valid values:

  • mp3
  • pcm
  • wav
  • opus

sample_rate integer(optional)

The audio sample rate in Hz.

Valid values: 8000, 16000, 22050 (default), 24000, 44100, 48000.

volume integer(optional)

The volume level.

Default value: 50.

Valid values: [0, 100].

rate float(optional)

The speech rate.

Default value: 1.0.

Valid values: [0.5, 2.0].

bit_rate integer(optional)

The audio bitrate in kbps.

Default value: 32.

Valid values: [6, 510].

ImportantThis parameter is supported only when format is set to opus.

pitch float(optional)

The pitch.

Default value: 1.0.

Valid values: [0.5, 2.0].

enable_ssml boolean(optional)

Specifies whether to enable SSML. For the SSML usage restrictions (supported models, voices, and APIs), see Limitations.

word_timestamp_enabled boolean(optional)

Specifies whether to enable word-level timestamps.

Default value: false.

Available only in streaming output mode. Supported voices: cloned voices of qwen-audio-3.0-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-flash, cosyvoice-v3.5-plus, cosyvoice-v3.5-flash, cosyvoice-v3-flash, cosyvoice-v3-plus, and cosyvoice-v2, and system voices marked as supported in Qwen-Audio-TTS voice list, CosyVoice Voice list. Cloned voices of other models do not support this feature.

seed integer(optional)

The random seed for synthesis. Different seeds produce different outputs. With identical model version, text, voice, and other parameters, the same seed reproduces the same output.

Default value: 0.

Valid values: [0, 65535].

language_hints array[string](optional)

Important

  • This parameter is an array, but the current version processes only the first element. Pass a single value.
  • This parameter specifies the target language for speech synthesis and is unrelated to the language of the sample audio used in voice cloning. To set the source language for a voice cloning task, see the Voice Cloning API reference.

Specifies the target language for speech synthesis to improve output quality.

Use this parameter when numbers, abbreviations, or symbols are not pronounced as expected, or when synthesis quality for secondary languages is poor. Examples:

  • A number isn't read as expected: "hello, this is 110" is read as "hello, this is one one zero" instead of "hello, this is yao-yao-ling"
  • A symbol isn't read correctly: "@" is read as "ai-te" instead of "at"
  • Minor language synthesis sounds unnatural

Valid values:

  • zh: Chinese
  • en: English
  • fr: French
  • de: German
  • ja: Japanese
  • ko: Korean
  • ru: Russian
  • pt: Portuguese
  • th: Thai
  • id: Indonesian
  • vi: Vietnamese
  • es: Spanish
  • it: Italian
  • ms: Malaysian
  • fil: Filipino
  • ar: Arabic

instruction string(optional)

An instruction that controls the synthesis behavior, such as dialect, emotion, or role.

For usage details, see Non-real-time speech synthesis.

enable_aigc_tag boolean(optional)

Specifies whether to embed an AIGC watermark in the generated audio. When set to true, the watermark is embedded in audio files of supported formats (wav/mp3/opus).

Default value: false.

Only qwen-audio-3.0-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-flash, cosyvoice-v3-flash, cosyvoice-v3-plus, and cosyvoice-v2 support this feature.

aigc_propagator string(optional)

Sets the ContentPropagator field in the AIGC watermark, identifying the content propagator. Takes effect only when enable_aigc_tag is true.

Default value: Alibaba Cloud UID.

Only qwen-audio-3.0-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-flash, cosyvoice-v3-flash, cosyvoice-v3-plus, and cosyvoice-v2 support this feature.

aigc_propagate_id string(optional)

Sets the PropagateID field in the AIGC watermark, uniquely identifying a specific propagation action. Takes effect only when enable_aigc_tag is true.

Default value: The request ID of the current speech synthesis request.

Only qwen-audio-3.0-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-flash, cosyvoice-v3-flash, cosyvoice-v3-plus, and cosyvoice-v2 support this feature.

hot_fix object(optional)

Text hot-fix configuration. Customizes the pronunciation of specified words or substitutes text before speech synthesis.

Not supported by cosyvoice-v2.

Parameters:

  • pronunciation: Custom pronunciation. Provides pinyin for given words to correct cases where the default pronunciation is inaccurate.
  • replace: Text substitution. Replaces specified words with target text before speech synthesis; the substituted text is what gets synthesized.

Example:

"hot_fix": {
  "pronunciation": [
    {"weather": "tian1 qi4"}
  ],
  "replace": [
    {"today": "gold day"}
  ]
}

enable_markdown_filter boolean(optional)

ImportantOnly cloned voices of cosyvoice-v3-flash support this feature.

Specifies whether to enable Markdown filtering. When enabled, the system automatically strips Markdown markup symbols from the input text before synthesis, preventing them from being read aloud.

Default value: false.

Valid values:

  • true: Enable Markdown filtering
  • false: Disable Markdown filtering
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-audio-3.0-tts-flash",
    "input": {
      "text": "There is a very large garden behind my house.",
      "voice": "longanhuan_v3.6",
      "format": "wav",
      "sample_rate": 24000
    }
}'
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-H "X-DashScope-SSE: enable" \
-d '{
    "model": "qwen-audio-3.0-tts-flash",
    "input": {
      "text": "There is a very large garden behind my house.",
      "voice": "longanhuan_v3.6",
      "format": "wav",
      "sample_rate": 24000
    }
}'

Response body

request_idstring

The unique identifier of this request.

outputobject

The data returned by the model.

Properties

finish_reasonstring

Indicates why synthesis stopped. The value is stop when synthesis completes normally.

Valid values:

  • null: Synthesis in progress
  • stop: Synthesis completed

typestring

The sub-event type. Returned only in streaming mode.

Valid values:

  • sentence-begin: Marks the beginning of a sentence and returns the text content to synthesize

  • sentence-synthesis: Marks an audio data chunk

    • Multiple sentence-synthesis events are emitted during the synthesis of a single sentence, each carrying one audio data chunk
    • The client must receive these audio data chunks in order and write them to the same file in append mode
    • Each sentence-synthesis event maps one-to-one to its subsequent audio data frame
  • sentence-end: Marks the end of a sentence and returns the sentence text along with the cumulative billed character count

original_textstring

A sentence extracted from the segmented input text. May be absent for the last sentence.

sentenceobject

Sentence information.

Properties

indexinteger

The sentence index, starting from 0.

wordsarray

Word-level information for the sentence.

Properties

textstring

The word or character.

begin_indexinteger

The start position index of the word within the sentence, starting from 0.

end_indexinteger

The end position index of the word within the sentence, starting from 1.

begin_timeinteger

The start timestamp of the word in the audio, in milliseconds.

end_timeinteger

The end timestamp of the word in the audio, in milliseconds.

audioobject

The synthesized audio data.

Properties

datastring

Base64-encoded audio data in streaming mode. Empty in non-streaming mode.

urlstring

The URL of the complete audio file generated by the model. Expires after 24 hours.

idstring

The ID of the audio output from the model.

expires_atinteger

The expiration timestamp of the url.

usageobject

The character usage of this request.

Properties

characters integer

The number of billed characters in this request.

Non-streaming

{
    "request_id": "ee88b03d-0457-9286-8c67-xxxxxxxxxxxx",
    "output": {
        "finish_reason": "stop",
        "audio": {
            "data": "",
            "url": "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/pre/cosyvoice-v3-flash/20260304/xxxxxxxx/ee88b03d-0457-9286-8c67-xxxxxxxxxxxx.wav?xxxxxxx",
            "id": "audio_ee88b03d-0457-9286-8c67-xxxxxxxxxxxx",
            "expires_at": 1772697707
        }
    },
    "usage": {
        "characters": 15
    }
}

Streaming

Intermediate result:

{
    "request_id": "8ac1cd04-06af-9a63-b031-xxxxxxxxxxxx",
    "output": {
        "finish_reason": "null",
        "type": "sentence-begin",
        "original_text": "There is a very large garden behind my house.",
        "sentence": {
            "index": 0,
            "words": []
        },
        "audio": {
            "data": "",
            "id": "audio_ee88b03d-0457-9286-8c67-xxxxxxxxxxxx",
            "expires_at": 1772697707
        }
    },
    "usage": {
        "characters": 15
    }
}

Final result:

{
    "request_id": "8ac1cd04-06af-9a63-b031-xxxxxxxxxxxx",
    "output": {
        "finish_reason": "stop",
        "audio": {
            "data": "",
            "url": "http://dashscope-result-bj.oss-cn-beijing.aliyuncs.com/pre/cosyvoice-v3-flash/20260304/xxxxxxxx/8ac1cd04-06af-9a63-b031-xxxxxxxxxxxx.wav?xxxxxxx",
            "id": "audio_8ac1cd04-06af-9a63-b031-xxxxxxxxxxxx",
            "expires_at": 1772698611
        }
    },
    "usage": {
        "characters": 15
    }
}