EasyVoice
VoicesPricingAPI
EasyVoice

Free text-to-speech powered by open source AI.

Product

  • Voices
  • Pricing
  • API

Resources

  • Blog
  • Documentation
  • About

Legal

  • Privacy Policy
  • Terms of Service

© 2026 EasyVoice. Powered by Kokoro-82M (Apache 2.0).

Built with ❤️ and open source AI.

Built by InfoDriven

Dubai, United Arab Emirates · Support@infodriven.ae · infodriven.ae

  1. Home
  2. /OpenAI TTS Alternative
  3. /OpenAI TTS voices, mapped to free Kokoro alternatives

OpenAI TTS voices, mapped to free Kokoro alternatives

OpenAI's text-to-speech API ships six voices — alloy, echo, fable, onyx, nova, and shimmer — and every team migrating off OpenAI's $15-per-1M-character pricing asks the same first question: which EasyVoice voice replaces the one we already shipped? The answer is a 6-row mapping table the rest of this page walks through. Each row pairs an OpenAI voice to its closest Kokoro-82M sonic match, characterizes the tone in plain language, lists the use cases each pair fits, and gives you a 1-2 sentence sample script you can paste into both vendor APIs to A/B them blind. Every voice in the EasyVoice column is on the free tier (5,000 characters per day, no credit card) — you can listen to all six matches before paying anything. After the table, we cover the 40 additional voices the EasyVoice catalog has beyond the OpenAI-equivalent six, plus practical guidance on running blind listening tests before committing to a mapping.

5,000 characters per day free, no credit card. Pro $9.99/mo unlimited vs OpenAI $15/1M (tts-1) / $30/1M (tts-1-hd).

Part of the OpenAI TTS alternative hub — voice mapping, 5-line migration guide, and the breakeven pricing calculator for migrating off OpenAI's tts-1 / tts-1-hd.

How to read this mapping table

Voice perception is subjective. The mappings below are starting points, calibrated to match pitch range, register, brightness, and cadence — the four properties listener-perception research shows people actually notice when comparing TTS voices. For most use cases, the suggested EasyVoice voice will land close enough that your users won't notice the swap. For literary fiction, character voice acting, or any product where the voice is part of the brand identity, the right next step is a blind A/B: generate the same passage in both vendor voices, hand a coworker the two audio files unlabeled, and ask which they prefer. Pick whichever wins the blind test — even if it isn't the one the table suggests.

The 'when to use' column captures the concrete content domains each pair fits — accessibility, audiobook narration, ad voiceover, IVR / chatbot prompts, podcast intros, brand films. Some pairs are dual-purpose (af_alloy works for both accessibility and chatbots); others are register-specific (am_onyx is wrong for casual chatbot tone, right for movie-trailer narration). The sample scripts are 1-2 sentence neutral prompts written to expose differences in pacing and register; they're not optimized to make either vendor sound better than the other.

The mapping table — OpenAI → EasyVoice

Six rows below. Each row: the OpenAI voice name (as you'd pass to openai.audio.speech.create), the EasyVoice voice ID (as you'd pass to /api/tts/generate), the friendly EasyVoice voice name, a one-paragraph tone characterization, the concrete use cases the pair fits, and a sample script you can copy-paste into both APIs for blind comparison. All six EasyVoice voices in this table are on the free tier — generate samples in both products before deciding which voice to ship.

Click through any EasyVoice voice name to reach its dedicated voice page at /voices/[id], which includes a longer character profile, audio preview embed, and the full FAQ entries for that specific voice. The voice pages live under the same wedge — flat $9.99/mo Pro unlimited, 5K chars/day free, no credit card — so you can preview without committing to anything.

Beyond the six — 40 more voices the OpenAI catalog doesn't have

OpenAI's six voices are a curated set: one warm female, one neutral male, one British storyteller, one deep baritone, one bright energetic female, one soft airy female. EasyVoice's catalog has 46 voices total — the six above plus 40 more across British English (8 voices), Spanish (3), French (1), Italian (2), Portuguese (3), Japanese (5), Hindi (4), Chinese (multiple), and additional American English registers. The catalog grew from solving the multilingual-app problem: your French Canadian onboarding shouldn't be read by an English-trained voice approximating an accent.

