Japanese TTS API for product and course narration — Audra
One OpenAI-compatible endpoint covers ten Essential languages — without juggling providers per locale. Not for realtime voice agents or cloning.
Who this is for
- Product teams localizing narration across EN, JA, ZH, ES, PT-BR, HI, FR, IT, DE, NL
- Docs and support orgs that need one TTS endpoint per language pack
- Builders who want BCP-47 language hints without juggling providers
- Anyone previewing locale-matched voices before hard-coding slugs
Languages on Essential
| Language | Hint | Notes |
|---|---|---|
| English (US/UK) | en-US / en-GB | Default narration locale |
| Japanese | ja-JP | Prefer JA voice slugs on /voices |
| 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 | Example in the curl below |
| Italian | it-IT | One locale per request |
| German | de-DE | Filter /compare by language |
| Dutch | nl-NL | Essential preset voices |
Prefer a voice slug that implies the locale; set language (BCP-47) only when the slug is ambiguous. Keep one locale per request — never mix languages in a single POST.
- Filter /voices and /compare by language before hard-coding production slugs
- Long localized docs → jobs API; short UI strings → sync /v2/speech
- Plus/Pro expand multilingual presets when Essential voices feel thin — see /pricing#engines
Example with a language hint
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()));
Next: preview voices on /voices. For engine multipliers see /pricing#engines; for voice A/B use /compare.
Cost sanity check
Want to hear a sample on your own script? Get an API key at /dashboard — 25k free characters, no card.
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
- Primary next step: preview voices on /voices
- A/B voices on /compare
- Honest matrices: /vs/elevenlabs and /vs/openai-tts
- Read next: /blog/multilingual-tts-api-10-languages
- Related: /migrate