# Best Text to Speech for IVR and Phone Greetings (2026)

Published: October 23, 2026 · Author: Hitesh Kumawat

The best text to speech for IVR is the one that fits how your prompts change. For fixed greetings and menus, generate each line once in a voice tool such as [Kveeky](https://kveeky.com/) and upload the audio. For prompts that change per caller, use a developer text-to-speech service or your phone platform's built-in voice.

*Last updated: October 23, 2026. Prices and file rules below were read on each vendor's own page on October 16, 2026. Disclosure: Kveeky makes an AI voice generator.*

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-blue-50);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere;border-left:4px solid var(--kv-blue-700)"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">Quick answer</div><p style="margin:0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Write each prompt as a short line, generate one audio file per prompt, and check the upload rules of your phone system before you pick a voice tool. Microsoft Teams, RingCentral and Twilio all accept WAV and MP3. Use the greeting checker and picker below to size your prompts and choose a route.</p></div>

This guide is for office managers, small-business owners, IT admins and contact-centre leads who need a professional phone menu. You'll get a decision picker, a price table with dated vendor figures, a prompt-length checker, a full IVR script template and a pre-launch checklist.

An IVR (interactive voice response) is the automated menu that answers a call and routes it, for example "For billing, press 1." It is different from a live AI receptionist. If you need a voice agent that listens and answers, read our guide to [AI receptionist platforms](/blog/ai-receptionist-platforms-natural-voices). This page is about the recorded and spoken prompts themselves.

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-left:4px solid var(--kv-blue-700);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 18px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:12px">Key Takeaways</div><ul style="margin:0;padding-left:20px"><li style="margin:0 0 10px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Fixed prompts need no live engine.</strong> Greetings, menus, hold and after-hours messages can be generated once and uploaded as audio.</li><li style="margin:0 0 10px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Check the upload rules first.</strong> Microsoft Teams auto attendants take WAV, MP3 or WMA up to 5 MB; RingCentral takes WAV or MP3 up to 20 MB (both retrieved 2026-10-16).</li><li style="margin:0 0 10px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Cost is tiny.</strong> A 12-prompt clinic menu is about 2 minutes of audio, which fits a Kveeky free month (500 credits, about 40 seconds).</li><li style="margin:0 0 10px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Dynamic prompts are a developer job.</strong> To say a caller's name or balance, you need a text-to-speech service that your phone platform calls live, such as Amazon Polly.</li><li style="margin:0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Test on a real phone.</strong> Call your own line on speaker and listen for names, numbers and pauses before you go live.</li></ul></div>