Common gaps the OpenAI catalog leaves that we cover: native French speaker (ff_siwis) for French-language content, native Hindi speaker (hf_alpha) for Indian-market apps where Hindi listeners reliably tell English-engine voices apart from native voices, multiple American English age bands (am_adam mid-range vs am_michael slightly older vs am_onyx deeper-and-older), and contemporary British register (bf_emma modern professional vs bf_alice slightly more reserved). For accessibility products, accessibility law often requires offering voice choice — having 46 voices to pick from is concretely different from offering six.

Running a blind A/B test before you commit

The single best validation step before swapping production TTS vendors is a blind listening test on real content. Pick three representative passages from your actual product (not a generic 'hello world' — your actual support-bot script, your actual onboarding voiceover, your actual ad copy). Generate each passage in both the OpenAI voice you're using now and the suggested EasyVoice replacement from the table above. Save the six audio files with anonymized filenames (a.mp3, b.mp3, c.mp3...). Hand them to two or three coworkers, ask 'which sounds more natural / on-brand for our product' — and tally the votes.

Two things to watch for. First, listener preference for an unfamiliar voice often runs against it on the first hearing — humans like what they've heard before. If your team has been listening to your current OpenAI voice for months, they may rate the EasyVoice replacement lower simply because it's unfamiliar. Mitigate by including the swap in the test with at least one listener who has never heard your current voice — their judgment is the cleaner signal. Second, pay attention to specific failure modes (wrong word stress, awkward pause between clauses, mispronounced proper nouns) more than overall vibe. Fix-rate matters more than first-impression delta.

Voice consistency, regression risk, and how to migrate safely

Once you've picked your mapping, the safe migration pattern is gradual rollout: cut new traffic over to EasyVoice first, leave existing content (already-generated audio files cached on your CDN) untouched. If your product caches generated audio by some kind of (text + voice + format) hash, the existing OpenAI-generated files will still serve correctly for repeat playback — only new generations switch over. This avoids the worst-case migration regression where every customer's previously-listened-to content suddenly sounds different.

For apps that regenerate audio on every request (no caching), the safer pattern is voice-pinning per user. Detect on the user record whether they were created before or after the migration date; old users keep getting OpenAI-mapped voices (you keep paying $15/1M during their lifetime), new users go straight to EasyVoice. Over weeks-to-months the OpenAI cohort shrinks as users churn, leaving you on flat $9.99/mo Pro across the active population. This is more conservative than a hard cutover but eliminates the 'why does the bot sound different' support ticket entirely.

Voice mapping table — OpenAI → EasyVoice

Click any EasyVoice voice name to reach its dedicated voice page with audio preview. All six voices below are on the free tier.

OpenAI voiceEasyVoice equivalentTone characterizationWhen to use
alloyAlloyaf_alloyWarm female mid-range — the closest direct sonic match in the EasyVoice catalog. Bright but unhurried, identical register to OpenAI's default voice.Default narration, accessibility read-aloud, neutral chatbot responses, product onboarding voiceover. Use this as your starting-point swap if your app was built on OpenAI's default voice and you don't want to change personality during migration.
echoEchoam_echoNeutral American male, slightly above OpenAI baseline pitch. Clean and unornamented — the 'news reader' register rather than the audiobook narrator.News-style narration, dispatcher / IVR prompts, transactional confirmations (booking confirmations, order updates), enterprise B2B onboarding. Pair with am_adam for variety when one product needs two male voices.
fableFablebm_fableBritish male storytelling voice — measured pace, slight literary lilt, Received Pronunciation. The natural fable-narrator fit OpenAI's voice was named for.Audiobook narration, fiction read-aloud, podcast intros that want a British register, history and documentary voiceover, children's stories. For a contemporary British male with less literary register, see bm_lewis.
onyxOnyxam_onyxDeep American male baritone — the heaviest voice in either vendor's catalog. Slow cadence, dramatic weight, cinematic register.Movie-trailer-style ads, dramatic narration, video game cutscene voiceover, brand films, gravitas-heavy product launches. Avoid for conversational chatbot use (too dramatic for short prompts); pair with am_michael for variety in the same product.
novaNovaaf_novaBright female with energy — matches the 'nova' brand signal: confident, modern, slightly higher placed than af_alloy. The most expressive female in the OpenAI-equivalent set.Social media ads, hook-driven short-form video voiceover, energetic product demos, marketing email audio versions, YouTube channel intros for lifestyle / fitness / tech reviewer formats.
shimmerLilybf_lilySoft female with airy upper register — captures the 'shimmer' brightness OpenAI's voice was named for, but with a subtle British placement that lends warmth without losing brightness.Meditation and wellness apps, ASMR-adjacent narration, lullabies and bedtime stories, gentle product onboarding for premium consumer apps, lifestyle podcast cold opens. For an American-female alternative with similar airiness, try af_jessica.

