Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Référence de l'API de génération audio

Dernière mise à jour :Oct 11, 2026

Soumettre des prompts textuels et des audios de référence via HTTPS pour recevoir des fichiers audio générés. Cette page décrit les requêtes, les réponses et la gestion des erreurs.

Prérequis

Obtenir une clé API et un ID d'espace de travail. Les définir comme variables d'environnement DASHSCOPE_API_KEY et SFM_WORKSPACE_ID.

Envoyer des requêtes HTTPS POST au point de terminaison suivant. Remplacer {WorkspaceId} par votre ID d'espace de travail.

https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer

En-têtes

En-têteObligatoireDescription
AuthorizationOuiBearer <API Key>
Content-TypeOuiapplication/json

Exemple de requête

curl --request POST \
  "https://$SFM_WORKSPACE_ID.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/tts/SpeechSynthesizer" \
  --max-time 300 \
  --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "qwen-audio-3.1-tts-next",
    "input": {
      "text_prompt": "A woman clearly says: Hello, welcome.",
      "format": "wav",
      "sample_rate": 48000,
      "channels": 2
    }
  }'

Exemple de réponse, avec des ID illustratifs et une URL de téléchargement fictive :

{
  "request_id": "example-request-id",
  "output": {
    "finish_reason": "stop",
    "audio": {
      "data": "",
      "url": "https://example.com/generated.wav",
      "id": "audio_example-request-id",
      "expires_at": 1789616932,
      "duration": 1.12
    }
  },
  "usage": {
    "duration": 1
  }
}

Télécharger le fichier en utilisant output.audio.url de la réponse réelle. L'URL est valide pendant 24 heures. Ne pas utiliser l'URL fictive ci-dessus pour télécharger l'audio.

Paramètres de la requête

model est un champ de premier niveau. Tous les paramètres de génération appartiennent à l'objet input.

ChampTypeObligatoireValeur par défautDescription
modelstringOui—ID du modèle. Voir Modèles pris en charge.
inputobjectOui—Entrée de génération audio.
input.text_promptstringOui—Description audio ou texte à synthétiser. Utiliser @voice1, @voice2 et @voice3 pour référencer les clips audio dans l'ordre. Les limites de longueur sont indiquées dans le tableau des modèles.
input.referencesarrayNon—Clips audio de référence. À omettre pour la génération texte uniquement. Le modèle actuel accepte jusqu'à 3 clips, chacun ne dépassant pas 30 secondes et 10 Mo.
input.references[].audio_urlstringConditionnel—URL audio publique accessible au service. Fournir soit ce champ, soit audio_data, mais pas les deux.
input.references[].audio_datastringConditionnel—URI des données audio : data:{mime_type};base64,{base64_encoded_data}. Mutuellement exclusif avec audio_url.
input.formatstringNonwavFormat de sortie : wav, mp3 ou pcm. La sortie Opus n'est pas prise en charge.
input.sample_rateintegerNon48000Fréquence d'échantillonnage de sortie en Hz : 8000, 16000, 24000, 44100 ou 48000.
input.channelsintegerNon2Nombre de canaux : 1 (mono) ou 2 (stéréo).
input.volumeintegerNon50Volume. Plage : [0, 100].
input.enable_cbrbooleanNonfalseMP3 uniquement. true active le débit binaire constant (CBR) ; false utilise le débit binaire variable (VBR).
input.bit_rateintegerNon128CBR MP3 uniquement, en kbps. La sortie réelle dépend de la fréquence d'échantillonnage et des niveaux de débit MP3 pris en charge. Voir ci-dessous.
input.qualityintegerNon5VBR MP3 uniquement. Plage : [0, 9], où 0 correspond à la qualité la plus élevée.
input.ratefloatNon1.0Vitesse de parole. Plage : [0.5, 2.0].
input.seedintegerNon42Graine aléatoire au niveau de la requête.
input.enable_aigc_tagbooleanNonfalseIndique s'il faut ajouter un filigrane d'identification AIGC à l'audio généré.

L'audio de référence prend en charge WAV, MP3 et OGG Opus, mais pas le PCM brut. Les formats de référence et de sortie ont des limites différentes : OGG Opus peut être utilisé en entrée, mais Opus ne peut pas être utilisé en sortie.

Soumettre l'audio de référence via une URL ou des données Base64, et non via un ID de voix système ou clonée.

Débit CBR MP3

Fréquence d'échantillonnage (Hz)Débit de sortie minimum (kbps)Débit de sortie maximum (kbps)
8000864
16000, 240008160
44100, 4800032320

