Créez une voix personnalisée à partir d’un échantillon audio pour la synthèse vocale ou les conversations vocales en temps réel.
Présentation de la fonctionnalité
Le clonage vocal permet de personnaliser les assistants vocaux, les annonces de marque et les contenus audio, sans entraîner de modèle.
RemarquePour créer une voix à partir d’une description en langage naturel, sans échantillon audio, utilisez Conception vocale.
Prérequis
-
Obtenez une clé API et définissez la variable d’environnement
DASHSCOPE_API_KEY. -
Obtenez l’ID de votre espace de travail et remplacez
YOUR_WORKSPACE_IDdans les exemples. Consultez Régions et points de terminaison. -
Installez la bibliothèque HTTP Python
requests:pip install requests -
Préparez un fichier audio conforme aux exigences audio. Qwen-Audio-TTS, Qwen-Audio-Realtime et CosyVoice acceptent une URL publique ou un Data URI encodé en Base64 ; MiniMax utilise toujours une URL publique. Les exemples ci-dessous utilisent l’URL du fichier audio d’exemple. Pour l’encodage et les paramètres des fichiers locaux, consultez l’API HTTP.
Prise en main
RemarqueUne voix clonée pour Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice est liée à son target_model lors de sa création et ne peut pas être utilisée avec un autre modèle. Pour utiliser la même voix de référence avec plusieurs modèles, créez une voix distincte pour chacun.
Qwen-Audio-TTS / CosyVoice
Qwen-Audio-TTS et CosyVoice utilisent le même processus de création de voix et de synthèse de base. L’exemple suivant utilise qwen-audio-3.1-tts-flash.
- Créer une voix : transmettez l’URL de l’audio de référence ou le Data URI encodé en Base64 dans le champ
audiode l’API HTTP. Définisseztarget_modelsur le modèle cible etprefixsur le préfixe du nom de voix. - Synthétiser la parole : passez l’ID de voix retourné dans
voice, utilisez le même modèle cible et enregistrez l’audio synthétisé.
import os
import time
import requests
workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-tts-flash"
base_url = f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1"
headers = {"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"}
response = requests.post(
f"{base_url}/services/audio/tts/customization",
headers=headers,
json={
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": target_model,
"prefix": "myvoice",
"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav",
},
},
timeout=60,
)
response.raise_for_status()
voice_id = response.json()["output"]["voice_id"]
print(f"voice_id: {voice_id}")
for _ in range(30):
response = requests.post(
f"{base_url}/services/audio/tts/customization",
headers=headers,
json={
"model": "voice-enrollment",
"input": {"action": "query_voice", "voice_id": voice_id},
},
timeout=60,
)
response.raise_for_status()
status = response.json()["output"]["status"]
if status == "OK":
break
if status != "DEPLOYING":
raise RuntimeError(f"Voice status: {status}")
time.sleep(1)
else:
raise TimeoutError("Voice is not ready")
response = requests.post(
f"{base_url}/services/audio/tts/SpeechSynthesizer",
headers=headers,
json={
"model": target_model,
"input": {
"text": "The weather is pleasant today. Enjoy a walk outside and have a wonderful day.",
"voice": voice_id,
"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’exemple enregistre l’audio synthétisé dans output.wav. Conservez l’ID de voix affiché pour une utilisation ultérieure.
Qwen-Audio-Realtime
Les voix clonées Qwen-Audio-Realtime personnalisent la voix des réponses dans les conversations vocales en temps réel. L’exemple suivant crée une voix pour qwen-audio-3.1-realtime-plus.
import os
import time
import requests
workspace_id = "YOUR_WORKSPACE_ID"
target_model = "qwen-audio-3.1-realtime-plus"
base_url = f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com/api/v1"
headers = {"Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}"}
response = requests.post(
f"{base_url}/services/audio/tts/customization",
headers=headers,
json={
"model": "voice-enrollment",
"input": {
"action": "create_voice",
"target_model": target_model,
"prefix": "myvoice",
"audio": "https://dashscope.oss-cn-beijing.aliyuncs.com/samples/audio/cosyvoice/cosyvoice-zeroshot-sample.wav",
},
},
timeout=60,
)
response.raise_for_status()
voice_id = response.json()["output"]["voice_id"]
print(f"voice_id: {voice_id}")
for _ in range(30):
response = requests.post(
f"{base_url}/services/audio/tts/customization",
headers=headers,
json={
"model": "voice-enrollment",
"input": {"action": "query_voice", "voice_id": voice_id},
},
timeout=60,
)
response.raise_for_status()
status = response.json()["output"]["status"]
if status == "OK":
break
if status != "DEPLOYING":
raise RuntimeError(f"Voice status: {status}")
time.sleep(1)
else:
raise TimeoutError("Voice is not ready")
Après la connexion au service de conversation vocale en temps réel, définissez session.voice sur l’ID de voix retourné dans le premier événement session.update. Remplacez VOICE_ID ci-dessous par cet ID. Le modèle de session doit correspondre au target_model utilisé pour créer la voix.
{
"type": "session.update",
"session": {
"voice": "VOICE_ID"
}
}
Pour plus de paramètres et d’exemples de clonage vocal, consultez l’API HTTP, le SDK Python et le SDK Java.
Pour utiliser une voix clonée dans la synthèse vocale ou les conversations vocales en temps réel, consultez :
- Qwen-Audio-TTS : Accès au modèle
- CosyVoice : Accès au modèle
- Qwen-Audio-Realtime : Accès au modèle
Exigences audio
La qualité de l’audio d’entrée affecte la similarité et le naturel de la voix. Respectez les spécifications du modèle cible et les conseils d’enregistrement ci-dessous pour réduire le bruit, la réverbération et les voix d’autres personnes.
| Élément | Exigence |
|---|---|
Formats | WAV (16-bit), MP3, M4A |
Durée | 10 à 20 secondes recommandées ; 60 secondes maximum. |
Taille du fichier | ≤ 10 MB |
Fréquence d’échantillonnage | ≥ 16 kHz |
Canaux | Mono ou stéréo. Seul le premier canal d’un audio stéréo est traité et doit contenir une voix valide. |
Contenu | Au moins 5 secondes de lecture continue et claire, avec seulement de courtes pauses (≤ 2 secondes) ailleurs. Évitez la musique de fond, le bruit ambiant et les autres voix. Utilisez une voix parlée à un rythme normal, plutôt que des chansons ou des enregistrements chantés. |
Langues prises en charge |
Cliquez pour voir les langues prises en charge par modèle CosyVoice
|
Des enregistrements clairs et naturels contribuent à produire un audio de référence de qualité et à préserver les caractéristiques de la voix. Avant d’enregistrer, consultez les conseils d’enregistrement et de prise de son ci-dessous.
Cliquez pour voir les conseils d’enregistrement et de prise de son
Matériel d'enregistrement
Vous pouvez utiliser un smartphone, un dictaphone numérique ou un équipement d'enregistrement professionnel. Nous recommandons un appareil prenant en charge un taux d'échantillonnage élevé (≥ 24 kHz) afin de répondre aux exigences audio.
Environnement d'enregistrement
Lieu
- Enregistrez dans un petit espace clos de 10 mètres carrés ou moins.
- Privilégiez les pièces dotées de matériaux absorbants tels que de la mousse acoustique, des tapis ou des rideaux.
- Évitez les halls ouverts, les salles de conférence, les salles de classe et autres espaces très réverbérants.
Contrôle du bruit
- Bruit extérieur : Fermez les portes et les fenêtres pour éviter les nuisances liées à la circulation, aux travaux ou à d'autres perturbations.
- Bruit intérieur : Éteignez les climatiseurs, ventilateurs, ballasts de lampes fluorescentes et autres appareils. Vous pouvez enregistrer le son ambiant avec votre téléphone et le réécouter à volume élevé pour identifier les sources potentielles de bruit.
Contrôle de la réverbération
- La réverbération rend le son flou et réduit sa clarté.
- Réduisez les réflexions sur les surfaces lisses : fermez les rideaux, ouvrez les portes des armoires et drapez des vêtements ou des couvertures sur les tables et les meubles.
- Utilisez des objets aux formes irrégulières (comme des bibliothèques et des meubles rembourrés) pour créer des réflexions diffuses.
Texte à lire
- Il n'y a aucune restriction spécifique concernant le contenu. Nous vous recommandons d'adapter le texte à votre cas d'utilisation cible.
- Évitez les phrases courtes (comme « bonjour » ou « oui »). Privilégiez des phrases complètes.
- Maintenez une cohérence sémantique et évitez les pauses fréquentes pendant la lecture (il est recommandé de parler en continu pendant au moins 3 secondes sans interruption).
- Gardez une vitesse de parole constante tout au long de l'enregistrement. Évitez de parler trop vite au début ou à la fin, ce qui pourrait provoquer des bégaiements lors de la synthèse.
- Adoptez une expression émotionnelle appropriée (chaleur, convivialité ou sérieux, par exemple). Évitez une lecture mécanique.
- N'incluez aucun contenu sensible (politique, pornographique ou violent). Cela entraînerait l'échec du clonage.
Bonnes pratiques
En prenant l'exemple d'une chambre typique, après avoir appliqué les mesures de contrôle du bruit et de la réverbération :
- Familiarisez-vous au préalable avec le texte, définissez le ton du personnage et exprimez-vous naturellement.
- Maintenez une distance d'environ 10 cm par rapport au dispositif d'enregistrement afin d'éviter toute distorsion due aux plosives ou un signal trop faible.
Gestion des voix
Qwen-Audio-TTS, Qwen-Audio-Realtime et CosyVoice utilisent les mêmes API de consultation, de mise à jour et de suppression des voix. Pour les interfaces et paramètres, consultez la Référence de l’API HTTP de clonage vocal.
- Lister les voix : affichez les voix personnalisées existantes de votre compte.
- Consulter les détails d’une voix : affichez notamment sa date de création et le modèle associé.
- Mettre à jour une voix : remplacez l’audio de référence tout en conservant l’ID de la voix existante.
- Supprimer une voix : supprimez les voix inutilisées pour libérer du quota.
Les voix créées restent valides par défaut. Conservez leur ID et utilisez l’API de consultation pour vérifier leur disponibilité si nécessaire.
Modèles pris en charge
Chine (Pékin)
Utilisez une clé API de cette région pour appeler les modèles suivants :
-
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
-
Qwen-Audio-Realtime: qwen-audio-3.1-realtime-plus, qwen-audio-3.0-realtime-plus, qwen-audio-3.0-realtime-flash
-
CosyVoice: cosyvoice-v3.5-plus, cosyvoice-v3.5-flash, cosyvoice-v3-plus, cosyvoice-v3-flash, cosyvoice-v2
Singapour
Utilisez une clé API de cette région pour appeler les modèles suivants :
-
Qwen-Audio-TTS: qwen-audio-3.1-tts-plus, qwen-audio-3.0-tts-plus, qwen-audio-3.0-tts-flash
-
CosyVoice: cosyvoice-v3-plus, cosyvoice-v3-flash
Quotas et limites
-
Nombre de voix : chaque compte Alibaba Cloud Model Studio peut disposer de 1 000 voix personnalisées au total. Le clonage vocal et la conception vocale partagent ce quota de compte entre tous les modèles.
Remarque
- Les nouvelles demandes de création par clonage ou conception vocale échouent lorsque le quota est atteint. Supprimez les voix inutilisées pour libérer du quota avant d’en créer une autre.
Facturation
- Qwen-Audio-TTS / Qwen-Audio-Realtime / CosyVoice : La création de voix est gratuite. La synthèse et les conversations vocales en temps réel utilisant une voix clonée sont facturées selon le modèle cible. Consultez Tarification des modèles.