
Speech synthesis for narration and dubbing, with 4 multilingual voices, plain-language delivery direction, inline emotion tags, and voice cloning.
Speech synthesis for narration and dubbing, with 4 multilingual voices, plain-language delivery direction, inline emotion tags, and voice cloning.
Choose one of 4 voices with voice. Direct the delivery with instruction and with inline tags inside the text. Set voice to custom with voice_audio_url and voice_consent to clone a voice.
Also known as Qwen Audio TTS Plus, Qwen Audio TTS, Alibaba Cloud Qwen Audio 3.1 TTS Plus
qwen-audio-3-1-tts-plus/v1/audio/speechPOST/v1/audio/speech:streamWEBSOCKET/v1/realtimeGET/v1/voicesqwen-audio-3.1-tts-plusalibaba/qwen-audio-3-1-tts-plusLive pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.
Qwen Audio 3.1 TTS Plus serves speech through POST /v1/audio/speech and returns playable audio. Send the text to speak as input with the model id qwen-audio-3-1-tts-plus. Get an API key from the EmpirioLabs dashboard.
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-plus",
"input": "Welcome to EmpirioLabs. Your build just finished."
}' \
--output speech.mp3import requests
response = requests.post(
"https://api.empiriolabs.ai/v1/audio/speech",
headers={"Authorization": "Bearer YOUR_EMPIRIOLABS_API_KEY"},
json={"model": "qwen-audio-3-1-tts-plus", "input": "Welcome to EmpirioLabs."},
)
with open("speech.mp3", "wb") as f:
f.write(response.content)Request parameters supported by the Qwen Audio 3.1 TTS Plus API on EmpirioLabs. Defaults apply when a field is omitted.
| Parameter | Type | Default | Range / values | Description |
|---|---|---|---|---|
| input | string | - | max 10000 | 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... |
| voice | enum | longanlingxin_v3.1 | longanlingxin_v3.1, longanhuan_v3.1, longanfengyue_v3.1, xuna... | Voice preset. The 4 voices read Chinese, English, and other languages. Every voice id ends in _v3.1, for example longanlingxin_v3.1. custom clones a voice from... |
| voice_audio_url | string | - | - | voice=custom only: an https URL to a 10 to 20 second recording of clear speech from one speaker, the voice to clone (WAV, MP3, M4A, OGG, WEBM or FLAC, up to 15 MB).... |
| voice_consent | boolean | false | - | voice=custom only: true confirms that you have the speaker's permission to create a synthetic copy of their voice. A custom voice is created only when this is true. |
| response_format | enum | mp3 | mp3, wav, pcm, opus | Audio container. mp3 and opus are compressed, wav is uncompressed PCM in a RIFF header, and pcm is headerless raw samples for chunked playback. On the realtime... |
| sample_rate | enum | 24000 | 8000, 12000, 16000, 22050, 24000, 44100, 48000 | Output sample rate in Hz. 24000 suits speech playback, and 48000 gives broadcast-quality output at a larger file size. |
| speed | number | 1 | 0.5 to 2 | Speaking rate multiplier. 0.5 is half speed and 2.0 is double speed. |
| pitch | number | 1 | 0.5 to 2 | 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... |
| volume | integer | 50 | 0 to 100 | Output loudness, where 50 is the reference level. |
| instruction | string | - | max 1000 | Natural-language direction for delivery, up to 1,000 characters. Controls emotion, tone, character, pace, and speaking style, for example 'Speak quickly in an... |
| language_hints | array | - | zh, en, fr, de, ja, ko, ru, pt, th, id, vi, es, it, ms, fil, ar | Language codes that bias pronunciation for mixed-language text, for example ["zh", "en"]. Leave unset to let the model detect the language. |
| seed | integer | 0 | 0 to 65535 | Sampling seed. Reuse a seed with identical input and settings for a repeatable render. |
| bit_rate | integer | 32000 | 6000 to 510000 | Encoder bitrate in bps. Applies to the opus format only, and is ignored for mp3, wav, and pcm. |
| pronunciation | object | - | - | Pronunciation overrides keyed by the written form, for example {"重要": "zhong4 yao4"}. Use it to fix names, acronyms, and homographs. |
On EmpirioLabs, Qwen Audio 3.1 TTS Plus is billed pay as you go: Synthesis $0.60 per 10,000 characters. The live rate card on this page always matches what the API charges.
Qwen Audio 3.1 TTS Plus is served through POST /v1/audio/speech on api.empiriolabs.ai with standard bearer-token authentication.
Open the EmpirioLabs playground and press Start session to try it in your browser. Qwen Audio 3.1 TTS Plus runs over a WebSocket rather than a request and response, so to build with it start from the realtime voice quickstart. Connect from your server with your EmpirioLabs API key and the model id qwen-audio-3-1-tts-plus, then stream audio in both directions.
Create an EmpirioLabs account, then generate a key under API Keys in the dashboard. Billing is pay-as-you-go credits, so you only pay for the requests you make.
Check out our pricing or reach out if you want your own model deployed on our stack.