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.
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.
- https://www.lambbi.xyz/llms-full.txt · toute l'API en Markdown, avec des exemples
- https://www.lambbi.xyz/openapi.json · schéma OpenAPI 3.1, pour les outils et les générateurs de SDK
- https://www.lambbi.xyz/llms.txt · un court index (llms.txt)
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
| id | Nom | Genre | Caractère |
|---|---|---|---|
female1 | Fanm 1 | Femme | Claire, égale |
female2 | Fanm 2 | Femme | Enjouée |
female3 | Fanm 3 | Femme | Douce |
female4 | Fanm 4 | Femme | Grave, très posée |
female5 | Fanm 5 | Femme | Claire, lumineuse |
female6 | Fanm 6 | Femme | Calme |
man1 | Gason 1 | Homme | Vive |
man2 | Gason 2 | Homme | Grave |
man3 | Gason 3 | Homme | Chaleureuse, posée |
nouvo1 | Gason 4 | Homme | Grave, calmenouvelle voix |
nouvo2 | Gason 5 | Homme | Claire, naturellenouvelle voix |
nouvo3 | Gason 6 | Homme | Légèrenouvelle voix |
nouvo4 | Gason 7 | Homme | Fermenouvelle 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.wavTexte 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.