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

> ElevenLabs, MiniMax Speech and Scribe v2 landed on Tchavi in late October. Seven models tested on the same French sentence, a Swahili round trip, and the model to start with depending on your budget.

- Published: 2026-11-06
- Author: Gael — Tchavi founder
- Canonical: https://tchavi.com/en/blog/ai-voice-french-swahili-api-no-credit-card

---


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`](https://tchavi.com/en/blog/text-to-speech-api-5-minutes) 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:

```bash
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:

```javascript
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](https://tchavi.com/en/docs/audio) 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:

| Model                      | Latency | Credits | Audio length | In KES     |
| -------------------------- | ------- | ------- | ------------ | ---------- |
| `voxtral-tts-3`            | 2.41 s  | 3.799   | 6.83 s       | ≈ KES 0.29 |
| `eleven-turbo-v2.5`        | 1.12 s  | 11.502  | 6.92 s       | ≈ KES 0.87 |
| `eleven-flash-v2.5`        | 1.82 s  | 11.502  | 7.62 s       | ≈ KES 0.87 |
| `eleven-multilingual-v2`   | 1.25 s  | 23.004  | 7.24 s       | ≈ KES 1.74 |
| `eleven-v3`                | 3.49 s  | 23.004  | 7.28 s       | ≈ KES 1.74 |
| `minimax-speech-2.8-turbo` | 4.31 s  | 17.253  | 8.23 s       | ≈ KES 1.31 |
| `minimax-speech-2.8-hd`    | 3.81 s  | 28.754  | 8.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.

<figure>
  <figcaption>voxtral-tts-3, 3.799 credits</figcaption>
  <audio
    controls
    preload="none"
    src="https://pub-d9cc37d4d31c4c7e9b808d5a5cbe42a9.r2.dev/models-demos/blog-voix-voxtral-tts-3-fr.mp3"
  ></audio>
</figure>

## 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.

<figure>
  <figcaption>eleven-flash-v2.5, 11.502 credits</figcaption>
  <audio
    controls
    preload="none"
    src="https://pub-d9cc37d4d31c4c7e9b808d5a5cbe42a9.r2.dev/models-demos/blog-voix-eleven-flash-v2.5-fr.mp3"
  ></audio>
</figure>
<figure>
  <figcaption>eleven-v3, 23.004 credits</figcaption>
  <audio
    controls
    preload="none"
    src="https://pub-d9cc37d4d31c4c7e9b808d5a5cbe42a9.r2.dev/models-demos/blog-voix-eleven-v3-fr.mp3"
  ></audio>
</figure>
<figure>
  <figcaption>minimax-speech-2.8-turbo, 17.253 credits</figcaption>
  <audio
    controls
    preload="none"
    src="https://pub-d9cc37d4d31c4c7e9b808d5a5cbe42a9.r2.dev/models-demos/blog-voix-minimax-speech-2.8-turbo-fr.mp3"
  ></audio>
</figure>

## 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.
```

| Step          | Model       | Latency | Credits |
| ------------- | ----------- | ------- | ------- |
| Text to audio | `eleven-v3` | 5.17 s  | 21.423  |
| Audio to text | `scribe-v2` | 2.56 s  | 1.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".

<figure>
  <figcaption>eleven-v3 in Swahili, 21.423 credits</figcaption>
  <audio
    controls
    preload="none"
    src="https://pub-d9cc37d4d31c4c7e9b808d5a5cbe42a9.r2.dev/models-demos/blog-voix-swahili-eleven-v3.mp3"
  ></audio>
</figure>

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:

```bash
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`:

```javascript
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](https://tchavi.com/en/docs/audio) 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

| Need                                          | Model                      | Why                                                                                                |
| --------------------------------------------- | -------------------------- | -------------------------------------------------------------------------------------------------- |
| Start, test, a simple bot                     | `voxtral-tts-3`            | 3.799 credits, holds up against models that cost much more                                         |
| A better voice without paying much more       | `eleven-flash-v2.5`        | 11.502 credits, beats its deprecated predecessor at the same price                                 |
| The voice matters more than 3 seconds of wait | `eleven-v3`                | 23.004 credits, a better voice than `eleven-multilingual-v2` at the same price, but 3.49 s latency |
| A language ElevenLabs doesn't cover           | `minimax-speech-2.8-turbo` | 17.253 credits, cheaper and better than its own HD model                                           |
| Transcribe, caption, timestamp word by word   | `scribe-v2`                | 8.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`](https://tchavi.com/en/m/mistral/voxtral-tts-3), [`eleven-flash-v2.5`](https://tchavi.com/en/m/elevenlabs/eleven-flash-v2.5), [`eleven-turbo-v2.5`](https://tchavi.com/en/m/elevenlabs/eleven-turbo-v2.5), [`eleven-multilingual-v2`](https://tchavi.com/en/m/elevenlabs/eleven-multilingual-v2), [`eleven-v3`](https://tchavi.com/en/m/elevenlabs/eleven-v3), [`minimax-speech-2.8-turbo`](https://tchavi.com/en/m/minimax/minimax-speech-2.8-turbo), [`minimax-speech-2.8-hd`](https://tchavi.com/en/m/minimax/minimax-speech-2.8-hd) and [`scribe-v2`](https://tchavi.com/en/m/elevenlabs/scribe-v2). The [audio catalogue](https://tchavi.com/en/models/audio) 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](https://tchavi.com/en/register?next=%2Fdashboard%2Fbilling%3Famount%3D250%26currency%3DKES%26from%3Dblog-voice-multilingual-en)

> _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](https://tchavi.com/en/docs/payments)). More guides on [the blog](https://tchavi.com/en/blog). Follow us: [LinkedIn](https://www.linkedin.com/company/tchavi) and [X](https://x.com/tchaviai)._

