Developer API · Live

A pronunciation API with audio, IPA, and stress in one response

GET/v1/pronunciation/:word

Send a word and get back a synthesized MP3 clip from Google WaveNet voices, plus IPA for US and UK and a syllable breakdown with stress marks. Accent, gender, and speed are query parameters. No API key.

Free tierNo API keyWaveNet voicesUS + UK
curl "https://api.quickpronounce.site/v1/pronunciation/wonderful?accent=us&gender=female"
Response

What you get back

The phonetic data from the dictionary endpoint, plus a ready-to-play audio clip.

Query parameters
ParamValuesDescription
accentus (default) or ukWhich pronunciation and voice region to use.
gendermale (default) or femaleVoice gender for the synthesized clip.
speedslow, normal (default) or fastPlayback rate. slow is useful for learners hearing a word for the first time.
GET /v1/pronunciation/wonderful?accent=uk&gender=female
{
  "success": true,
  "data": {
    "word": "wonderful",
    "meta": { "accent": "uk", "gender": "female", "speed": "normal" },
    "phonetics": { "us": "/ˈwʌndɚfl/", "uk": "/ˈwʌndəfl/" },
    "syllables": {
      "uk": [
        { "text": "wuhn", "stress": 1 },
        { "text": "duhfl", "stress": 0 }
      ]
    },
    "audio": {
      "content": "SUQzBAAAAAA...<base64 mp3>...",
      "encoding": "base64",
      "format": "mp3"
    }
  }
}
The audio

How it works

Base64 MP3 inside the JSON, not a separate binary download.

One request, no binary handling

The clip comes back as base64 in the audio.content field. Drop it into a data:audio/mp3;base64 URI and it plays in an <audio> tag or an Audio() object.

Works from the browser

CORS is open, so a client-side app fetches and plays a clip with no backend of its own.

Consistent across devices

A given word plus accent plus gender plus speed always synthesizes the same way, so a cached clip stays correct. Unlike the browser speech engine, the voice doesn't change with the user's OS.

Meant to be cached

Store the MP3 on first fetch. Synthesis has a real cost and there's no long-term server cache yet, which is why the limits are deliberately tight.

Quick start

Fetch, play, or save a clip

These snippets match the runnable copies in the API repo's examples folder.

# The response is JSON with base64 audio. Decode it to an MP3:
curl -s "https://api.quickpronounce.site/v1/pronunciation/wonderful?accent=uk&gender=female" \
  | jq -r '.data.audio.content' | base64 --decode > wonderful.mp3
Read this first

Limits, and what not to build on it

A quick reality check before you wire it into anything load-bearing.

The pronunciation endpoint allows 10 requests per minute and 50 per day per IP. Those numbers are low on purpose. Each call runs a real WaveNet synthesis that costs money, and there's no persistent audio cache yet, so every cold request is a fresh synthesis. If you cache each clip the first time you fetch it, 50 new words a day goes a long way.

This is a public testing phase with no SLA. It runs on serverless infrastructure with cold starts, so the first request after a quiet period is slower. Don't build a feature that synthesizes the same words over and over on every page load, and don't treat it as a general text-to-speech service for sentences or paragraphs. It's a per-word pronunciation source. For a real production workload, get in touch about a dedicated key and higher limits.

In the wild

Where it fits

Anywhere you need a spoken word without standing up a cloud TTS account.

Language-learning apps

Play a native-sounding clip next to the written word and its IPA. The slow speed option lets a learner hear each syllable before trying it at normal pace.

Pronunciation practice tools

Pair the audio with the syllable stress array so a learner sees which beat to hit while they hear it. This is the pattern behind the practice widgets on QuickPronounce itself.

Read-aloud and accessibility

For a single hard word in a block of text, fetch one clip on demand rather than running a full text-to-speech engine over the whole page.

Vocabulary and flashcard decks

Cache the MP3 per word when a card is first created, then play it offline from then on. One request per word, forever.

Prototypes and demos

You need spoken words in a hackathon build or a proof of concept and don't want to wire up a cloud TTS account and billing just to ship a demo.

Chatbots and voice agents

Give an assistant a way to demonstrate how a word sounds when a user asks, without leaving the conversation to a separate service.

FAQ

Frequently Asked Questions

Straight answers on cost, limits, licensing, and how this compares to the alternatives.

Is the pronunciation audio free?
On the free tier, yes, within tight per-IP limits. Every clip is synthesized on request with Google Cloud WaveNet voices, which costs real money per call and isn't cached long-term yet, so please don't treat this as an unlimited text-to-speech backend. Cache the MP3 on your side once you have it.
Why are the pronunciation limits lower than the dictionary limits?
Because synthesis has a real per-request cost and there's no persistent audio cache yet. The pronunciation endpoint allows 10 requests per minute and 50 per day per IP. The dictionary endpoint, which is just data, allows 60 per minute and 1,000 per day. If you cache clips on first fetch, 50 per day covers a lot of new words.
What voices and accents are available?
US and UK, each with a male and a female voice, from Google Cloud's WaveNet set. Pick with the accent and gender query parameters. Speed can be slow, normal, or fast.
Can I get WAV or OGG instead of MP3?
Not currently. The audio is returned as base64-encoded MP3 inside the JSON response. If a different container matters for your use case, get in touch and describe it.
Is there a plain audio URL I can put in an <audio> tag?
Not a hosted file URL. The clip comes back inside the JSON as base64, which you drop straight into a data: URI. That plays in an <audio> element or an Audio() object with no second request, and it works from the browser because CORS is open.
Can I cache or store the MP3?
Yes, and you should. Save it keyed by word plus accent plus gender plus speed. The synthesis for a given combination is stable, so a stored clip stays correct. Caching is also how you stay under the daily limit.
Does it work offline?
The API call needs a connection, but once you have decoded and stored an MP3 it plays offline like any other audio file. Fetch on first use, cache, then never call again for that word.
How is this different from the browser's SpeechSynthesis API?
The Web Speech API runs on the user's device, so the voice, quality, and even availability vary by browser and OS, and you can't cache or ship the audio. This endpoint gives you a consistent WaveNet clip you can store, replay, bundle into a deck, or play on a device that has no speech engine. The trade-off is that it's a network call with a rate limit.
Does it support SSML?
Not yet. Input is a single word on the path, with accent, gender, and speed as the only controls. Phrase-level and SSML synthesis aren't part of the current surface.
Can I use it commercially?
Yes, within fair-use limits, and caching is expected. Keep the Wiktionary CC BY-SA 4.0 attribution if you also show the definitions or examples from the dictionary endpoint. For a production workload above the free limits, get in touch about a key.

Build on it today

The free tier is live and works for prototypes, side projects, and small production apps. Paid plans for higher request volumes are planned as usage grows. For early access or a dedicated API key now, get in touch. The full enriched dataset is also available as a one-time licensed download, separate from API access.

Dictionary content is derived in part from Wiktionary, used under CC BY-SA 4.0, with definitions and examples rewritten and enriched by QuickPronounce. Pronunciation data draws on CMUdict and WordNet.