Multilingual TTS API: 10 languages on one OpenAI-compatible endpoint — Audra
Localizing product narration usually means either one expensive multilingual vendor or a frankenstein of regional APIs. Audra Essential keeps it boring on purpose: ten languages, 72 preset voices, one OpenAI-compatible HTTP shape, and −16 LUFS mastering on the file you download.
This is for batch narration — courses, docs, support macros, marketing pages — not realtime agents or voice cloning. If you need sub-200ms conversational turns or a custom clone of a human speaker, stay on a provider built for that.
Who this is for
- Product teams shipping the same lesson or help article in multiple locales
- Docs and support orgs that want one TTS contract instead of a provider per language
- Builders already on the OpenAI SDK who can swap baseURL and keep going
- Anyone who wants to preview locale-matched voices before hard-coding production slugs
Languages on Essential
Essential covers the ten locales below on a single endpoint. Prefer a voice slug that already implies the locale (filter the catalog on /voices). Set language as a BCP-47 hint only when the slug is ambiguous — never mix languages inside one request.
| Language | Hint | Notes |
|---|---|---|
| English (US/UK) | en-US / en-GB | Default narration locale |
| Japanese | ja-JP | Prefer JA voice slugs |
| Mandarin Chinese | zh-CN | Preview before production |
| Spanish | es-ES | Slug usually implies locale |
| Portuguese (Brazil) | pt-BR | Use BR-oriented voices |
| Hindi | hi-IN | Set language if slug is ambiguous |
| French | fr-FR | Shown in the example below |
| Italian | it-IT | One locale per request |
| German | de-DE | Filter /compare by language |
| Dutch | nl-NL | Essential preset voices |
Picking a voice and locale
- Filter /voices and /compare by language before locking a production slug
- Keep one locale per POST — split multilingual scripts into separate jobs
- Short UI strings → sync /v2/speech; long localized docs → jobs API
- Need denser multilingual presets than Essential? Check Plus/Pro multipliers on /pricing#engines
Example: French narration
Use POST /v2/speech when you need an explicit BCP-47 language hint. OpenAI SDK clients can still point baseURL at /v1 for simple English narration — for locale overrides, prefer the native examples below.
curl
curl https://audratalks.com/v2/speech \
-H "Authorization: Bearer sk-live-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"audra-essential","text":"Bonjour — narration de documentation.","voice":"june","language":"fr-FR","format":"mp3"}' \
--output out.mp3
Python
import requests
r = requests.post(
"https://audratalks.com/v2/speech",
headers={"Authorization": "Bearer sk-live-YOUR_KEY"},
json={
"model": "audra-essential",
"text": "Bonjour — narration de documentation.",
"voice": "june",
"language": "fr-FR",
"format": "mp3",
},
timeout=120,
)
r.raise_for_status()
open("out.mp3", "wb").write(r.content)
JavaScript
import { writeFile } from "node:fs/promises";
const res = await fetch("https://audratalks.com/v2/speech", {
method: "POST",
headers: {
Authorization: "Bearer sk-live-YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "audra-essential",
text: "Bonjour — narration de documentation.",
voice: "june",
language: "fr-FR",
format: "mp3",
}),
});
if (!res.ok) throw new Error(await res.text());
await writeFile("out.mp3", Buffer.from(await res.arrayBuffer()));
When you need an explicit language hint (or jobs/webhooks), prefer POST /v2/speech. Preview candidates on /voices, then A/B on /compare before you bake the slug into CI.
Cost sanity check
FAQ
Which languages does Essential support?
English (US/UK), Japanese, Mandarin Chinese, Spanish, Portuguese (Brazil), Hindi, French, Italian, German, and Dutch — 72 voices on one endpoint.
When should I set the language field?
Prefer a voice slug that implies the locale. Set language (BCP-47) only when the slug is ambiguous or you need an explicit override.
Does Audra support realtime voice agents?
No. Audra is a batch TTS API for mastered MP3/WAV files. For sub-200ms conversational agents, stay on a realtime-oriented provider.
Can I clone a custom brand voice?
No. Audra ships preset voices only. Use ElevenLabs (or similar) when cloning is a hard requirement — see /vs/elevenlabs.
Next steps
- Preview locale-matched voices on /voices
- A/B two candidates on /compare
- Read the API reference on /docs
- Get 25k free characters at /dashboard — no card