**On this page:** [Which TTS fits](#which-text-to-speech-should-you-use-for-your-ivr) · [Comparison](#how-do-the-5-options-compare-on-price-and-fit) · [Phone system rules](#what-audio-file-does-your-phone-system-accept) · [Write prompts](#how-do-you-write-ivr-prompts-that-callers-follow) · [Checker](#how-long-should-an-ivr-greeting-be) · [Script template](#ivr-script-template-you-can-copy) · [Steps](#how-do-you-add-text-to-speech-prompts-to-your-ivr) · [Checklist](#ivr-audio-pre-launch-checklist) · [FAQ](#frequently-asked-questions)

## Which text to speech should you use for your IVR?

Use a voice tool plus uploaded files for fixed prompts, and a live text-to-speech service for prompts that change per caller. Most small businesses only need the first.

Pick the line that matches your situation. The answers follow the comparison table below.

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-blue-50);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">IVR text-to-speech picker</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">What is your situation? Click one.</p><div role="group" aria-label="IVR situation" style="display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px"><button type="button" aria-pressed="false" data-a="Generate each line once in a voice tool (Kveeky, ElevenLabs) and upload the audio. No developer needed, and the prompts sound the same on every call." style="min-height:44px;padding:8px 14px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);background:var(--kv-white);color:var(--kv-blue-700);font:600 15px/1.3 var(--kv-font-body);cursor:pointer" onclick="var o=document.getElementById('ivr-pick-o');if(!o)return;var s=this.parentNode.children;for(var i=0;i<s.length;i++){s[i].setAttribute('aria-pressed','false');s[i].style.background='var(--kv-white)';s[i].style.color='var(--kv-blue-700)'}this.setAttribute('aria-pressed','true');this.style.background='var(--kv-blue-700)';this.style.color='var(--kv-white)';o.textContent=this.getAttribute('data-a')">Fixed greeting and menu</button><button type="button" aria-pressed="false" data-a="Use your phone platform's typed greeting if it has one. Microsoft Teams reads typed text of up to 1,000 characters, but its auto attendants offer only 2 voices. For a branded voice, upload audio instead." style="min-height:44px;padding:8px 14px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);background:var(--kv-white);color:var(--kv-blue-700);font:600 15px/1.3 var(--kv-font-body);cursor:pointer" onclick="var o=document.getElementById('ivr-pick-o');if(!o)return;var s=this.parentNode.children;for(var i=0;i<s.length;i++){s[i].setAttribute('aria-pressed','false');s[i].style.background='var(--kv-white)';s[i].style.color='var(--kv-blue-700)'}this.setAttribute('aria-pressed','true');this.style.background='var(--kv-blue-700)';this.style.color='var(--kv-white)';o.textContent=this.getAttribute('data-a')">I use Microsoft Teams</button><button type="button" aria-pressed="false" data-a="You need live text to speech, called by your phone platform at the moment of the call. Amazon Polly and Google voices are available inside Twilio Say, for example. Ask your developer or telephony provider." style="min-height:44px;padding:8px 14px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);background:var(--kv-white);color:var(--kv-blue-700);font:600 15px/1.3 var(--kv-font-body);cursor:pointer" onclick="var o=document.getElementById('ivr-pick-o');if(!o)return;var s=this.parentNode.children;for(var i=0;i<s.length;i++){s[i].setAttribute('aria-pressed','false');s[i].style.background='var(--kv-white)';s[i].style.color='var(--kv-blue-700)'}this.setAttribute('aria-pressed','true');this.style.background='var(--kv-blue-700)';this.style.color='var(--kv-white)';o.textContent=this.getAttribute('data-a')">Say the caller's name or balance</button><button type="button" aria-pressed="false" data-a="Generate one file per language with a voice for that language, then route callers with a first menu line such as: For Spanish, press 2. Check that each language has voices on the language pages before you commit." style="min-height:44px;padding:8px 14px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);background:var(--kv-white);color:var(--kv-blue-700);font:600 15px/1.3 var(--kv-font-body);cursor:pointer" onclick="var o=document.getElementById('ivr-pick-o');if(!o)return;var s=this.parentNode.children;for(var i=0;i<s.length;i++){s[i].setAttribute('aria-pressed','false');s[i].style.background='var(--kv-white)';s[i].style.color='var(--kv-blue-700)'}this.setAttribute('aria-pressed','true');this.style.background='var(--kv-blue-700)';this.style.color='var(--kv-white)';o.textContent=this.getAttribute('data-a')">Callers speak 2 languages</button><button type="button" aria-pressed="false" data-a="That is a voice agent, not an IVR prompt. Look at an AI receptionist platform. You can still use a voice tool for the recorded parts around it, such as after-hours and holiday messages." style="min-height:44px;padding:8px 14px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);background:var(--kv-white);color:var(--kv-blue-700);font:600 15px/1.3 var(--kv-font-body);cursor:pointer" onclick="var o=document.getElementById('ivr-pick-o');if(!o)return;var s=this.parentNode.children;for(var i=0;i<s.length;i++){s[i].setAttribute('aria-pressed','false');s[i].style.background='var(--kv-white)';s[i].style.color='var(--kv-blue-700)'}this.setAttribute('aria-pressed','true');this.style.background='var(--kv-blue-700)';this.style.color='var(--kv-white)';o.textContent=this.getAttribute('data-a')">I want the AI to answer questions</button></div><div id="ivr-pick-o" aria-live="polite" style="padding:14px 16px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Pick an option above to see the route.</div></div>

## How do the 5 options compare on price and fit?

For fixed IVR prompts, Kveeky and ElevenLabs are the two voice tools to try; Amazon Polly suits developers; your phone platform's own voice is the zero-setup option. Prices below come from each vendor's own page, retrieved 2026-10-16, in USD on monthly billing.

<table>
<thead>
<tr><th style="white-space:nowrap">Option</th><th>Best for</th><th>Price (retrieved 2026-10-16)</th><th>How the prompt reaches the phone</th><th>Limits</th></tr>
</thead>
<tbody>
<tr><td style="white-space:nowrap"><strong>Kveeky</strong></td><td>Fixed greetings, menus, hold and after-hours messages</td><td>Free: 500 credits a month (about 40 seconds). Basic: $9 for 100 minutes. Paid plans include commercial usage rights</td><td>Download the audio, then upload it to your phone system</td><td>Does not answer calls or say caller-specific data. Free plan uses standard voices only</td></tr>
<tr><td style="white-space:nowrap"><strong>ElevenLabs</strong></td><td>Teams that want a large voice library and are happy to manage files</td><td>Free: about 10 minutes a month. Starter $6, Creator $22 (about 121 minutes), Pro $99 (about 600 minutes). Commercial license on paid plans</td><td>Download the audio, then upload it</td><td>Its pricing page does not mention telephony file formats, so check your phone system's rules</td></tr>
<tr><td style="white-space:nowrap"><strong>Amazon Polly</strong></td><td>Developers building dynamic prompts</td><td>$4.00 per 1 million characters (Standard), $16.00 (Neural). Free tier: 5 million Standard characters a month</td><td>Your code or phone platform calls it live, or you save the output</td><td>Needs development work, no menu or recording interface</td></tr>
<tr><td style="white-space:nowrap"><strong>Twilio Say</strong></td><td>Phone apps already on Twilio</td><td>Pricing not checked for this guide</td><td>Speaks text live on the call using Amazon Polly and Google voices, with SSML for pronunciation</td><td>A character limit applies and varies by voice option</td></tr>
<tr><td style="white-space:nowrap"><strong>Microsoft Teams typed greeting</strong></td><td>Teams Phone users who want something working today</td><td>Pricing not checked for this guide</td><td>Type up to 1,000 characters in the auto attendant</td><td>Auto attendants offer 2 voices (male and female), picked from the language and changed only in PowerShell</td></tr>
</tbody>
</table>