Sample scripts for blind A/B testing

Paste each into both vendor APIs (OpenAI's audio.speech.create and EasyVoice's /api/tts/generate) to compare blind.

alloy ↔ af_alloy (Alloy)

"Welcome to your daily summary. Here are the three updates worth your attention this morning, in two minutes or less."

echo ↔ am_echo (Echo)

"Your appointment is confirmed for Thursday at three p.m. We've sent the details to your inbox. Reply 'reschedule' to change the time."

fable ↔ bm_fable (Fable)

"It was the kind of morning the village had not seen in a generation — quiet, golden, and so still that the bells of St. Mary's seemed to sound from another century."

onyx ↔ am_onyx (Onyx)

"In a world where every second counts, the difference between hesitation and action is measured in heartbeats. This is your moment."

nova ↔ af_nova (Nova)

"Three things you didn't know your phone could do — number two will save you ten minutes every morning, no joke."

shimmer ↔ bf_lily (Lily)

"Take a slow breath in… and let it go. You're exactly where you need to be. Listen for the next two minutes — that's all this takes."

Code samples

Real working code, not pseudo-code. Every request below assumes you've set EASYVOICE_API_KEY and OPENAI_API_KEY as env vars where shown.

Generate both vendor voices for blind A/B

Bash — generate alloy.mp3 (OpenAI) and af_alloy.mp3 (EasyVoice) from the same text
# OpenAI tts-1 with alloy
curl -X POST https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "voice": "alloy",
    "input": "Welcome to your daily summary. Here are the three updates worth your attention this morning.",
    "response_format": "mp3"
  }' \
  --output a.mp3

# EasyVoice with af_alloy (free tier, no credit card)
curl -X POST https://easyvoice.ae/api/tts/generate \
  -H "Authorization: Bearer $EASYVOICE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice": "af_alloy",
    "input": "Welcome to your daily summary. Here are the three updates worth your attention this morning.",
    "response_format": "mp3"
  }' \
  --output b.mp3

# Rename randomly, hand both files to a coworker, ask which they prefer.

Voice map lookup in Python

Drop into your codebase to swap OpenAI voice names with EasyVoice equivalents
OPENAI_TO_EASYVOICE = {
    "alloy":   "af_alloy",
    "echo":    "am_echo",
    "fable":   "bm_fable",
    "onyx":    "am_onyx",
    "nova":    "af_nova",
    "shimmer": "bf_lily",
}

def to_easyvoice(openai_voice: str) -> str:
    """Map an OpenAI voice name to its closest Kokoro equivalent."""
    return OPENAI_TO_EASYVOICE.get(openai_voice, "af_alloy")

# Existing code that pins an OpenAI voice keeps working:
#   voice = pick_voice_for_user(user)        # returns "onyx"
#   audio = tts(text, to_easyvoice(voice))    # calls EasyVoice with "am_onyx"

Voices to try on the free tier

Every voice below is callable via the same voice parameter — preview audio samples and read the full character profile.

