Guides

AI Voice API for French and Swahili, No Credit Card Needed

TchaviBy Gael — Tchavi founder

· 10 min read

Back to blog

Table of contents

For a voice that reads French text out loud, start with voxtral-tts-3: 3.799 credits for a 131 character sentence, about KES 0.29. Move up to eleven-flash-v2.5 (11.502 credits, about KES 0.87) when you want a more polished voice without paying much more, and to eleven-v3 (23.004 credits, about KES 1.74) only when the voice matters more than three extra seconds of waiting. You'll find the full breakdown below: seven models run on the same sentence, a Swahili round trip, and the code for both endpoints.

Thirteen audio models landed on Tchavi in late October, with no coverage on the blog until now: the full ElevenLabs lineup (nine voices, plus scribe-v2 and scribe-v2-medical for transcription), and two MiniMax Speech voices. The guide on tts-1 and gpt-4o-mini-tts already said OpenAI's voices retire on 6 January 2027, but it didn't mention that ElevenLabs was on Tchavi. This article fills that gap.

In short

  • Same call, POST /v1/audio/speech: only the model and the voice change from one provider to the next. POST /v1/audio/transcriptions does the reverse, as multipart/form-data.
  • Seven models tested on the same 131 character French sentence, one take each, on 6 November 2026: from 3.799 credits (voxtral-tts-3) to 28.754 credits (minimax-speech-2.8-hd). All seven answered 200 on the first try, at the exact public rate.
  • The priciest model in the lot lost to its own cheaper sibling: by ear, minimax-speech-2.8-turbo (17.253 credits) beats minimax-speech-2.8-hd (28.754 credits), which costs 67% more.
  • A Swahili round trip: eleven-v3 spoke a Swahili sentence, scribe-v2 transcribed it back with a single error across 122 characters, a word boundary on a proper noun. The numbers and the time of day came through intact. That proves the words are intelligible, not that the accent is right: no native speaker has listened to it yet.
  • scribe-v2 bills per second of audio, not per started minute like Whisper: an 8.88 second clip cost 1.208 credits, not a full minute.

Seven voices, one call

POST /v1/audio/speech takes a model, an input and a voice. Here's the call with voxtral-tts-3, the cheapest of the lot:

curl -X POST https://tchavi.com/api/v1/audio/speech \
  -H "Authorization: Bearer $TCHAVI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "voxtral-tts-3",
    "voice": "fr_marie_neutral",
    "input": "Bonjour Awa, ta commande est partie de Cotonou. Le livreur arrive entre quinze heures et dix-sept heures. Merci pour ta confiance !"
  }' \
  -D - \
  -o reponse.mp3

That's the 131 character French delivery message the whole table below is built on. To switch models, you change two fields. In Node, with eleven-flash-v2.5 and the alice voice:

import { writeFileSync } from 'node:fs';

const res = await fetch('https://tchavi.com/api/v1/audio/speech', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    Authorization: `Bearer ${process.env.TCHAVI_API_KEY}`,
  },
  body: JSON.stringify({
    model: 'eleven-flash-v2.5',
    voice: 'alice',
    input: 'Bonjour Awa, ta commande est partie de Cotonou.',
  }),
});

const audio = Buffer.from(await res.arrayBuffer());
console.log(res.headers.get('content-type'), res.headers.get('x-credits-used'), 'credits');
writeFileSync('reponse.mp3', audio);

Same x-credits-used header at the end of the response, same default output format (mp3), whether the model comes from ElevenLabs, MiniMax or Mistral. That's what makes switching voices painless: the audio documentation describes the shared format.

What I measured: seven models, one sentence, one take each

One take in staging, on 6 November 2026, on the same 131 character French sentence ("Bonjour Awa, ta commande est partie de Cotonou. Le livreur arrive entre quinze heures et dix-sept heures. Merci pour ta confiance !"). This isn't a benchmark, it's one take each, under the same conditions:

ModelLatencyCreditsAudio lengthIn KES
voxtral-tts-32.41 s3.7996.83 s≈ KES 0.29
eleven-turbo-v2.51.12 s11.5026.92 s≈ KES 0.87
eleven-flash-v2.51.82 s11.5027.62 s≈ KES 0.87
eleven-multilingual-v21.25 s23.0047.24 s≈ KES 1.74
eleven-v33.49 s23.0047.28 s≈ KES 1.74
minimax-speech-2.8-turbo4.31 s17.2538.23 s≈ KES 1.31
minimax-speech-2.8-hd3.81 s28.7548.61 s≈ KES 2.18

All seven answered 200 on the first take, and the x-credits-used on each response landed exactly on the model's public rate for 131 characters: no billing surprise here.

voxtral-tts-3, 3.799 credits

What I heard: three surprises, by ear

I listened to all seven clips, on the same sentence, by ear and only once: this isn't an objective measurement, just what the founder hears. Three things are worth saying, including the one that stings:

  • eleven-flash-v2.5 beats eleven-turbo-v2.5, at the exact same price (11.502 credits). ElevenLabs itself flags eleven-turbo-v2.5 as deprecated and recommends Flash instead: our ear agrees.
  • eleven-v3 beats eleven-multilingual-v2, again at the same price (23.004 credits), but it answers in 3.49 seconds against 1.25 seconds. You pay for the better voice in waiting time, not in credits.
  • minimax-speech-2.8-turbo beats minimax-speech-2.8-hd (17.253 against 28.754 credits): the priciest model in the lot loses to its own cheaper sibling, 40% less. We're keeping voxtral-tts-3 at 3.799 credits as the low bar: it holds up against models three to eight times its price.
eleven-flash-v2.5, 11.502 credits
eleven-v3, 23.004 credits
minimax-speech-2.8-turbo, 17.253 credits

The Swahili round trip

This is the real reason to write this article: eleven-v3 and eleven-v3-conversational list Swahili, Hausa and Yoruba alongside French. scribe-v2, ElevenLabs' transcription model, lists Swahili, Hausa and Arabic among more than 90 languages, with word level timestamps.

I had eleven-v3 speak a 122 character Swahili sentence, then had scribe-v2 transcribe the resulting audio back:

Habari Awa, agizo lako limetoka Cotonou. Dereva atafika kati ya saa tisa na saa kumi na moja jioni. Asante kwa imani yako.
StepModelLatencyCredits
Text to audioeleven-v35.17 s21.423
Audio to textscribe-v22.56 s1.208

scribe-v2 transcribed the sentence with a single error across the 122 characters: a missed word boundary on a proper noun, "Habari Awa" came back as "Habariawa". The numbers, the verbs and the whole time-of-day expression came through intact. For comparison, the same round trip in French (the original sentence spoken by voxtral-tts-3) took 1.46 seconds and 0.94 credits on scribe-v2, with "quinze heures" normalised to "15 h".

eleven-v3 in Swahili, 21.423 credits

One error across 122 characters is an intelligible text. It isn't a measurement of the accent: I don't speak Swahili, and no native speaker has listened to this clip yet. If you're building an app for a Swahili, Hausa or Yoruba speaking audience, play this exact clip to someone who speaks the language before you ship it. I'm not claiming anything beyond what the transcription proves: the words are there.

Transcribing with scribe-v2

POST /v1/audio/transcriptions takes the file as multipart/form-data, the same as Whisper:

curl -X POST https://tchavi.com/api/v1/audio/transcriptions \
  -H "Authorization: Bearer $TCHAVI_API_KEY" \
  -F "model=scribe-v2" \
  -F "file=@reponse.mp3" \
  -F "language=fr"

In Node, with fetch and a FormData:

import { readFileSync } from 'node:fs';

const form = new FormData();
form.append('model', 'scribe-v2');
form.append('file', new Blob([readFileSync('reponse.mp3')]), 'reponse.mp3');
form.append('language', 'fr');