Sources for this table are listed in [How we checked this guide](#how-we-checked-this-guide). We did not run listening tests, so we do not rank how the voices sound. Judge that yourself with the checker and checklist below.

### Worked example: a 12-prompt clinic menu

A clinic IVR has a greeting, 5 menu options, an after-hours message, a holiday message, a hold message, a "no input" retry, a transfer notice and a goodbye: 12 prompts of about 28 words each.

- **Words:** 12 x 28 = 336 words.
- **Audio length:** 336 words at 150 words per minute = about 134 seconds. With 50% extra for retakes, about 202 seconds.
- **Kveeky free plan:** 40 seconds a month, so the whole menu fits with room to spare.
- **Amazon Polly Neural:** 336 words is roughly 2,000 characters (our estimate at 6 characters a word), or about $0.03 at $16.00 per million.

The numbers are small because IVR prompts are short. The real cost is writing, testing and updating, not generating audio.

## What audio file does your phone system accept?

Most phone systems take WAV or MP3 for uploaded greetings, with different size limits. Always check your own platform, because rules differ and change.

Filter the rows by typing a platform name or "MP3".

<div style="margin:16px 0 12px"><label for="ivr-fq" style="display:block;margin-bottom:6px;font:600 15px/1.4 var(--kv-font-body);color:var(--kv-gray-800)">Filter the phone platform rules</label><input id="ivr-fq" type="search" placeholder="For example Teams, MP3 or typed" style="box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"><p id="ivr-fc" aria-live="polite" style="margin:8px 0 0;font:400 14px/1.4 var(--kv-font-body);color:var(--kv-gray-600)"></p><script>(function(){try{var q=document.getElementById("ivr-fq"),t=document.getElementById("ivr-ft"),c=document.getElementById("ivr-fc");if(!q||!t||!c)return;function f(){var s=q.value.toLowerCase().trim(),rs=t.querySelectorAll("tbody tr"),n=0;for(var i=0;i<rs.length;i++){var ok=!s||rs[i].textContent.toLowerCase().indexOf(s)>-1;rs[i].style.display=ok?"":"none";if(ok)n++}c.textContent=s?("Showing "+n+" of "+rs.length+" rows."):""}q.addEventListener("input",f)}catch(e){}})();</script></div>

<div style="overflow-x:auto;max-width:100%">

<table id="ivr-ft">
<thead>
<tr><th style="white-space:nowrap">Platform</th><th>Uploaded audio</th><th>Size limit</th><th>Typed text to speech</th></tr>
</thead>
<tbody>
<tr><td style="white-space:nowrap">Microsoft Teams auto attendant</td><td>WAV (uncompressed linear PCM, 8, 16 or 32-bit, mono or stereo), MP3, and WMA (mono). Microsoft says WMA stops being supported from November 1, 2026; existing WMA prompts keep working</td><td>5 MB</td><td>Yes, up to 1,000 characters, in 54 languages</td></tr>
<tr><td style="white-space:nowrap">RingCentral app greeting</td><td>WAV or MP3</td><td>20 MB</td><td>Not covered on the page we read</td></tr>
<tr><td style="white-space:nowrap">Twilio Play</td><td>MP3, WAV, AIFF, GSM, u-law. Twilio transcodes all files; high-bitrate lossy files such as 128 kbps MP3 take longer to transcode</td><td>Not stated</td><td>Use Say for live text to speech</td></tr>
</tbody>
</table>

</div>

If your platform wants WAV and your voice tool gives you another type, convert it in a free audio editor and play it back before upload. Zoom Phone, 3CX, Asterisk and others have their own rules; we did not verify them for this guide, so check your admin guide.

## How do you write IVR prompts that callers follow?

Write each prompt as one short instruction, say the action after the option, and keep menus to a few choices. These are our working rules, not an industry standard.

1. **One idea per sentence.** "For billing, press 1." beats a long sentence with 3 clauses.
2. **Option first, then the key.** Callers remember the last thing they hear, so say the action, then the number.
3. **4 or 5 options at most.** If you need more, split the menu into a second level.
4. **Offer a person early.** Put "To speak with someone, press 0" in the first menu. Our [VUI design guide](/blog/vui-design-ai-voiceovers) covers menu structure in more detail.
5. **Write numbers for the ear.** Spell out phone numbers with commas: "five five five, zero one two three". Add a spoken repeat for important numbers.
6. **Spell tricky names as they sound.** Respell the business name in your script, and use the Custom Punctuation field in the Kveeky editor for punctuation hints and word guides.
7. **Keep one voice everywhere.** Mixed voices sound like mixed companies. See [how synthetic voices keep a brand consistent on phone systems](/blog/synthetic-voices-brand-consistency).

For a calm, steady delivery, slow the speed a little and choose the Neutral or Calm emotion. Our guide to [AI voice with emotion](/blog/ai-voice-with-emotion) explains the options, and [5 minutes of fixes for robotic AI voices](/blog/how-to-make-your-ai-voiceover-sound-less-robotic-in-5-minutes) covers pauses and stress.

## How long should an IVR greeting be?

Keep the first greeting short enough that callers reach the menu in a few seconds. Our rule of thumb is under 15 seconds before the first option; paste your text below to see the word count, seconds and character count.

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-blue-50);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">Greeting length checker</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Paste one prompt. Speaking pace: 150 words per minute is the average; choose 130 for a slower, clearer menu.</p><label for="ivr-gt" style="display:block;margin-bottom:6px;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Your prompt</label><textarea id="ivr-gt" rows="4" style="box-sizing:border-box;width:100%;min-width:0;padding:10px 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1.5 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)">Thank you for calling Bright Smile Dental. For appointments, press 1. For billing, press 2. To speak with someone, press 0.</textarea><label for="ivr-gp" style="display:block;margin:12px 0 6px;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Words per minute</label><select id="ivr-gp" style="box-sizing:border-box;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"><option value="150" selected>150 (average)</option><option value="130">130 (slow and clear)</option></select><div id="ivr-go" aria-live="polite" style="margin-top:14px;padding:14px 16px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Type or paste a prompt to see the result.</div><script>(function(){try{var t=document.getElementById("ivr-gt"),p=document.getElementById("ivr-gp"),o=document.getElementById("ivr-go");if(!t||!p||!o)return;function run(){try{var s=t.value.trim();if(!s){o.textContent="Type or paste a prompt to see the result.";return}var w=s.split(/\s+/).length,c=s.length,wpm=parseFloat(p.value)||150,sec=Math.round(w/wpm*600)/10;var h="<strong>"+w+" words</strong>, <strong>"+c+" characters</strong>, about <strong>"+sec+" seconds</strong> at "+wpm+" words per minute. ";h+=sec>15?"This is longer than our 15-second rule of thumb for a main greeting. Consider moving details to a later prompt. ":"This is within our 15-second rule of thumb for a main greeting. ";h+=c>1000?"It is over the 1,000-character limit for a typed Microsoft Teams greeting.":"It is within the 1,000-character limit for a typed Microsoft Teams greeting.";o.innerHTML=h}catch(e){}}t.addEventListener("input",run);p.addEventListener("change",run);run()}catch(e){}})();</script></div>

