Convertissez un texte complet en parole via HTTP. Découvrez les fonctionnalités des modèles, les premiers appels et les moyens d’améliorer la synthèse.
Fonctionnalités
La synthèse vocale non temps réel reçoit un texte complet dans une seule requête HTTP et prend en charge les sorties sans flux et en flux SSE. La sortie sans flux renvoie une URL audio valable 24 heures. Téléchargez et enregistrez le fichier avant son expiration ; après celle-ci, vous pouvez relancer la synthèse. La sortie en flux renvoie les données audio par fragments.
- Langues et dialectes : choisissez un modèle et une voix adaptés à la langue cible, ou précisez le dialecte par une instruction. Consultez Dialectes.
- Expression vocale : ajustez la diction avec des instructions en langage naturel ou insérez des balises d’émotion et de sons non verbaux. Consultez Contrôle par instructions et Balises d’émotion et de sons non verbaux.
- Voix personnalisées : créez une voix à partir d’un échantillon audio avec le clonage vocal, ou d’une description avec la conception vocale.
- Contrôle détaillé et formules : utilisez SSML et LaTeX pour contrôler les pauses et la prononciation ou convertir des formules en parole.
Remarque
- Les fonctionnalités disponibles dépendent du modèle et de la voix. Consultez leur périmètre dans la documentation correspondante.
- Pour envoyer le texte progressivement, utilisez la synthèse vocale en temps réel.
Premiers pas
-
Obtenez une clé API et définissez la variable d’environnement
DASHSCOPE_API_KEY. Utilisez une clé de la région de l’exemple. -
Pour un point de terminaison propre à un espace de travail, remplacez
YOUR_WORKSPACE_IDpar l’identifiant de l’espace de travail de cette région. -
Installez la dépendance de l’exemple :
pip install requests
Qwen-Audio-TTS (Recommandé)
Les exemples suivants utilisent qwen-audio-3.1-tts-flash et la voix système longanhuan_v3.1 dans la région Singapour pour illustrer les sorties sans flux et en flux.
Sortie sans flux
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
L’audio est enregistré dans le fichier output.wav du répertoire courant.
Sortie en flux
Cet exemple affiche les événements SSE reçus ligne par ligne. Le champ output.audio.data contient un fragment audio encodé en Base64.
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.ap-southeast-1.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "qwen-audio-3.1-tts-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanhuan_v3.1",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
CosyVoice
Les exemples suivants utilisent cosyvoice-v3-flash et la voix système longanyang à Pékin pour illustrer les sorties sans flux et en flux.
Sortie sans flux
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
timeout=60,
)
response.raise_for_status()
audio_url = response.json()["output"]["audio"]["url"]
audio_response = requests.get(audio_url, timeout=60)
audio_response.raise_for_status()
with open("output.wav", "wb") as f:
f.write(audio_response.content)
L’audio est enregistré dans le fichier output.wav du répertoire courant.
Sortie en flux
Cet exemple affiche les événements SSE reçus ligne par ligne. Le champ output.audio.data contient un fragment audio encodé en Base64.
import os
import requests
response = requests.post(
'https://YOUR_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer',
headers={"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}", "X-DashScope-SSE": "enable"},
json={
"model": "cosyvoice-v3-flash",
"input": {
"text": "Hello, welcome to Alibaba Cloud Model Studio.",
"voice": "longanyang",
"format": "wav",
"sample_rate": 24000
}
},
stream=True,
timeout=60,
)
response.raise_for_status()
for line in response.iter_lines():
print(line.decode("utf-8"))
response.close()
Améliorer la qualité de synthèse
Langues et prononciation
Si des nombres, abréviations ou symboles sont mal prononcés, utilisez language_hints pour préciser la langue cible, ou hot_fix pour personnaliser la prononciation et remplacer du texte. Consultez les modèles compatibles et la configuration dans les références Qwen-Audio-TTS API ou CosyVoice API.
Utilisez SSML pour contrôler les pauses, la lecture des nombres ou la prononciation des mots. Pour les modèles, voix, interfaces et balises compatibles avec Qwen-Audio-TTS et CosyVoice, consultez SSML et LaTeX.
Contrôle par instructions
Ajoutez instruction à l’objet input de la requête et décrivez le débit, l’émotion ou le style en langage naturel pour contrôler la parole synthétisée.
RemarquePour créer une voix avec un genre, un âge ou un caractère vocal précis, ou consulter des conseils et exemples de description vocale, reportez-vous à la conception vocale.
Qwen-Audio-TTS
Les voix système, clonées et conçues de qwen-audio-3.1-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus et qwen-audio-3.0-tts-flash acceptent toutes des instructions en langage naturel via instruction dans les requêtes de synthèse.
Pour ralentir la parole dans l’exemple Qwen-Audio-TTS des premiers pas, ajoutez ce champ à input :
{"instruction": "请用非常缓慢的语速说话,每个字都慢慢说。"}
CosyVoice
RemarqueDans CosyVoice, instruction est limité à 100 caractères. Les caractères chinois, y compris simplifiés, traditionnels et employés en japonais ou en coréen, comptent chacun pour deux. Les autres caractères, notamment la ponctuation, les lettres, les chiffres, les kana et le hangeul, comptent chacun pour un.
| Modèle | Voix concernées | Exigences des instructions | Langues du texte d’instruction |
|---|---|---|---|
| Voix clonées et conçues Aucune voix système. | Instructions en langage naturel. | Chinois, anglais, français, allemand, japonais, coréen, russe, portugais, thaï, indonésien et vietnamien. |
| Voix système | Utilisez le format et le contenu fixes de la liste des voix. Les voix clonées et conçues ne prennent pas en charge le contrôle par instructions. | Utilisez la langue précisée dans la liste des voix. |
| Voix système | Utilisez le format et le contenu fixes de la liste des voix. | Chinois. |
Voix clonées et conçues | Instructions en langage naturel. | Chinois, anglais, français, allemand, japonais, coréen et russe. |
Dialectes
La synthèse dialectale permet de générer de la parole dans des dialectes chinois, tels que ceux du Henan ou du Sichuan. La méthode de sélection dépend du modèle et du type de voix.
Qwen-Audio-TTS
- Voix système : choisissez une voix adaptée au dialecte dans la liste Qwen-Audio-TTS. Une voix prenant directement en charge le dialecte ne nécessite aucun réglage supplémentaire. Pour les voix compatibles avec les instructions de dialecte, utilisez
instruction. - Voix clonées : précisez le dialecte avec
instruction, par exemple请用河南话表达。. - Voix conçues : les dialectes ne sont pas pris en charge.
CosyVoice
- Voix système : choisissez une voix prenant directement en charge le dialecte, telle que
longshange_v3, ou compatible avec les instructions, telle quelonganhuan_v3. Respectez le format de la liste des voix. - Voix clonées : utilisez
instructionavec un modèle compatible pour préciser le dialecte. - Voix conçues : les dialectes ne sont pas pris en charge.
RemarqueLes voix clonées de cosyvoice-v3-plus ne permettent pas de préciser le dialecte par instruction.
Dans l’exemple CosyVoice des premiers pas, remplacez input par ce contenu pour générer le dialecte du Henan avec longanhuan_v3 :
{
"text": "叫你去买盐,你买回来一袋面,这不是弄啥嘞吗!",
"voice": "longanhuan_v3",
"format": "wav",
"sample_rate": 24000,
"instruction": "请用河南话表达。"
}
Qwen3-TTS utilise des voix système compatibles avec le dialecte cible. Consultez la liste des voix Qwen-TTS.
Balises d’émotion et de sons non verbaux
RemarqueModèles concernés : qwen-audio-3.1-tts-plus, qwen-audio-3.1-tts-flash, qwen-audio-3.0-tts-plus et qwen-audio-3.0-tts-flash.
Les balises d’émotion et paralinguistiques contrôlent l’émotion et le style de la parole et insèrent des sons tels que des rires ou des soupirs à des positions précises. Écrivez les balises directement dans le texte à synthétiser, text, sans paramètre supplémentaire.
Exemples d’utilisation
Ce texte commence avec une diction enthousiaste, insère un rire à l’endroit indiqué, puis poursuit la parole :
[excited]今天的天气真不错![laughing]我们一起出去玩吧!
Ce texte passe à une diction enthousiaste dans la deuxième phrase :
[serious]请注意安全事项。[excited]好了,现在让我们开始吧!
Balises prises en charge
Balises de contrôle
Une balise de contrôle définit l’émotion ou le style du texte qui suit jusqu’à la balise de contrôle suivante. Si une longue phrase est segmentée automatiquement, son effet reste limité au segment obtenu.
| Balise | Description |
|---|---|
| Triste |
| Émerveillé |
| Cri grave et puissant |
| Tremblant |
| En colère |
| Enthousiaste |
| Sarcastique |
| Curieux |
| Diction de Dracula |
| Ennuyé |
| Fatigué |
| Méprisant |
| Cri |
| Voix douce ASMR |
| Paniqué |
| Espiègle |
| Empathique |
| Chuchotement |
| Réticent |
| Pleurs |
| Sérieux |
| Très lent |
| Très rapide |
Balises de sons non verbaux
Une balise de son non verbal insère un son à son emplacement sans modifier le style émotionnel du texte environnant.
| Balise | Description |
|---|---|
| Inspiration brusque |
| Soupir |
| Raclement de gorge |
| Petit rire |
| Rire |
| Toux |
| Reniflement |
Modèles pris en charge
Singapour
Utilisez une clé API et un point de terminaison de cette région pour appeler ces modèles :
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus,qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - Qwen3-TTS:
qwen3-tts-flash
Chine (Pékin)
Utilisez une clé API et un point de terminaison de cette région pour appeler ces modèles :
- Qwen-Audio-TTS:
qwen-audio-3.1-tts-plus,qwen-audio-3.1-tts-flash,qwen-audio-3.0-tts-plus,qwen-audio-3.0-tts-flash - CosyVoice:
cosyvoice-v3.5-plus,cosyvoice-v3.5-flash,cosyvoice-v3-plus,cosyvoice-v3-flash,cosyvoice-v2 - Qwen3-TTS:
qwen3-tts-flash
Pour les voix système et les extraits audio, consultez les listes Qwen-Audio-TTS, CosyVoice et Qwen3-TTS. Une voix clonée ou conçue doit être utilisée avec le modèle cible indiqué à sa création.