Zonos2 Text to Speech
Intégrer
zonos2
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/zonos2?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/zonos2?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/zonos2", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/fr-FR/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "zonos2",
"input": {
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
}
Appelez le modèle Zonos2 Text to Speech (zonos2) via la Doitong API. Documentation pour les agents : https://doitong.com/fr-FR/developers/models/zonos2.md
POST https://api.doitong.com/v1/run/zonos2?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}
Si le statut de la réponse est "queued" ou "running", interrogez GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 jusqu'à ce qu'il soit "succeeded" ; les fichiers se trouvent dans outputs[].url. POST https://api.doitong.com/v1/quote/zonos2 avec le même corps renvoie le prix exact avant l'exécution.
Jusqu’à 0,02 $ par exécution facturation selon l'utilisation réelle, le reste est remboursé L'exécuter sur cette page
Votre nouvelle clé API. Elle ne s'affiche que maintenant et figure déjà dans le code et dans le champ de clé API ci-dessous. Gardez-la secrète : ne la mettez jamais dans du code exécuté dans un navigateur.
Votre premier résultat apparaîtra ici
Construisez une requête ci-dessous et exécutez-la avec votre clé API. Les sorties sont copiées dans notre stockage, conservées indéfiniment ou 7 jours gratuitement.
Créer une requête
Les contrôles sont générés à partir du schéma du modèle. Le code et le prix se mettent à jour lorsque vous les modifiez.
/run/zonos2?wait=20
devis → 0,02 $
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.com/v1/run/zonos2?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/zonos2?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/zonos2", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "zonos2",
"input": {
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"wait_seconds": 20
}
}
}
Exécuter cette requête
Votre clé reste dans ce navigateur : elle est envoyée uniquement à la Doitong API et enregistrée dans localStorage uniquement si vous cochez Mémoriser. Obtenir une clé API
À propos de Zonos2 Text to Speech
Clone une voix depuis `reference_audio_url` et prononce le texte, en renvoyant un audio WAV mono à 44.1kHz ainsi que la graine utilisée. `language` définit la normalisation du texte pour en_us, en_gb, fr_fr, de, es, it, pt_br, ja, cmn et ko. `accurate_mode` privilégie la proximité de la voix ou son expressivité, et l’échantillonnage peut être réglé via `temperature`, `top_p`, `min_p`, `top_k` et `max_tokens` (jusqu’à 6144).
Paramètres
reference_audio_urlobligatoire
languagefacultatif
seedfacultatif
accurate_modefacultatif
clean_speaker_backgroundfacultatif
temperaturefacultatif
top_pfacultatif
min_pfacultatif
top_kfacultatif
max_tokensfacultatif
enable_safety_checkerfacultatif
Les paramètres de fichier acceptent une URL publique https://, un URI data: jusqu'à 10 MB ou le file_url d'un téléversement. Fichiers
Sortie
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "zonos2",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 20,
"usd": "0.02",
"charged": 20,
"refunded": 0
},
"input": {
"reference_audio_url": "https://content.doitong.com/audio/showcase/v3/tools/dub_es.mp3"
},
"output": {
"audio": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
"content_type": "audio/mpeg",
"file_name": "0-output.mp3",
"file_size": 1843200
},
"seed": 42
},
"outputs": [
{
"type": "audio",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3",
"content_type": "audio/mpeg",
"file_size": 1843200,
"duration": 12,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Champs de sortie
- audio
- object {url, content_type, file_name, file_size}Audio de sortie au format WAV, avec une fréquence d’échantillonnage de 44.1kHz et un canal mono.
- seed
- integerValeur de graine appliquée pendant la génération.
Plus de modèles : Texte vers parole
Pour les agents IA : cette page au format Markdown est disponible à l'adresse https://doitong.com/fr-FR/developers/models/zonos2.md. Tous les modèles et guides : https://doitong.com/developers/llms.txt