## How many credits will your whole IVR need?

Add up your prompts, not just the greeting. The estimator below uses the Kveeky free plan (500 credits, about 40 seconds) and the Basic plan (100 minutes, $9 a month) from [the pricing page](https://kveeky.com/pricing).

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-blue-50);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">IVR audio estimator</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Enter the size of your phone tree. Retakes are the lines you regenerate after listening.</p><div style="display:flex;flex-wrap:wrap;gap:12px;margin-bottom:14px"><label for="ivr-en" style="display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Number of prompts<input id="ivr-en" type="number" inputmode="numeric" min="1" step="1" value="12" style="box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"></label><label for="ivr-ew" style="display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Average words per prompt<input id="ivr-ew" type="number" inputmode="numeric" min="1" step="1" value="28" style="box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"></label><label for="ivr-ep" style="display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Words per minute<input id="ivr-ep" type="number" inputmode="numeric" min="60" step="10" value="150" style="box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"></label><label for="ivr-er" style="display:flex;flex-direction:column;gap:4px;flex:1 1 140px;min-width:0;font:600 14px/1.3 var(--kv-font-body);color:var(--kv-gray-800)">Retake allowance (%)<input id="ivr-er" type="number" inputmode="numeric" min="0" step="10" value="50" style="box-sizing:border-box;width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1 var(--kv-font-body);color:var(--kv-gray-800);background:var(--kv-white)"></label></div><div id="ivr-eo" aria-live="polite" style="padding:14px 16px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Change a number to see the result.</div><script>(function(){try{var ids=["n","w","p","r"],o=document.getElementById("ivr-eo");if(!o)return;var els=[];for(var i=0;i<ids.length;i++){var e=document.getElementById("ivr-e"+ids[i]);if(!e)return;els.push(e)}function run(){try{var v={};for(var i=0;i<ids.length;i++){var x=parseFloat(els[i].value);v[ids[i]]=isNaN(x)||x<0?0:x}var p=v.p||150;var words=Math.round(v.n*v.w);var sec=Math.round(words/p*60);var gen=Math.round(sec*(1+v.r/100));var h="<strong>"+words+" words</strong> is about <strong>"+sec+" seconds</strong> of audio. With "+v.r+"% retakes you will generate about <strong>"+gen+" seconds</strong>. ";if(gen<=40){h+="That fits inside the Kveeky free plan (40 seconds a month), with "+(40-gen)+" seconds to spare."}else{var m=Math.ceil(gen/6000);h+="That is more than the free plan. The Basic plan includes 100 minutes (6,000 seconds) a month for $9, so it would take about "+m+" month"+(m>1?"s":"")+" of Basic to cover it."}o.innerHTML=h}catch(e){}}for(var i=0;i<els.length;i++){els[i].addEventListener("input",run);els[i].addEventListener("change",run)}run()}catch(e){}})();</script></div>