const res = await fetch('https://tchavi.com/api/v1/audio/transcriptions', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.TCHAVI_API_KEY}` },
  body: form,
});

const data = await res.json();
console.log(data.text, res.headers.get('x-credits-used'), 'credits');

new Blob([readFileSync(...)]) matters here: fs.createReadStream throws against the native FormData in recent Node versions, so read the whole file into memory first.

Two differences from Whisper worth knowing before you call: scribe-v2 rejects response_format: "text", "srt" and "vtt" (only json and verbose_json go through), and rejects the prompt parameter. Both return a 400, at no cost.

The billing correction: by the second, not the minute

The audio documentation says Whisper bills 13 credits per minute of audio, rounded up to the next full minute. scribe-v2 doesn't follow that rule: it bills the real second of audio, at 8.049 credits per minute. An 8.88 second clip cost 1.208 credits in our measurements, not the equivalent of a full minute. If your code estimates cost from a duration rounded up to the minute, it will overstate scribe-v2; recompute pro rata to the second instead.

Choosing your model

NeedModelWhy
Start, test, a simple botvoxtral-tts-33.799 credits, holds up against models that cost much more
A better voice without paying much moreeleven-flash-v2.511.502 credits, beats its deprecated predecessor at the same price
The voice matters more than 3 seconds of waiteleven-v323.004 credits, a better voice than eleven-multilingual-v2 at the same price, but 3.49 s latency
A language ElevenLabs doesn't coverminimax-speech-2.8-turbo17.253 credits, cheaper and better than its own HD model
Transcribe, caption, timestamp word by wordscribe-v28.049 credits per minute, billed by the second, 90+ languages

The rates above are public rates, measured on 6 November 2026; some models carry a discount from time to time, so check the price shown on each one's page before deciding: voxtral-tts-3, eleven-flash-v2.5, eleven-turbo-v2.5, eleven-multilingual-v2, eleven-v3, minimax-speech-2.8-turbo, minimax-speech-2.8-hd and scribe-v2. The audio catalogue lists them all side by side.

FAQ

Can I clone a voice?

Not with these models. ElevenLabs and MiniMax each offer preset voices; so does voxtral-tts-3, with 66 voices, including a French voice available in six moods (fr_marie_neutral, fr_marie_happy, fr_marie_sad...). None of the three opens voice cloning on Tchavi.

Why does eleven-v3 answer slower than the other ElevenLabs models?

That's what we measured on a single take (3.49 seconds against 1.12 to 1.82 seconds for the other ElevenLabs voices): the model processes more interpretive nuance, and that shows up in the wait, not in credits, since the price is identical to eleven-multilingual-v2. For an app replying live to a customer, prefer eleven-flash-v2.5.

Do Swahili, Hausa and Yoruba work as well as French?

I only tested one Swahili round trip, one take, with a word boundary error on a proper noun. I have no measurement for Hausa or Yoruba, and no one who speaks those languages has listened to these clips yet. Test with your own sentences, the ones your users actually send, and have someone who speaks the language listen before you go to production.

Does scribe-v2 bill like Whisper?

No. Whisper bills 13 credits per started minute (a full minute even for a 10 second clip). scribe-v2 bills 8.049 credits per minute, pro rata to the real second of audio: an 8.88 second clip cost us 1.208 credits.

Can I test these models with the trial credits from signup?

Yes, comfortably, for text-to-speech. With the 50 credits granted once at email verification, that's enough for about 13 takes of the sentence above on voxtral-tts-3, or 4 on eleven-flash-v2.5, or about 6 minutes of transcription on scribe-v2.

create your account and top up KES 250

This article is part of the "Building an AI product from Africa" series. Tchavi is an OpenAI-compatible AI API gateway: one key gives access to over 100 text, image, audio and video models, and you pay for it with mobile money, no bank card (countries and operators). More guides on the blog. Follow us: LinkedIn and X.

Share

Your first API call, paid with mobile money

No bank card. Top up with mobile money in your local currency; your first top-up adds 150 bonus credits, and credits never expire.