Alloy
American English · af_alloy
Onyx
American English · am_onyx
Echo
American English · am_echo
Fable
British English · bm_fable
NovaFree
American English · af_nova
Lily
British English · bf_lily

Frequently asked questions

What's the closest EasyVoice voice to OpenAI's alloy?▾

af_alloy — same warm female mid-range register, intentionally named to match. It's the closest direct sonic match in the EasyVoice catalog and the right starting point if your product was built on OpenAI's default voice and you don't want to change personality during migration. Listen at /voices/af_alloy and generate a 30-second sample on the free tier before committing.

Which EasyVoice voice replaces OpenAI's onyx?▾

am_onyx — deep American male baritone, the heaviest voice in either vendor's catalog. Same dramatic weight and cinematic register OpenAI's onyx delivers. Best for movie-trailer-style ads, brand films, and gravitas-heavy launches. Don't use it for casual chatbot tone — pair with am_michael or am_adam for that use case.

Are these mappings exact matches?▾

Approximate — calibrated to pitch range, register, brightness, and cadence. For most use cases (accessibility, chatbot prompts, transactional confirmations, narration), the suggested mapping will land close enough that users won't notice the swap. For literary fiction, character voice acting, or any product where the voice is part of brand identity, run a blind A/B on three representative passages from your actual product before committing.

Does EasyVoice have voices OpenAI doesn't?▾

Yes — 40 voices beyond the OpenAI-equivalent six. The catalog covers British English (8 voices), Spanish (3), French (1), Italian (2), Portuguese (3), Japanese (5), Hindi (4), Chinese, and additional American English age bands. Native-speaker voices in each non-English language, not English-engine voices reading translated text. Common gaps OpenAI leaves that we cover: native French speaker for French-language content, native Hindi for Indian-market apps, multiple British registers for UK content.

Can I preview before paying?▾

Yes — all 46 voices including the six OpenAI-equivalent matches above are on the free tier. 5,000 characters per day with a daily reset, no credit card required. Generate samples in any voice, write them to a file, ship the integration, run blind A/B tests against your current OpenAI voice — all on the free tier. Pro at $9.99/mo unlimited removes the daily cap when you scale past it.

What if blind testing picks a different voice than the suggested mapping?▾

Use whichever wins the blind test. The mapping table is a starting point, not a prescription. If your team prefers af_bella for content you'd map to alloy, ship af_bella. The catalog has 46 voices — the suggested mappings are six of them, picked for the closest sonic match. Other voices in the catalog may fit your specific product better. The whole point of the free tier is letting you compare before committing.

Related OpenAI migration guides

Migrate from OpenAI TTS to EasyVoice in 5 lines

OpenAI TTS to EasyVoice migration guide: 5-line code diff in Python + JS. Model, voice, response_format mapping. Streaming compatible. $9.99 flat vs $15/1M.

OpenAI TTS pricing vs EasyVoice — when flat-rate wins

OpenAI TTS pricing calculator. tts-1 $15/1M, tts-1-hd $30/1M vs EasyVoice $9.99 flat. Breakeven 666K chars/mo. Real numbers at 100K, 500K, 1M, 5M, 10M.

Vendor comparison: EasyVoice vs OpenAI TTS

Side-by-side feature comparison covering voices, languages, pricing tiers, free limits, API surface, and the why-people-look / where-each-wins breakdown.

Developer-focused OpenAI migration in /tts-api

The developer-onboarding angle of the same migration — request body compatibility deep-dive, streaming behavior, ChatGPT plugin/Realtime API guidance, and the official OpenAI SDK constraint.

Start migrating off OpenAI TTS today

5,000 characters per day free, no credit card. Pro $9.99/mo unlimited replaces OpenAI's $15-$300/mo bills once you cross 666K characters per month.

More OpenAI alternative guides

← OpenAI alternative hubMigrate from OpenAI TTS to EasyVoice in 5 linesOpenAI TTS pricing vs EasyVoice — when flat-rate winsTTS API hub →