For other script lengths, use the [words to minutes calculator](https://kveeky.com/resources/words-to-minutes-calculator/), and see our [AI voiceover script guide](/blog/ai-voiceover-script) for writing lines that sound natural when read aloud.

## IVR script template you can copy

An IVR script should list every prompt a caller can hear, including the ones people forget: no input, wrong key, transfer notice and holiday. This template has all 10.

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">Copy this IVR script</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Replace Bright Smile Dental and the hours with your own. Generate one audio file per numbered line and name each file with its number.</p><div id="ivr-st" style="padding:14px 16px;background:var(--kv-blue-50);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-sm);font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">1. Greeting: Thank you for calling Bright Smile Dental.<br>2. Menu: For appointments, press 1. For billing, press 2. For our address and hours, press 3. To speak with someone, press 0.<br>3. Hours: We are open Monday to Friday, nine a.m. to five p.m.<br>4. After hours: Our office is closed right now. Please leave a message after the tone, and we will call you back the next business day.<br>5. Holiday: Our office is closed today for the holiday. We will reopen on the next business day.<br>6. Hold: Thank you for waiting. Someone will be with you shortly.<br>7. No input: Sorry, we did not get a response. Please choose an option from the menu.<br>8. Wrong key: Sorry, that is not a valid choice. Please try again.<br>9. Transfer: Please hold while we connect you.<br>10. Goodbye: Thank you for calling. Goodbye.</div><div style="display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px"><button type="button" data-copytext="1. Greeting: Thank you for calling Bright Smile Dental.&#10;2. Menu: For appointments, press 1. For billing, press 2. For our address and hours, press 3. To speak with someone, press 0.&#10;3. Hours: We are open Monday to Friday, nine a.m. to five p.m.&#10;4. After hours: Our office is closed right now. Please leave a message after the tone, and we will call you back the next business day.&#10;5. Holiday: Our office is closed today for the holiday. We will reopen on the next business day.&#10;6. Hold: Thank you for waiting. Someone will be with you shortly.&#10;7. No input: Sorry, we did not get a response. Please choose an option from the menu.&#10;8. Wrong key: Sorry, that is not a valid choice. Please try again.&#10;9. Transfer: Please hold while we connect you.&#10;10. Goodbye: Thank you for calling. Goodbye." style="min-height:44px;padding:0 18px;border:0;border-radius:var(--kv-radius-sm);background:var(--kv-blue-700);color:var(--kv-white);font:600 16px/1 var(--kv-font-body);cursor:pointer" onclick="var b=this,t=b.getAttribute('data-copytext');function ok(){b.textContent='Copied';setTimeout(function(){b.textContent='Copy script'},1800)}if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(t).then(ok,function(){})}else{var e=document.getElementById('ivr-st');if(e){var r=document.createRange();r.selectNodeContents(e);var s=window.getSelection();s.removeAllRanges();s.addRange(r)}}">Copy script</button></div></div>

## How do you add text-to-speech prompts to your IVR?

Write the script, generate one file per prompt, listen to each, then upload and test by phone. The steps below take about an hour for a 12-prompt menu.

