> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.empiriolabs.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.empiriolabs.ai/_mcp/server.

# Qwen Audio 3.1 TTS

> Real-time speech synthesis with 19 voices, natural-language delivery direction, inline emotion and sound tags, and streaming audio output.

![Qwen Audio 3.1 TTS](https://media.empiriolabs.ai/model-logos/qwen.png)

[Alibaba Cloud](/providers/alibaba) · Audio Generation

`POST /v1/audio/speech`

Real-time speech synthesis with 19 voices, natural-language delivery direction, inline emotion and sound tags, and streaming audio output.

## At a glance

| Field               | Value                                                                                                 |
| ------------------- | ----------------------------------------------------------------------------------------------------- |
| Model id            | `qwen-audio-3-1-tts`                                                                                  |
| Model release date  | 2026-09-23                                                                                            |
| Input modalities    | Text                                                                                                  |
| Output modalities   | Audio                                                                                                 |
| Context window      | -                                                                                                     |
| Weight precision    | -                                                                                                     |
| Max output tokens   | 60,000                                                                                                |
| Region              | Singapore                                                                                             |
| Features            | text_to_speech, multilingual, expressive_prosody, emotion_control, voice_tags, low_latency, streaming |
| Native inference    | No                                                                                                    |
| New                 | Yes                                                                                                   |
| Supported endpoints | `POST /v1/audio/speech`, `POST /v1/audio/speech:stream`                                               |
| Alternate model ids | `qwen-audio-3.1-tts`, `qwen-audio-3.1-tts-flash`, `alibaba/qwen-audio-3-1-tts`                        |

## Pricing

| Charge | Spec                    | Rate   |
| ------ | ----------------------- | ------ |
| Input  | per 1M prompt tokens    | \$0.46 |
| Output | per 1M generated tokens | \$3.74 |

## Example request

```bash
curl https://api.empiriolabs.ai/v1/audio/speech \
  -H 'Authorization: Bearer $EMPIRIOLABS_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"model": "qwen-audio-3-1-tts", "input": "Hello from EmpirioLabs."}'
```

## Parameters

| Parameter                | Type    | Required | Default        | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ------------------------ | ------- | -------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `input`                  | string  | yes      | -              | Text to synthesize, up to 10,000 characters per request. These inline tags change the delivery from the point where they appear: \[sad], \[amazed], \[deep and loud shouting], \[trembling], \[angry], \[excited], \[sarcastic], \[curious], \[like dracula], \[bored], \[tired], \[scornful], \[shouting], \[asmr], \[panicked], \[mischievously], \[empathetic], \[whispers], \[reluctantly], \[crying], \[serious], \[very slowly], \[very fast]. These add a one-time sound at that point: \[gasp], \[sighing], \[clears throat], \[giggles], \[laughing], \[cough], \[snorts]. · Max: 10000 |
| `voice`                  | enum    | no       | `"Emily_v3.1"` | Voice preset. The 15 English voices read English, and the 4 multilingual voices read Chinese, English, and other languages. Every voice id ends in \_v3.1, for example Emily_v3.1. · Allowed: `Emily_v3.1`, `Luna_v3.1`, `Eric_v3.1`, `Luca_v3.1`, `Abby_v3.1`, `Annie_v3.1`, `Ava_v3.1`, `Beth_v3.1`, `Betty_v3.1`, `Cally_v3.1`, `Cindy_v3.1`, `Donna_v3.1`, `Andy_v3.1`, `Brian_v3.1`, `David_v3.1`, `longanhuan_v3.1`, `longanlingxin_v3.1`, `longanfengyue_v3.1`, `xunanchuan_v3.1`                                                                                                         |
| `response_format`        | enum    | no       | `"mp3"`        | Audio container. mp3 and opus are compressed, wav is uncompressed PCM in a RIFF header, and pcm is headerless raw samples for chunked playback. · Allowed: `mp3`, `wav`, `pcm`, `opus`                                                                                                                                                                                                                                                                                                                                                                                                           |
| `sample_rate`            | enum    | no       | `24000`        | Output sample rate in Hz. 24000 suits speech playback, and 48000 gives broadcast-quality output at a larger file size. · Allowed: `8000`, `12000`, `16000`, `22050`, `24000`, `44100`, `48000`                                                                                                                                                                                                                                                                                                                                                                                                   |
| `speed`                  | number  | no       | `1`            | Speaking rate multiplier. 0.5 is half speed and 2.0 is double speed. · Range: 0.5 – 2.0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `pitch`                  | number  | no       | `1`            | Pitch multiplier. Values below 1.0 lower the voice and values above raise it. Pitch also shifts the pace of the rendered audio, so pair it with speed when you want to keep the original duration. · Range: 0.5 – 2.0                                                                                                                                                                                                                                                                                                                                                                            |
| `volume`                 | integer | no       | `50`           | Output loudness, where 50 is the reference level. · Range: 0 – 100                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `instruction`            | string  | no       | -              | Natural-language direction for delivery, up to 1,000 characters. Controls emotion, tone, character, pace, and speaking style, for example 'Speak quickly in an excited, upbeat tone' or 'Read slowly like a late-night radio host'. · Max: 1000                                                                                                                                                                                                                                                                                                                                                  |
| `language_hints`         | array   | no       | -              | Language codes that bias pronunciation for mixed-language text, for example \["zh", "en"]. Leave unset to let the model detect the language. · Allowed: `zh`, `en`, `fr`, `de`, `ja`, `ko`, `ru`, `pt`, `th`, `id`, `vi`, `es`, `it`, `ms`, `fil`, `ar`                                                                                                                                                                                                                                                                                                                                          |
| `seed`                   | integer | no       | `0`            | Sampling seed. Reuse a seed with identical input and settings for a repeatable render. · Range: 0 – 65535                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `bit_rate`               | integer | no       | `32000`        | Encoder bitrate in bps. Applies to the opus format only, and is ignored for mp3, wav, and pcm. · Range: 6000 – 510000                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `pronunciation`          | object  | no       | -              | Pronunciation overrides keyed by the written form, for example \{"重要": "zhong4 yao4"}. Use it to fix names, acronyms, and homographs.                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `replace`                | object  | no       | -              | Literal text substitutions applied before synthesis, for example \{"EmpirioLabs": "Empirio Labs"}. Useful for brand names and abbreviations.                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `enable_markdown_filter` | boolean | no       | false          | Strip Markdown syntax such as asterisks and underscores before synthesis so formatting characters are not read aloud.                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

## Notes

**Voices**

* 19 voices: 15 English voices and 4 multilingual voices. Emily, Luna, Eric, and Luca have British accents. Abby, Annie, Ava, Beth, Betty, Cally, Cindy, Donna, Andy, Brian, and David have American accents. The multilingual voices `longanhuan_v3.1`, `longanlingxin_v3.1`, `longanfengyue_v3.1`, and `xunanchuan_v3.1` read Chinese, English, and other languages.
* Every voice id ends in `_v3.1`, for example `Emily_v3.1`.

**Delivery direction**

* `instruction` sets emotion, tone, character, pace, and speaking style in natural language, up to 1,000 characters.
* Inline tags inside the text change the delivery from that point, for example `[excited]` or `[whispers]`, or add a one-time sound such as `[laughing]` or `[sighing]`. The full list of tags is on the `input` parameter.
* SSML input is not supported.

**Input limits**

* Up to 10,000 characters per request.
* `language_hints` biases pronunciation for mixed-language text.

**Output**

* MP3, WAV, PCM, or Opus at 8,000 to 48,000 Hz.
* `POST /v1/audio/speech:stream` sends audio chunks while the speech is generated.

**Billing**

* Input tokens are the text, and output tokens are the generated audio at 12.5 tokens per second.
* Speed and pitch change the length of the rendered audio but not the billed tokens. An instruction that slows the delivery adds output tokens.

---

*Machine-readable schema:* `GET https://api.empiriolabs.ai/v1/models/qwen-audio-3-1-tts`.