Skip to content
Heads up — these docs cover Voice Monkey API v3, the current version. If you signed up before the v3 launch, your account is still on API v2 for a limited transition period and the examples below will not work against your account.

Your own voices (ElevenLabs)

As well as the built-in Alexa voices, Voice Monkey can speak in voices from your own ElevenLabs account: their library voices, and any voice you’ve cloned or designed there. You connect your ElevenLabs API key once, save the voices you want to use, then pick them anywhere you’d choose an Alexa voice.

ElevenLabs bills you directly for the speech you generate, under your own ElevenLabs plan. Voice Monkey doesn’t charge extra.

  1. Sign in to ElevenLabs and open Developers → API keys.
  2. Create a key and restrict it. Voice Monkey needs Text to Speech access and Voices read access. Add User read access too if you’d like to see your ElevenLabs credits in the console.
  3. Optionally set a credit limit on the key, so it can never use more than you’re happy with.
  4. In the Voice Monkey console, go to Integrations → ElevenLabs, paste the key and click Connect.

Voice Monkey checks the key with ElevenLabs, then stores it encrypted. It’s never shown again; the console only shows its last four characters so you can recognise it. Disconnecting deletes it.

On the ElevenLabs page, click Add a voice:

  • Name: what you’ll see in voice pickers, e.g. “Butler”.
  • ElevenLabs voice: any voice in your ElevenLabs library. To use one from the ElevenLabs Voice Library, add it to your library in ElevenLabs first, then click Refresh.
  • Model: which ElevenLabs model generates the speech. Eleven v4 Turbo is fast and expressive and suits most announcements. Eleven v4 sounds best but takes a little longer. Eleven Flash v2.5 is the fastest but can read numbers, dates and times oddly.
  • Stability, Similarity, Style exaggeration and Speed: the same settings as in ElevenLabs.
  • Alexa fallback voice: used if ElevenLabs can’t generate the speech (see When ElevenLabs can’t speak).

Use Generate preview to hear it before saving. Each preview uses ElevenLabs credits, like an announcement.

Every saved voice gets an ID made from its name, like butler-8k2p9. Renaming the voice later keeps its ID, so nothing that uses it breaks. Changing its model or settings changes how it sounds everywhere it’s used.

  • Flows: choose the voice in a Speech or Question node.
  • Reminders: choose it under Sound, voice and screen.
  • Inbound webhooks: choose it on an Announcement action.
  • API: pass its ID as voice to the Announcement API or the Reminders API. List every voice you can use with GET /voices.
  • Home Assistant, Zapier and AI assistants: use the ID wherever you’d give a voice. AI assistants can look it up with list_voices, so you can just ask for “the Butler voice”.
Terminal window
curl -X POST https://api-v3.voicemonkey.io/announce \
-H "Content-Type: application/json" \
-d '{
"token": "YOUR_TOKEN",
"device": "YOUR_SPEAKER_DEVICE_ID",
"speech": "[cheerfully] Dinner is ready!",
"voice": "butler-8k2p9"
}'
  • Directions in brackets: Eleven v4 and v3 follow cues like [whispers], [excited] or [laughs]. They’re removed if the announcement falls back to Alexa, so Alexa doesn’t read them out.
  • SSML: Alexa SSML tags such as <say-as> or <emphasis> are removed before the text goes to ElevenLabs. A <break> becomes a short pause.
  • Placeholders: variables and built-ins are filled in first, exactly as for Alexa voices.
  • Numbers and times: write them the way they should be said if a model reads them oddly, or pick a model that reads them well.

Voice Monkey keeps each clip it generates for 30 days. When an announcement says exactly the same thing in the same voice and settings again, the saved clip plays straight away and no ElevenLabs credits are used. Announcements that change every time (with the time or a temperature in them, say) are generated each time.

If a clip can’t be generated, the announcement still plays, in the voice’s Alexa fallback voice. That happens when:

  • your ElevenLabs account is out of credits (Voice Monkey tries again every hour),
  • ElevenLabs stops accepting your key (connect a new one on the ElevenLabs page),
  • ElevenLabs is slow or busy,
  • you’ve reached the daily limit below, or
  • your plan no longer includes your own voices.

The ElevenLabs page shows the last problem, and the API response says why under voice.fallback.

  • Up to 2,500 characters of speech per announcement. Longer text is cut short, at the end of a sentence where possible.
  • Up to 50,000 newly generated characters a day (UTC), on top of any limit on your ElevenLabs key. Repeats played from saved clips don’t count.
  • Up to 50 saved voices.

When an announcement uses one of your voices, its text is sent to ElevenLabs to generate the speech, under your ElevenLabs account and their terms. ElevenLabs’ free plan is for non-commercial use only. Generated clips are stored by Voice Monkey for 30 days and deleted with your account.