1. **Write the script** with the template above. Expected result: every prompt is a numbered line.
2. **Pick one voice** and test it on your hardest line, usually the one with your business name and a phone number.
3. **Generate one file per prompt.** Expected result: 10 to 15 short files, easy to replace one at a time.
4. **Listen at normal speed** and fix any wrong name or number by respelling it, then regenerate that line only.
5. **Check your platform's upload rules** in the table above and convert the files if needed.
6. **Upload and call yourself** on a mobile phone on speaker. Expected result: the menu reads clearly, every key works, and the transfer to a person works.

### How Kveeky helps

[Kveeky](https://kveeky.com/) covers steps 2 to 4 in the browser: paste a prompt, pick a voice, set the transcript language, adjust speed and volume, choose an emotion, and download the audio. The free plan gives 500 credits a month, about 40 seconds, with no credit card. Every paid plan includes commercial usage rights for generated audio. Our [IVR voices page](https://kveeky.com/voiceover/ivr-voices/) has a sample phone-menu script.

<figure style="margin:28px 0;padding:0"><img src="/blog/product/app-text-to-speech.webp" alt="The Kveeky text-to-speech editor with a script in the text box and the Settings panel showing Voice, Transcript Language, Speed, Volume, Emotion and Custom Punctuation." width="1150" height="850" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:var(--kv-radius-md);border:1px solid var(--kv-blue-100)"><figcaption style="margin-top:10px;font:400 14px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Paste one IVR prompt in the text box, then use the Settings panel: choose the Voice, set the Transcript Language, lower Speed slightly for menus, and pick Calm or Neutral under Emotion. Custom Punctuation takes punctuation hints and special word guides for names and numbers. Press Generate speech and download the audio.</figcaption></figure>

<figure style="margin:28px 0;padding:0"><img src="/blog/product/app-voice-library.webp" alt="The Kveeky voice library with search, gender and language filters, and voice cards tagged FREE or PRO with preview buttons." width="1150" height="850" loading="lazy" decoding="async" style="display:block;width:100%;height:auto;border-radius:var(--kv-radius-md);border:1px solid var(--kv-blue-100)"><figcaption style="margin-top:10px;font:400 14px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Use the library to audition a phone voice: search, filter by gender and language, and press preview on each card. Voices tagged FREE are on the free plan; PRO voices need a paid plan. For a Spanish menu, start from the <a href="https://kveeky.com/languages/spanish-text-to-speech" style="color:var(--kv-blue-700)">Spanish text to speech page</a>.</figcaption></figure>

## Should an IVR use AI voice or a human recording?

Use AI voice when prompts change often, ship in more than one language or must stay consistent; use a human recording when the greeting is part of your brand personality. Both are valid, and many companies mix them.

<table>
<thead>
<tr><th style="white-space:nowrap">Situation</th><th>Better fit</th><th>Why</th></tr>
</thead>
<tbody>
<tr><td style="white-space:nowrap">Menu changes every few months</td><td>AI voice</td><td>You regenerate one line instead of rebooking a studio</td></tr>
<tr><td style="white-space:nowrap">Seasonal and holiday messages</td><td>AI voice</td><td>Quick to produce and swap the same day</td></tr>
<tr><td style="white-space:nowrap">2 or more languages</td><td>AI voice</td><td>Same style across languages, without casting several speakers</td></tr>
<tr><td style="white-space:nowrap">Owner-led brand, where the voice is the personality</td><td>Human recording</td><td>Callers know the voice</td></tr>
<tr><td style="white-space:nowrap">Sensitive services, such as bereavement or crisis lines</td><td>Human recording</td><td>Tone and warmth matter most, and a person should answer quickly</td></tr>
</tbody>
</table>

Telling callers they are hearing a recorded or automated message is good practice, especially if you offer a path to a person. If you clone a real person's voice for the greeting, get written consent first; our [voice cloning guide](/blog/is-voice-cloning-legal-ai-rights-guide) explains why. For cloning options on Kveeky, see the [pricing page](https://kveeky.com/pricing), because plan limits apply.

## IVR audio pre-launch checklist

Run this before you switch the menu on. Tick each item when it is true.

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">IVR audio checklist</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Tick each step when it is true for your phone tree.</p><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>Every prompt has a numbered line in the script, including no input, wrong key and transfer.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>The main menu has 5 options or fewer, and option 0 reaches a person.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>One voice and one speed are used in every file.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>Business name, street names and phone numbers sound right at normal speed.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>File type and size match the upload rules of the phone platform.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>Files are named by script number, so one line can be replaced later.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>Someone who has never heard the menu called it on a mobile phone on speaker and reached the right place.</span></label><label style="display:flex;align-items:flex-start;gap:12px;min-height:44px;padding:8px 0;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800);cursor:pointer"><input type="checkbox" class="ivr-c" style="width:22px;height:22px;margin-top:2px;flex:none;accent-color:var(--kv-blue-700)"><span>After-hours and holiday prompts were tested by calling at a closed time.</span></label><p id="ivr-co" aria-live="polite" style="margin:8px 0 0;font:600 15px/1.4 var(--kv-font-body);color:var(--kv-blue-700)">Ticked: 0 of 8</p><script>(function(){try{var b=document.querySelectorAll(".ivr-c"),o=document.getElementById("ivr-co");if(!o||!b.length)return;function u(){var n=0;for(var i=0;i<b.length;i++){if(b[i].checked)n++}o.textContent=n==b.length?"All "+n+" done. Ready to go live.":"Ticked: "+n+" of "+b.length}for(var i=0;i<b.length;i++){b[i].addEventListener("change",u)}}catch(e){}})();</script></div>

