API

Deux routes.
Une réponse chacune.

Envoyez du texte, recevez un fichier WAV. Envoyez de l'audio, recevez le texte en kreyòl. Chaque appel répond directement, sans tâche à suivre.

Il vous faut une clé d'API

Créez une clé dans votre tableau de bord, rubrique Clés d'API, et envoyez-la avec chaque requête : Authorization: Bearer lb_…. Une clé n'est affichée qu'une seule fois ; vous pouvez en avoir jusqu'à 10 et révoquer chacune à tout moment. Gardez-la secrète : appelez l'API depuis votre serveur, jamais depuis une page web. Chaque adresse reste aussi limitée à 90 requêtes de texte et 30 transcriptions toutes les dix minutes.

Créer une clé d'API

Pour les assistants IA et les générateurs de code

La même documentation en fichiers simples qu'un assistant IA lit d'un coup : donnez-lui le premier lien et il pourra écrire pour vous du code qui fonctionne.

Tarifs

1 crédit la minute d'audio.

1 crédit = 1 minute d'audio = 2 HTG, facturé à la seconde : la synthèse vocale compte les secondes d'audio produites, la transcription les secondes entendues (120 au plus par requête). Les 5 minutes offertes chaque mois à chaque compte (heure d'Haïti) passent en premier ; elles sont partagées avec vos assistants et le Studio. Une requête qui échoue n'est pas facturée. Ajoutez du crédit avec MonCash ou par carte dans votre tableau de bord.

Ce que chaque requête a coûté

X-Charged-Seconds header

Secondes d'audio facturées : produites (synthèse vocale) ou entendues (transcription).

X-Credits-Used header

Crédits pris par cette requête ; 0 tant qu'elle tient dans vos minutes offertes.

X-Credits-Left header

Crédits restant sur votre compte.

X-Free-Seconds-Left header

Secondes offertes restantes sur votre compte ce mois-ci.

Les deux routes envoient ces en-têtes. La transcription renvoie aussi les mêmes chiffres dans son JSON, sous charged.

Synthèse vocale

POST /api/tts

Lit un morceau de kreyòl avec Fatiman et répond en audio/wav, 24 kHz, 16 bits, mono. Les en-têtes indiquent la durée de l'audio (X-Audio-Seconds), le temps de fabrication (X-Made-Ms) et les réglages utilisés (X-Settings).

text string, obligatoire

Jusqu'à 1 200 caractères. Nombres, dates, heures, prix, pourcentages, numéros de téléphone et adresses web sont épelés comme on les dit.

voice string

L'une de female1, female2, female3, female4, female5, female6, man1, man2, man3, nouvo1, nouvo2, nouvo3, nouvo4. Par défaut female1. nouvo1 à nouvo4 sont Gason 4 à 7 : de nouvelles voix créées à partir des voix d'hommes de Fatiman, qui n'appartiennent à aucune personne réelle.

continues boolean

Le texte continue une phrase coupée à une virgule, pour que la voix ne la lise pas comme une nouvelle phrase. Par défaut false.

model string

v1 (par défaut), v2 (entraîné uniquement sur de vraies voix humaines) ou v3, le plus récent et le plus naturel dans nos tests. L'en-tête X-Model indique lequel a lu le texte.

temperature number

Nombre, de 0,1 à 1. La liberté de la lecture : plus bas, plus égale. Par défaut 0,7 pour v1 et v2, 0,3 pour v3.

lsd_steps integer

Entier, de 1 à 8. Étapes par son ; davantage est plus lent. Par défaut 1.

eos_threshold number

Nombre, de −6 à 2. Quand la voix décide que le texte est fini : plus bas termine plus tôt et peut couper le dernier mot, plus haut attend plus. Par défaut −4.

cfg number

Nombre, de 1 à 3. Au-dessus de 1, la voix suit le texte de plus près, en deux fois plus de temps environ. Par défaut 1.

pause_ms integer

Entier, 0 ou de 100 à 2000. Les silences plus longs sont ramenés à cette durée ; 0 garde toutes les pauses. Par défaut 300.

Une valeur hors limites est ramenée à la limite la plus proche.

Voix

idNomGenreCaractère
female1Fanm 1FemmeClaire, égale
female2Fanm 2FemmeEnjouée
female3Fanm 3FemmeDouce
female4Fanm 4FemmeGrave, très posée
female5Fanm 5FemmeClaire, lumineuse
female6Fanm 6FemmeCalme
man1Gason 1HommeVive
man2Gason 2HommeGrave
man3Gason 3HommeChaleureuse, posée
nouvo1Gason 4HommeGrave, calmenouvelle voix
nouvo2Gason 5HommeClaire, naturellenouvelle voix
nouvo3Gason 6HommeLégèrenouvelle voix
nouvo4Gason 7HommeFermenouvelle voix

Modèles : v1 (par défaut), v2 et v3. Chacun lit avec sa propre température par défaut : 0.7 pour v1 et v2, 0.3 pour v3.

En-têtes de la réponse

X-Audio-Seconds header

Durée de l'audio, en secondes.

X-Made-Ms header

Temps de fabrication de la voix, en millisecondes.

X-Model header

Le modèle qui a lu : v1, v2 ou v3.

X-Settings header

Les réglages de lecture réellement utilisés, en JSON, après avoir ramené les valeurs hors limites à la limite la plus proche.

curl -X POST https://www.lambbi.xyz/api/tts \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Bonjou! Ki jan ou ye jodi a?", "voice": "female1", "model": "v3"}' \
  -o bonjou.wav

Texte long. Envoyez un long texte par morceaux, en commençant par un court, et jouez chaque morceau dès qu'il arrive. La voix est produite environ deux fois plus vite qu'elle ne se joue : on entend les premiers mots en une seconde et demie environ, sans coupure ensuite. Le Studio fonctionne exactement ainsi.

Transcription

POST /api/asr

Écrit le kreyòl d'un fichier audio avec Oswald-ASR-0.6-V3. Envoyez le fichier comme corps de la requête avec son Content-Type, ou dans un champ de formulaire multipart nommé file. WAV, MP3, M4A, OGG et WebM conviennent, jusqu'à 25 Mo ; les deux premières minutes sont transcrites.

Requête

body / file fichier audio, requis

L'audio comme corps brut avec son Content-Type (audio/wav, audio/mpeg, audio/mp4, audio/ogg, audio/webm…), ou un envoi multipart avec le fichier dans un champ nommé file. 25 Mo au plus ; les deux premières minutes sont transcrites.

?punctuate 0 | 1

0 renvoie le texte exactement tel qu'entendu, environ une seconde plus tôt. Par défaut, la ponctuation et les majuscules sont ajoutées sans changer aucun mot.

?correct 0 | 1

1 corrige aussi les mots mal entendus par Oswald, l'orthographe et les mots répétés. Une correction qui réécrit plus de 40 % des mots n'est pas utilisée.

?translate en | fr | es

Traduit aussi la transcription en anglais, français ou espagnol.

Réponse (JSON)

text string

Ce qui a été dit, en orthographe kreyòl, avec la ponctuation et les majuscules ajoutées par Lambbi AI (DeepSeek) ; les mots restent toujours exactement ceux d'Oswald. Vide si rien n'a été entendu.

heard string

Ce qu'Oswald a écrit, sans ponctuation. Identique à text quand la ponctuation est désactivée ou n'a pas été ajoutée.

punctuated boolean

Si la ponctuation a été ajoutée (pas avec ?punctuate=0).

corrected boolean

Si text a été corrigé automatiquement (avec ?correct=1) ; heard garde ce qu'Oswald a écrit.

translation string | null

Avec ?translate=en, fr ou es : text traduit en anglais, français ou espagnol par Lambbi AI (DeepSeek). null si la traduction a échoué ; absent sans translate.

translatedTo string

La langue de translation, quand une traduction a été demandée.

seconds number

Durée d'audio entendue.

ms number

Temps de traitement sur le serveur, ponctuation, correction et traduction comprises.

maxSeconds number

Le maximum d'audio transcrit par requête, en secondes (120).

charged object

Ce que la requête a coûté : les seconds facturées et les credits utilisés, puis creditsLeft et freeSecondsLeft sur votre compte.

# the file as the body, with its type
curl -X POST "https://www.lambbi.xyz/api/asr?correct=1&translate=en" \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -H "Content-Type: audio/mp4" \
  --data-binary @recording.m4a

# or as a form upload
curl -X POST "https://www.lambbi.xyz/api/asr" \
  -H "Authorization: Bearer $LAMBBI_API_KEY" \
  -F file=@recording.m4a
{
  "text": "Doktè, ou ka esplike m ankò diferans ant timè benin ak timè malfezan?",
  "heard": "doktè ou ka esplike m ankò diferans ant timè benin ak timè malfezan",
  "punctuated": true,
  "corrected": true,
  "translation": "Doctor, can you explain to me again the difference between a benign tumor and a malignant tumor?",
  "translatedTo": "en",
  "seconds": 5.2,
  "ms": 3371,
  "maxSeconds": 120,
  "charged": {
    "seconds": 5.2,
    "credits": 0,
    "creditsLeft": 25,
    "freeSecondsLeft": 287
  }
}

Erreurs et délais

400 / 405 / 413 votre requête

Le corps ou un paramètre ne correspond pas à ce qu'attend la route, la méthode n'était pas POST, ou le texte ou le fichier était trop long. Le corps est du JSON, {"error": "…"}, qui dit lequel.

401 pas de clé

Aucune clé d'API ("code": "no_key"), ou une clé non valide ou révoquée ("code": "bad_key"). Envoyez Authorization: Bearer lb_… avec une clé de votre tableau de bord.

402 plus de crédit

Vos minutes offertes et votre crédit sont épuisés ("code": "no_credit"). Ajoutez du crédit dans votre tableau de bord. Des requêtes envoyées au même moment peuvent faire passer votre crédit légèrement sous zéro ; la suivante reçoit alors 402.

429 trop de requêtes

Attendez les secondes indiquées dans Retry-After.

502 / 504 de notre côté

Le service vocal a échoué ou a mis trop de temps. Le premier appel après environ cinq minutes calmes démarre une machine et charge les modèles, ce qui peut prendre jusqu'à 30 secondes : utilisez un délai d'au moins 60 secondes et réessayez une fois.