Kotoba Text-to-Speech
Intégrer
kotoba-technologies/kotoba-tts/v2/tts/ws
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/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/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}),
});
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.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/kotoba-technologies/kotoba-tts/v2/tts/ws", 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-CA/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.ru/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "kotoba-technologies/kotoba-tts/v2/tts/ws",
"input": {
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}
}
Appelez le modèle Kotoba Text-to-Speech (kotoba-technologies/kotoba-tts/v2/tts/ws) par l’intermédiaire de Doitong API. Documentation pour les agents : https://doitong.com/fr-CA/developers/models/kotoba-technologies/kotoba-tts/v2/tts/ws.md
POST https://api.doitong.ru/v1/run/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}
Si l’état de la réponse est "queued" ou "running", interrogez GET https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20 jusqu’à ce qu’il soit "succeeded"; les fichiers se trouvent dans outputs[].url. POST https://api.doitong.ru/v1/quote/kotoba-technologies/kotoba-tts/v2/tts/ws avec le même corps renvoie le prix exact avant l’exécution.
Cette requête: 0,003 $ 3 crédits API · ≈ 0,32 ₽ L’exécuter sur cette page
Votre nouvelle clé API. Elle est affichée uniquement 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 qui s’exécute dans un navigateur.
Votre premier résultat apparaîtra ici
Créez 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 pendant 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 au fur et à mesure de vos modifications.
/run/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20
devis → 0,003 $
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/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/kotoba-technologies/kotoba-tts/v2/tts/ws?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
}),
});
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.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/kotoba-technologies/kotoba-tts/v2/tts/ws", 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": "kotoba-technologies/kotoba-tts/v2/tts/ws",
"input": {
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
},
"wait_seconds": 20
}
}
}
Exécuter cette requête
Votre clé reste dans ce navigateur : elle est envoyée uniquement au Doitong API et enregistrée dans localStorage uniquement si vous cochez Mémoriser. Obtenir une clé API
À propos de Kotoba Text-to-Speech
Prononce le `text` japonais de 400 caractères maximum, avec `language` fixé à ja. Choisissez la voix avec `speaker_id` : male-01 ou female-01. La sortie est un fichier WAV mono de 24 kHz et 16 bits, accompagné de la durée en secondes et du texte synthétisé. L’audio est diffusé pendant sa production.
Paramètres
textrequis
languagerequis
speaker_idrequis
Sortie
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "kotoba-technologies/kotoba-tts/v2/tts/ws",
"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": 3,
"usd": "0.003",
"charged": 3,
"refunded": 0
},
"input": {
"text": "Hello from Doitong. This is a short test sentence.",
"language": "ja",
"speaker_id": "male-01"
},
"output": {
"audio": {
"content_type": "audio/mpeg",
"file_name": "0-output.mp3",
"file_size": 1843200,
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp3"
},
"audio_duration_secs": 1.0,
"text": "string"
},
"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.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Champs de sortie
- audio
- object {content_type, file_name, file_size, url}Lien vers le fichier de parole synthétisée au format WAV, avec un audio mono à 24 kHz et une profondeur de 16 bits.
- audio_duration_secs
- numberDurée de l’audio synthétisé en secondes.
- text
- stringTexte utilisé pour synthétiser la parole.
Plus de modèles : Texte vers parole
Pour les agents IA : cette page en Markdown se trouve à https://doitong.com/fr-CA/developers/models/kotoba-technologies/kotoba-tts/v2/tts/ws.md. Tous les modèles et guides : https://doitong.com/developers/llms.txt