<div style="margin:28px 0;padding:20px 22px;background:var(--kv-white);border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);min-width:0;box-sizing:border-box;overflow-wrap:anywhere"><div style="font:700 17px/1.3 var(--kv-font-heading);color:var(--kv-blue-950);margin-bottom:8px">Show me</div><p style="margin:0 0 12px;font:400 15px/1.5 var(--kv-font-body);color:var(--kv-gray-600)">Open what you need.</p><details style="border-top:1px solid var(--kv-blue-100);padding:10px 0"><summary style="min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 16px/1.4 var(--kv-font-body);color:var(--kv-blue-950)">How do I say a phone number clearly?</summary><div style="padding:4px 0 8px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Write the digits as words in groups with commas: five five five, zero one two three. Generate it, listen at normal speed, and repeat the number once if callers must write it down.</div></details><details style="border-top:1px solid var(--kv-blue-100);padding:10px 0"><summary style="min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 16px/1.4 var(--kv-font-body);color:var(--kv-blue-950)">What do I do when the voice mispronounces my business name?</summary><div style="padding:4px 0 8px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Respell it the way it sounds in the script, regenerate that line only, and keep the respelling in your script file for next time. The Custom Punctuation field in the Kveeky editor accepts word guides as well.</div></details><details style="border-top:1px solid var(--kv-blue-100);padding:10px 0"><summary style="min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 16px/1.4 var(--kv-font-body);color:var(--kv-blue-950)">Can I use the free plan for my live IVR?</summary><div style="padding:4px 0 8px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">Use it to test voices and your hardest lines. The pricing page says every paid plan includes commercial usage rights, so generate the final business audio on a paid plan. See the <a href="https://kveeky.com/pricing" style="color:var(--kv-blue-700)">pricing page</a>.</div></details><details style="border-top:1px solid var(--kv-blue-100);padding:10px 0"><summary style="min-height:44px;display:flex;align-items:center;cursor:pointer;font:600 16px/1.4 var(--kv-font-body);color:var(--kv-blue-950)">What changes for outbound calls?</summary><div style="padding:4px 0 8px;font:400 16px/1.6 var(--kv-font-body);color:var(--kv-gray-800)">This guide covers inbound menus. Calling people with recorded or AI voices is regulated in many countries, so get legal advice before you use any audio for outbound calling.</div></details></div>

