Mesuré, jamais promis
Chaque chiffre de précision de ce site vient d'un jeu de test public que nous avons évalué nous-mêmes, sur la même configuration CPU que l'API. Quand nous n'avons pas mesuré, nous le disons.
Kàddu transcrit le wolof parlé et fait parler le texte wolof, avec une petite API. Le service est construit à Dakar sur des modèles ouverts. Chaque chiffre de précision affiché ici a été mesuré sur un jeu de test public, et vous pouvez vérifier comment.
En wolof, kàddu veut dire « parole », « mot », « voix ».
wo_sn · 13069390… · 6,8 s
Transcription humaine
Bërëb Schengen, de, moo ngi dox melni benn réew ci noonu.
Ce que Kàddu a entendu
bereb chingen de moo ngi dox melni benn réew si noonu
asr-africa/wav2vec2-xls-r-wolof-kallaama-fleurs-51-hours · 27 % taux d'erreur sur les mots pour cet extrait
Souligné : diffère de la transcription humaine
Enregistrement réel de Google FLEURS (partie test wolof, CC-BY 4.0). Minutage des mots par alignement forcé ; sortie du modèle que nous servons.
Chaque chiffre de précision de ce site vient d'un jeu de test public que nous avons évalué nous-mêmes, sur la même configuration CPU que l'API. Quand nous n'avons pas mesuré, nous le disons.
Nous comparons MMS de Meta aux modèles affinés par des chercheurs sénégalais et africains, puis nous servons celui qui gagne sur le jeu de test, pas le plus gros.
Le wolof dispose d'une infime partie des heures transcrites de l'anglais. Notre feuille de route : un corpus ouvert et consenti, construit avec des locuteurs, des universités et des archives radio.
Le wolof est notre point de départ et notre terrain de mesure. Les autres langues tournent sur MMS de Meta et restent en bêta tant que nous ne les avons pas évaluées.
Wolofولوف
Wolof · Wolofal
wol · SN · GM · MR
STT / TTS
Disponible
Pulaar
Pulaar (peul)
ful · SN · GN · ML · MR · NE · NG
STT / TTS
Bêta
Mandinkakaŋo
Mandingue
mnk · GM · SN · GW
STT / TTS
Bêta
Bamanankanߓߡߊߣߊ߲ߞߊ߲
Bambara · N'Ko
bam · ML
STT / TTS
Bêta
Harshen Hausaهَوْسَ
Haoussa · Ajami
hau · NG · NE · GH
STT / TTS
Bêta
Èdè Yorùbá
Yoruba
yor · NG · BJ
STT / TTS
Bêta
Kiswahili
Swahili
swh · KE · TZ · UG · CD
STT / TTS
Bêta
Lingála
Lingala
lin · CD · CG
STT / TTS
Bêta
Seereer
Sérère
srr · SN
STT / TTS
Bientôt
Sooninkanxanne
Soninké
snk · ML · SN · MR · GM
STT / TTS
Bientôt
Joola
Diola
dyo · SN · GM · GW
STT / TTS
Bientôt
Transcription sur la partie test wolof de Google FLEURS. Plus bas, c'est mieux.
| Modèle | WER | CER | Vitesse |
|---|---|---|---|
Meta MMS-1B-all (wol adapter)option texte lu wav2vec2 MMS · 1B · licence non commerciale | 40,0 % | 12,2 % | 0,91 |
HuBERT base · 95M | 46,9 % | 18,1 % | 0,17 |
wav2vec2 MMS · 1B · licence non commerciale | 47,3 % | 15,7 % | 0,49 |
w2v-BERT 2.0 · 600M · entraîné sur la partie train de FLEURS (même domaine que le test) | 48,5 % | 18,5 % | 0,58 |
wav2vec2 XLS-R · 300M · entraîné sur la partie train de FLEURS (même domaine que le test) | 49,2 % | 18,7 % | 0,15 |
Jeu de test: Google FLEURS wo_sn (test), 239 énoncés, 69 min d'audio · Matériel: GitHub Actions runner, 2 vCPU x86_64, int8 dynamic quantisation · Mesuré le 29 oct. 2026
Envoyez de l'audio, recevez du texte. Envoyez du texte, recevez de l'audio. Du JSON en entrée, du JSON ou du WAV/MP3 en sortie, sans SDK.
curl -X POST https://api.kaddu.zaleo.dev/v1/transcribe \
-F "file=@salaam.wav" \
-F "language=wol"import requests
with open("salaam.wav", "rb") as f:
r = requests.post(
"https://api.kaddu.zaleo.dev/v1/transcribe",
files={"file": f},
data={"language": "wol"},
)
print(r.json()["text"])const form = new FormData();
form.append("file", audioBlob, "salaam.webm");
form.append("language", "wol");
const res = await fetch("https://api.kaddu.zaleo.dev/v1/transcribe", {
method: "POST",
body: form,
});
const { text } = await res.json();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.mp3import requests
r = requests.post(
"https://api.kaddu.zaleo.dev/v1/speak",
json={"text": "Na nga def?", "language": "wol"},
)
open("na-nga-def.wav", "wb").write(r.content)const res = await fetch("https://api.kaddu.zaleo.dev/v1/speak", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text: "Na nga def?", language: "wol", format: "mp3" }),
});
const audio = new Audio(URL.createObjectURL(await res.blob()));
audio.play();Utilisez l'API sans clé, dans des limites raisonnables. Des offres payantes avec clés d'API et limites plus hautes viendront quand la qualité sera au niveau voulu.