Voice Design permet de créer des voix personnalisées à partir de simples descriptions en langage naturel, sans échantillon audio.
Présentation
Voice Design se prête au prototypage rapide, à la création de contenu et au doublage de personnages de jeux vidéo. Alibaba Cloud Model Studio propose cette fonctionnalité via les familles de modèles suivantes :
- CosyVoice : prend en charge la synthèse vocale en temps réel . Disponible dans la région de Pékin (séries v3.5 et v3).
- Qwen-TTS : assure la synthèse vocale en temps réel et hors temps réel avec une limite de description de voix plus élevée (2 048 caractères). Disponible dans les régions de Pékin et de Singapour.
Si vous disposez déjà d'échantillons audio, consultez la rubrique Clonage de voix. Pour choisir le modèle approprié, reportez-vous à Synthèse vocale.
Prérequis
- Configurez une clé API et définissez-la comme variable d'environnement.
- Pour appeler l'API via le SDK DashScope, installez la dernière version du SDK.
Démarrage rapide
L'utilisation de Voice Design s'articule autour de trois étapes : décrire, créer et utiliser.
- Rédigez une description de voix : détaillez les caractéristiques vocales souhaitées en langage naturel. Pour des instructions détaillées, consultez Rédiger des descriptions de voix.
- Créez une voix : appelez l'API Voice Design. Le système génère une voix basée sur votre description et renvoie un extrait audio de prévisualisation. Écoutez cet extrait avant d'utiliser la voix en production.
- Synthétisez la parole avec la voix créée : appelez l'API de synthèse vocale en spécifiant l'ID de la voix pour générer la parole.
Voice Design avec CosyVoice
L'exemple suivant illustre la création d'une voix CosyVoice à partir d'une description textuelle et son utilisation pour la synthèse vocale.
ImportantVoice Design pour CosyVoice est disponible uniquement dans la région de Pékin (séries v3.5 et v3).
Appelez l'API avec deux paramètres : voice_prompt pour la description de la voix et preview_text pour le texte lu dans l'extrait audio de prévisualisation.
curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": "cosyvoice-v3.5-plus",
"voice_prompt": "A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.",
"preview_text": "Dear listeners, hello everyone. Welcome to the evening news.",
"prefix": "announcer"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
curl -X POST 'https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": "cosyvoice-v3.5-plus",
"voice_prompt": "A composed middle-aged male announcer with a deep, rich and magnetic voice, a steady speaking speed and clear articulation, is suitable for news broadcasting or documentary commentary.",
"preview_text": "Dear listeners, hello everyone. Welcome to the evening news.",
"prefix": "announcer"
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
Étape 2 : Synthétiser la parole avec la voix conçue
Dans la requête suivante, utilisez la valeur voice_id renvoyée à l'étape précédente.
# coding=utf-8
import dashscope
from dashscope.audio.tts_v2 import *
import os
# The API keys for the Singapore and Beijing regions are different. Get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# If you have not configured the environment variable, replace the following line with your Model Studio API key: dashscope.api_key = "sk-xxx"
dashscope.api_key = os.environ.get('DASHSCOPE_API_KEY')
# The following configuration is for the China (Beijing) region. Replace "{WorkspaceId}" with your actual workspace ID.
dashscope.base_websocket_api_url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference'
# Use the same model for voice design and speech synthesis
model = "cosyvoice-v3.5-plus"
# Replace the voice parameter with the custom voice generated by voice design
voice = "voice_id"
# Instantiate SpeechSynthesizer, passing the model, voice, and other request parameters in the constructor
synthesizer = SpeechSynthesizer(model=model, voice=voice)
# Send text for synthesis and get binary audio
audio = synthesizer.call("What is the weather like today?")
# Establishing the WebSocket connection is required when sending text for the first time, so the first-package latency includes the connection setup time
print('[Metric] requestId: {}, first-package latency: {} ms'.format(
synthesizer.get_last_request_id(),
synthesizer.get_first_package_delay()))
# Save the audio to a local file
with open('output.mp3', 'wb') as f:
f.write(audio)
Voice Design avec Qwen-TTS
Les exemples ci-dessous montrent comment créer une voix et l'utiliser pour la synthèse vocale.
RemarqueÉcoutez l'extrait audio de prévisualisation avant d'utiliser la voix pour la synthèse afin de valider le résultat et d'éviter des coûts API inutiles.
Python
import os
import requests
import dashscope
# ======= Constants =======
DEFAULT_TARGET_MODEL = "qwen3-tts-vd-2026-01-26" # Use the same model for voice design and speech synthesis
DEFAULT_PREFERRED_NAME = "custom_voice"
# Voice description: describe the desired voice characteristics in natural language
VOICE_PROMPT = "A young and lively female voice with a fast speaking rate and a noticeably rising intonation, suitable for introducing fashion products."
def create_voice_by_design(voice_prompt: str,
target_model: str = DEFAULT_TARGET_MODEL,
preferred_name: str = DEFAULT_PREFERRED_NAME) -> str:
"""
Create a custom voice by voice description and return the voice parameter.
"""
# The API keys for the Singapore and Beijing regions are different. Get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# If you have not configured the environment variable, replace the following line with your Model Studio API key: api_key = "sk-xxx"
api_key = os.getenv("DASHSCOPE_API_KEY")
# Singapore region
url = "https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization"
payload = {
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": target_model,
"preferred_name": preferred_name,
"voice_prompt": voice_prompt,
"preview_text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
resp = requests.post(url, json=payload, headers=headers)
if resp.status_code != 200:
raise RuntimeError(f"Failed to create voice: {resp.status_code}, {resp.text}")
result = resp.json()
preview_audio = result.get("output", {}).get("preview_audio")
if preview_audio:
import base64
audio_data = base64.b64decode(preview_audio["data"])
with open("preview_audio.wav", "wb") as f:
f.write(audio_data)
print(f"Preview audio saved to preview_audio.wav ({len(audio_data)} bytes)")
try:
return result["output"]["voice"]
except (KeyError, ValueError) as e:
raise RuntimeError(f"Failed to parse voice response: {e}")
if __name__ == '__main__':
# Singapore region
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
voice_id = create_voice_by_design(VOICE_PROMPT)
print(f"Created voice ID: {voice_id}")
text = "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
response = dashscope.MultiModalConversation.call(
model=DEFAULT_TARGET_MODEL,
# The API keys for the Singapore and Beijing regions are different. Get an API key: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# If you have not configured the environment variable, replace the following line with your Model Studio API key: api_key = "sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
text=text,
voice=voice_id,
stream=False
)
print(response)
cURL
Étape 1 : Créer une voix à partir d'une descriptionLa configuration suivante concerne la région de Singapour.
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/audio/tts/customization' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen-voice-design",
"input": {
"action": "create",
"target_model": "qwen3-tts-vd-2026-01-26",
"preferred_name": "custom_voice",
"voice_prompt": "A young and lively female voice with a fast speaking rate and a noticeably rising intonation, suitable for introducing fashion products.",
"preview_text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing."
},
"parameters": {
"sample_rate": 24000,
"response_format": "wav"
}
}'
Étape 2 : Synthétiser la parole avec la voix conçueRemplacez YOUR_VOICE_ID par la valeur voice renvoyée à l'étape précédente.
La configuration suivante concerne la région de Singapour.
curl -X POST 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3-tts-vd-2026-01-26",
"input": {
"text": "Hello everyone, welcome to our live stream! The product we are recommending today is truly amazing.",
"voice": "YOUR_VOICE_ID"
}
}'
Rédiger des descriptions de voix
La description de la voix (voice_prompt) détermine la qualité de la voix générée. Plus votre description est précise et détaillée, plus le résultat correspondra à vos attentes.
Exigences et limites
- Limite de longueur : la longueur maximale de
voice_promptvarie selon le modèle : jusqu'à 500 caractères pour CosyVoice et jusqu'à 2 048 caractères pour Qwen-TTS. - Langues prises en charge : les descriptions de voix acceptent uniquement le chinois et l'anglais.
Principes clés
- Soyez précis plutôt que vague : employez des termes décrivant les qualités vocales, tels que « profond », « clair » ou « rapide ». Évitez les mots subjectifs ou ambigus comme « agréable » ou « normal ».
- Adoptez une approche multidimensionnelle : une bonne description couvre plusieurs aspects (comme le genre, l'âge et l'émotion). Se limiter à « voix féminine » est trop général pour produire un résultat distinctif.
- Restez objectif : concentrez-vous sur les caractéristiques physiques et perceptuelles de la voix. Par exemple, préférez « aiguë avec un ton énergique » à « ma voix préférée ».
- Visez l'originalité plutôt que l'imitation : décrivez des qualités vocales au lieu de demander l'imitation de personnes spécifiques (telles que des célébrités ou des acteurs). Le modèle ne prend pas en charge l'imitation et de telles requêtes peuvent soulever des problèmes de droits d'auteur.
- Faites concis : évitez de répéter des synonymes ou d'ajouter des modificateurs inutiles. Assurez-vous que chaque mot a une fonction précise.
Dimensions de description
Combinez les dimensions suivantes pour décrire une voix. Plus vous intégrez de critères, plus le résultat sera fidèle.
Dimension | Exemples |
|---|---|
Genre | Masculin, féminin, neutre |
Âge | Enfant (5-12 ans), adolescent (13-18 ans), jeune adulte (19-35 ans), âge mûr (36-55 ans), senior (55 ans et plus) |
Tonalité | Aiguë, moyenne, grave, légèrement aiguë, légèrement grave |
Vitesse | Rapide, moyenne, lente, légèrement rapide, légèrement lente |
Émotion | Joyeux, calme, doux, sérieux, vivant, posé, apaisant |
Caractéristiques | Résonnant, clair, rauque, velouté, sucré, profond, puissant |
Cas d'utilisation | Journal télévisé, publicité, livre audio, personnage d'animation, assistant vocal, narration documentaire |
Exemples
- Style radiophonique standard : articulation claire et précise avec une élocution parfaite
- Voix féminine jeune et dynamique, débit rapide avec une intonation montante marquée, adaptée aux présentations de produits de mode
- Voix masculine d'âge mûr, calme et posée, profonde et résonnante, idéale pour la lecture de journaux ou la narration documentaire
- Femme douce et réfléchie d'une trentaine d'années, tonalité régulière, convenant à la lecture de livres audio
- Voix d'enfant mignonne, fillette d'environ 8 ans, élocution légèrement enfantine, parfaite pour le doublage de personnages d'animation
Gérer les voix personnalisées
Voice Design permet de lister les voix, de consulter leurs détails et de les supprimer. Pour les endpoints API et les détails des paramètres, consultez la Référence API.
Quota et facturation
Quota de voix et nettoyage automatique
Limite totale de voix : chaque compte Alibaba Cloud Model Studio dispose d'une limite distincte de 1 000 voix personnalisées pour CosyVoice et de 1 000 pour Qwen-TTS. Ces deux quotas sont comptabilisés indépendamment.
Nettoyage automatique : si aucune requête de synthèse vocale n'utilise une voix pendant un an, le système la supprime automatiquement.
Règles de facturation
-
CosyVoice : la création de voix est gratuite.
-
Qwen-TTS : chaque création de voix coûte 0,2 USD. Les créations échouées ne sont pas facturées.
Quota gratuit (région Singapour uniquement) :
- Vous bénéficiez de 10 créations de voix gratuites durant les 90 premiers jours suivant l'activation d'Alibaba Cloud Model Studio.
- Les créations échouées n'entament pas le quota gratuit.
- La suppression d'une voix ne restaure pas le quota gratuit.
- Une fois le quota gratuit épuisé ou la période de 90 jours expirée, la création de voix est facturée au tarif de 0,2 USD par voix.
Modèles et régions pris en charge
Singapore
Pour appeler les modèles suivants, sélectionnez une clé API dans la région de Singapour :
-
Qwen-TTS :
- Qwen3-TTS-VD-Realtime: qwen3-tts-vd-realtime-2026-01-15 (dernier snapshot), qwen3-tts-vd-realtime-2025-12-16 (snapshot)
- Qwen3-TTS-VD : qwen3-tts-vd-2026-01-26 (dernier snapshot)
China (Beijing)
Pour appeler les modèles suivants, sélectionnez une clé API dans la région de Pékin :
-
CosyVoice : cosyvoice-v3.5-plus, cosyvoice-v3.5-flash, cosyvoice-v3-plus, cosyvoice-v3-flash
-
Qwen-TTS :
- Qwen3-TTS-VD-Realtime: qwen3-tts-vd-realtime-2026-01-15 (dernier snapshot), qwen3-tts-vd-realtime-2025-12-16 (snapshot)
- Qwen3-TTS-VD : qwen3-tts-vd-2026-01-26 (dernier snapshot)
Remarque
- Voice Design pour CosyVoice repose sur le modèle FunAudioGen-VD.
- Un même texte de description (prompt) peut générer des voix légèrement différentes à chaque fois. Générez plusieurs voix et sélectionnez la meilleure.
Référence API
FAQ
La même description de voix produit-elle toujours la même voix ?
Pas nécessairement. Voice Design comporte une part d'aléatoire ; une même description peut donc générer des voix légèrement différentes à chaque tentative. Nous vous conseillons de générer plusieurs voix, de les écouter, puis de sélectionner la meilleure.
Quelles langues sont prises en charge pour les descriptions de voix ?
Actuellement, les descriptions de voix (voice_prompt) acceptent uniquement le chinois et l'anglais. Toutefois, la voix générée peut synthétiser la parole dans plusieurs langues.
Quelle est la différence entre Voice Design et le clonage de voix ?
Voice Design crée une voix ex nihilo à partir de descriptions textuelles, sans nécessiter d'échantillons audio. Cette approche convient parfaitement à la conception de nouvelles identités vocales. À l'inverse, le clonage de voix reproduit une voix existante à partir d'échantillons audio réels, ce qui est idéal pour restituer la voix d'une personne spécifique. Pour plus de détails, consultez Clonage de voix.