**Keep reading:** [Synthetic voices for business phone systems](/blog/synthetic-voices-brand-consistency) · [Voice user interface design for AI voiceovers](/blog/vui-design-ai-voiceovers) · [How businesses use text to speech for marketing](/blog/text-to-speech-marketing-tools) · [AI receptionist platforms compared](/blog/ai-receptionist-platforms-natural-voices) · [How to write an AI voiceover script](/blog/ai-voiceover-script) · [Make an AI voiceover sound less robotic](/blog/how-to-make-your-ai-voiceover-sound-less-robotic-in-5-minutes) · [AI voice with emotion](/blog/ai-voice-with-emotion) · [Kveeky IVR voices](https://kveeky.com/voiceover/ivr-voices/)

<div style="margin:32px 0;padding:18px 20px;border:1px solid var(--kv-blue-100);border-radius:var(--kv-radius-md);background:var(--kv-white);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px"><div style="flex:1 1 280px;font:400 16px/1.55 var(--kv-font-body);color:var(--kv-gray-800)"><strong>Want to hear your greeting before you upload it?</strong> Kveeky's free plan needs no credit card, and every paid plan includes commercial rights.</div><a href="https://app.kveeky.com?utm_source=blog&utm_medium=cta&utm_campaign=text-to-speech-for-ivr-phone-greetings&utm_content=end" style="display:inline-block;background:var(--kv-blue-700);color:var(--kv-white);font:700 15px/1 var(--kv-font-body);padding:12px 18px;border-radius:var(--kv-radius-sm);text-decoration:none;white-space:nowrap">Try Kveeky free</a></div>

## Frequently asked questions

### What is the best text to speech for IVR?

For fixed greetings and menus, a voice tool that exports audio, such as Kveeky or ElevenLabs, is the simplest choice. For prompts that change per caller, use a live service such as Amazon Polly through your phone platform.

### Can I use an AI voice for my IVR menu?

Yes. Generate each prompt, check your phone system's file rules, and upload the audio. Kveeky's pricing page says every paid plan includes commercial usage rights for generated audio.

### What audio format does an IVR need?

It depends on the platform. Microsoft Teams auto attendants take WAV, MP3 or WMA up to 5 MB, RingCentral takes WAV or MP3 up to 20 MB, and Twilio Play accepts MP3, WAV, AIFF, GSM and u-law (all retrieved October 16, 2026).

### How long should an IVR greeting be?

Keep the main greeting short, under about 15 seconds before the first menu option. That is our rule of thumb, not an industry standard, and about 37 words at 150 words per minute.

### Is text to speech or a human recording better for IVR?

Use text to speech when prompts change often or run in several languages. Use a human recording when the voice is part of your brand personality.

## How we checked this guide

This guide is written by Hitesh Kumawat for the [Kveeky](https://kveeky.com/) team. **Disclosure: Kveeky makes an AI voice generator.** No Kveeky usage data is used in this guide. Kveeky figures come from kveeky.com/pricing. We did not run listening tests, so we make no claims about voice quality, and we did not place test calls on every platform.

- Microsoft Teams auto attendant greeting formats, 5 MB limit, 1,000-character typed greeting and 54 text-to-speech languages: [Microsoft Learn, Set up an auto attendant](https://learn.microsoft.com/en-us/microsoftteams/aa-cq-setup-auto-attendant) and [Supported configurations](https://learn.microsoft.com/en-us/microsoftteams/aa-cq-reference-limits-supported-configurations), retrieved 2026-10-16.
- RingCentral WAV or MP3 greeting upload, 20 MB: [RingCentral support, voicemail greeting](https://support.ringcentral.com/app/users/desktop-web/setting-up-voicemail-ringcentral-app-desktop-web.html), retrieved 2026-10-16.
- Twilio Play formats and transcoding note: [Twilio, TwiML Play](https://www.twilio.com/docs/voice/twiml/play); Say with Amazon Polly and Google voices and SSML: [Twilio, TwiML Say](https://www.twilio.com/docs/voice/twiml/say), both retrieved 2026-10-16.
- Amazon Polly prices: [aws.amazon.com/polly/pricing](https://aws.amazon.com/polly/pricing/), retrieved 2026-10-16. ElevenLabs plans: [elevenlabs.io/pricing](https://elevenlabs.io/pricing), retrieved 2026-10-16 (the page showed a launch discount on Starter; the table uses the regular price).
- Kveeky plans and rights: [kveeky.com/pricing](https://kveeky.com/pricing), retrieved 2026-10-16.
- The 150 words per minute pace is the average used on our words to minutes calculator. The 130 wpm slow pace, 15-second greeting guide, 50% retake allowance, 6 characters per word and the menu rules are our own planning assumptions.

Prices and file rules change, so confirm them on each vendor's page before you buy. Your next step: write the 10-line script above for your business, then paste the greeting into the [Kveeky AI IVR voices](https://kveeky.com/voiceover/ivr-voices/) page to hear it.

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[
{"@type":"Question","name":"What is the best text to speech for IVR?","acceptedAnswer":{"@type":"Answer","text":"For fixed greetings and menus, a voice tool that exports audio, such as Kveeky or ElevenLabs, is the simplest choice. For prompts that change per caller, use a live service such as Amazon Polly through your phone platform."}},
{"@type":"Question","name":"Can I use an AI voice for my IVR menu?","acceptedAnswer":{"@type":"Answer","text":"Yes. Generate each prompt, check your phone system's file rules, and upload the audio. Kveeky's pricing page says every paid plan includes commercial usage rights for generated audio."}},
{"@type":"Question","name":"What audio format does an IVR need?","acceptedAnswer":{"@type":"Answer","text":"It depends on the platform. Microsoft Teams auto attendants take WAV, MP3 or WMA up to 5 MB, RingCentral takes WAV or MP3 up to 20 MB, and Twilio Play accepts MP3, WAV, AIFF, GSM and u-law (all retrieved October 16, 2026)."}},
{"@type":"Question","name":"How long should an IVR greeting be?","acceptedAnswer":{"@type":"Answer","text":"Keep the main greeting short, under about 15 seconds before the first menu option. That is our rule of thumb, not an industry standard, and about 37 words at 150 words per minute."}},
{"@type":"Question","name":"Is text to speech or a human recording better for IVR?","acceptedAnswer":{"@type":"Answer","text":"Use text to speech when prompts change often or run in several languages. Use a human recording when the voice is part of your brand personality."}}
]}
</script>