La fréquence d'échantillonnage et les niveaux de débit MP3 déterminent le débit de sortie. Le tableau indique les limites de sortie, et non la prise en charge de chaque entier dans chaque plage. Les valeurs hors plage sont contraintes aux limites correspondantes.

Soumettre un audio de référence

Cet exemple Python utilise deux clips audio de référence pour générer une conversation à deux locuteurs. Installer requests, préparer reference1.wav et reference2.wav, chacun contenant un locuteur différent et respectant les limites du modèle, puis définir les variables d'environnement décrites ci-dessus.

Les emplacements suivent l'ordre de la liste references : le premier élément, reference1.wav, correspond à @voice1 ; le deuxième élément, reference2.wav, correspond à @voice2. L'exemple encode chaque clip en Base64 et référence les deux locuteurs dans le prompt.

import base64
import os
from pathlib import Path

import requests

reference1 = base64.b64encode(Path("reference1.wav").read_bytes()).decode("ascii")
reference2 = base64.b64encode(Path("reference2.wav").read_bytes()).decode("ascii")
workspace_id = os.environ["SFM_WORKSPACE_ID"]
endpoint = (
    f"https://{workspace_id}.cn-beijing.maas.aliyuncs.com"
    "/api/v1/services/audio/tts/SpeechSynthesizer"
)
response = requests.post(
    endpoint,
    headers={
        "Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "model": "qwen-audio-3.1-tts-next",
        "input": {
            "text_prompt": "@voice1 says: It is sunny today. Shall we take a walk? @voice2 replies: Sure, let us go to the park.",
            "references": [
                {"audio_data": f"data:audio/wav;base64,{reference1}"},
                {"audio_data": f"data:audio/wav;base64,{reference2}"}
            ],
            "format": "wav",
        },
    },
    timeout=300,
)
response.raise_for_status()
result = response.json()
audio_response = requests.get(result["output"]["audio"]["url"], timeout=60)
audio_response.raise_for_status()
Path("output.wav").write_bytes(audio_response.content)

Pour utiliser une URL, remplacer l'élément de liste par {"audio_url": "publicly accessible audio URL"} et omettre audio_data. Les numéros de référence suivent l'ordre de la liste et doivent pointer vers des éléments existants.

Paramètres de la réponse

ChampTypeDescription
request_idstringID de requête pour le dépannage.
output.finish_reasonstring"stop" lors d'une terminaison normale.
output.audio.datastringUne chaîne vide pour ce mode de requête. Télécharger l'audio complet depuis output.audio.url.
output.audio.urlstringURL de téléchargement de l'audio complet, valide pendant 24 heures.
output.audio.idstringID de l'audio généré.
output.audio.expires_atintegerHorodatage d'expiration de l'URL de téléchargement.
output.audio.durationfloatDurée de l'audio généré en secondes.
usage.durationintegerDurée de l'audio généré arrondie à la seconde entière la plus proche. Ce champ n'est pas utilisé pour calculer les frais de tokens.

Les requêtes de podcast peuvent générer jusqu'à 240 secondes (4 minutes) d'audio ; les autres scénarios sont limités à 120 secondes par requête. Pour les tarifs, voir Tarification des modèles.

Modèles pris en charge

ID du modèleLimite du promptDurée maximale générée par requête
qwen-audio-3.1-tts-next3,000 caractèresPodcasts : 240 secondes (4 minutes) ; autres scénarios : 120 secondes

Pour les cas d'utilisation, les exemples audio et les conseils sur les prompts, voir Génération audio. Les exemples de ce document utilisent ce modèle.

Gestion des erreurs

Exemple de réponse d'erreur :

{
  "request_id": "example-request-id",
  "code": "CLIENT_ERROR",
  "message": "text_prompt exceeds the maximum length of 3000 characters."
}
Statut HTTPcodeAction
400CLIENT_ERRORVérifier la longueur du prompt, le nombre et la durée des références, l'exclusivité URL/Base64, les indices de référence et l'utilisation du champ voice non pris en charge.
404InvalidParameterPour « Model not exist. », vérifier l'ID du modèle, la région et la disponibilité du modèle pour votre compte.
401InvalidApiKeyVérifier la validité de la clé API.
403AccessDeniedVérifier les permissions d'accès au modèle.
429Throttling.RateQuotaRéduire le taux de requêtes.
400DataInspectionFailedVérifier si le prompt ou l'audio de référence respecte les exigences de sécurité du contenu.
500InternalErrorConserver le request_id et réessayer ultérieurement ou contacter le support technique.