Aller au contenu
kàddu

Référence de l'API

Une petite API REST. Toutes les réponses sont en JSON, sauf /v1/speak qui renvoie de l'audio.

URL de basehttps://api.kaddu.zaleo.dev

Authentification

Aucune clé n'est nécessaire pendant l'avant-première : les requêtes anonymes sont limitées par adresse IP. Pour un audio plus long et des limites plus hautes, créez une clé dans votre compte et envoyez-la en jeton bearer : Authorization: Bearer kd_live_…. Les clés ont des quotas journaliers remis à zéro à 00:00 UTC.

Limites

Gratuit (sans clé)Avec une clé
Durée audio60 s600 s
Longueur du texte5003000
Requêtes30 par 10 min600 par 10 min
Taille d'envoi25 MB

POST/v1/transcribe

Transcrire un fichier audio. Envoyez du multipart/form-data.

Paramètres

ChampTypeRequisDescription
filefileouiLe fichier audio. N'importe quel format courant ; il est converti en 16 kHz mono.
languagestringnonCode ISO 639-3, par exemple wol. Par défaut : wol.

Réponse

{
  "text": "dafa am solo lool",
  "language": "wol",
  "duration": 3.42,
  "model": "…",
  "processing_ms": 612
}

Exemples

curl -X POST https://api.kaddu.zaleo.dev/v1/transcribe \
  -F "file=@salaam.wav" \
  -F "language=wol"

POST/v1/transcribe/stream

Même entrée que /v1/transcribe. Renvoie du JSON ligne par ligne : une ligne de début, une ligne par segment d'environ 12 s dès qu'il est transcrit, puis une ligne finale avec le texte complet. Pratique pour afficher le texte pendant le traitement d'un long extrait.

{"type": "start", "duration": 50.0, "segments": 5, "model": "facebook/mms-1b-all"}
{"type": "segment", "index": 0, "start": 0.0, "end": 10.47, "text": "…"}
…
{"type": "done", "text": "…", "processing_ms": 11800}

POST/v1/speak

Synthétiser de la parole. Envoyez du JSON, recevez de l'audio/wav ou audio/mpeg.

Paramètres

ChampTypeRequisDescription
textstringouiLe texte à prononcer.
languagestringouiCode ISO 639-3, par exemple wol.
formatstringnonwav (par défaut) ou mp3.

Exemples

curl -X POST https://api.kaddu.zaleo.dev/v1/speak \
  -H "Content-Type: application/json" \
  -d '{"text": "Na nga def?", "language": "wol", "format": "mp3"}' \
  -o na-nga-def.mp3

POST/v1/translate

Traduire entre le wolof et le français. Envoyez du JSON, recevez du JSON.

Paramètres

ChampTypeRequisDescription
textstringouiLe texte à prononcer.
sourcestringouiwol ou fra.
targetstringouifra ou wol.

Exemples

curl -X POST https://api.kaddu.zaleo.dev/v1/translate \
  -H "Content-Type: application/json" \
  -d '{"text": "Na nga def?", "source": "wol", "target": "fra"}'

Réponse

{ "translation": "…", "source": "wol", "target": "fra", "model": "…", "processing_ms": 840 }

GET/v1/languages

Lister les langues, leur statut et les tâches prises en charge.

{
  "languages": [
    {
      "code": "wol",
      "name": "Wolof",
      "status": "supported",
      "stt": { "model": "…", "wer": 0.0 },
      "tts": { "model": "…" }
    }
  ],
  "limits": { "max_audio_seconds": 60, "max_text_chars": 500 }
}

GET /v1/languages renvoie aussi speed : les secondes de calcul mesurées sur le serveur par seconde d'audio (transcription) et par caractère (synthèse, traduction), pour afficher vos propres estimations.

GET/health

Vérification de santé, avec les modèles chargés en mémoire.

{ "status": "ok", "loaded_models": ["stt:wol"] }

Erreurs

Les erreurs utilisent les codes HTTP et un corps JSON avec un code stable et un message lisible. Les messages sont en anglais ou en français, selon votre en-tête Accept-Language ou ?locale=fr.

{
  "error": {
    "code": "audio_too_long",
    "message": "L'audio dure 74.2 s ; la limite est de 60 s pour votre offre."
  }
}

Codes courants

  • 400bad_audio · empty_audio · empty_text · bad_format · invalid_request
  • 401invalid_key
  • 404unsupported_language · unsupported_pair
  • 413file_too_large · audio_too_long · text_too_long
  • 429rate_limited
  • 503busy

Envoyez Accept-Language: fr pour recevoir les messages d'erreur en français.