Text to Speech (TTS) Preview
100% LocalPreview text-to-speech with browser voices, adjustable rate, pitch, and volume.
Type text and pick a browser voice. Adjust rate, pitch, and volume before playing.
What is Text to Speech (TTS) Preview?
Frequently Asked Questions
Technical Deep Dive
Text to Speech (TTS) Preview
Convert text to speech using the browser's built-in Web Speech API. Select from available system voices (English and other languages), adjust speech rate (0.5×–2×), pitch (0–2), and volume. Shows estimated word count and speaking duration. Desktop notification support when session ends.
Built for Devs
Designed by people who use these tools in production every day.
Smart Defaults
Reasonable assumptions out of the box, every assumption overridable when you need it.
Workflow-Friendly
Pairs with your IDE, CI, and code review, output drops into commits and PRs cleanly.
Text to Speech in 2026: APIs, Quality, and Use Cases
Text-to-speech has gone from robotic-but-functional to nearly indistinguishable from human in a few years. The Web Speech API gives you free, fast access to whatever voices your OS has installed; cloud services (OpenAI, ElevenLabs, Polly, Google, Azure) provide neural voices that sound generated rather than spoken. This tool uses the Web Speech API for preview, the same audio that screen readers use, the same that accessibility tools rely on, and the same you'd start with for any TTS prototype.
The Web Speech API
Basic usage
That's it. The OS's TTS engine handles the rest.
Parameters
Listing voices
Voices load asynchronously. First call may return empty:
Control methods
Events on utterances
onboundary is useful for syncing highlighted text with speech ("karaoke"-style follow-along).
Voice Quality Levels
Default OS voices
Robotic but functional. macOS Alex, Windows Zira, clearly synthetic, comprehensible. Free, local, instant.
Premium OS voices
macOS "Enhanced" voices (Siri voices, premium Samantha), Windows online voices. Downloaded from OS preferences; often 100+ MB. Significantly more natural.
Cloud neural voices
- Apple "Premium" voices (on Mac, downloaded extra).
- Google WaveNet / Studio voices (Chrome on some platforms).
- Microsoft Azure neural voices (Edge online voices).
Generative cloud voices
- OpenAI TTS (
tts-1,tts-1-hd,gpt-4o-mini-tts): natural, expressive, ~$15/M characters. - ElevenLabs: voice cloning, emotional control, lifelike. ~$0.30/1k chars.
- PlayHT, Resemble.AI: similar quality tier.
Which one when?
| Use case | Tool |
|---|---|
| Accessibility (screen reader) | OS default voices |
| Quick preview during development | Web Speech API |
| Production voiceover | OpenAI TTS or ElevenLabs |
| Podcast / audiobook | ElevenLabs, PlayHT |
| Multilingual broadcast | Azure or Google Cloud TTS |
| Real-time conversational AI | OpenAI Realtime API, ElevenLabs streaming |
SSML: Fine-Grained Control
Speech Synthesis Markup Language is the standard for prosody and timing:
Supported by Polly, Google Cloud TTS, Azure. Web Speech API: limited or no SSML support; punctuation is your main control.
Pronunciation Hacks for Web Speech
Without SSML, you can still nudge the engine:
Pauses
Use , for short pauses, . for sentence ends, , for medium pauses.
Acronyms
Without dots, some engines pronounce as a word.
Names
If the engine mispronounces a name, write it phonetically:
Trade clarity for accuracy.
Numbers
Engines usually read numbers as words. To force digit-by-digit:
Use Cases
Accessibility
Screen readers (VoiceOver, NVDA, JAWS) use the OS TTS, same voices you hear in this tool. Test your app with the screen reader on; the experience is what's important, not the voice quality.
Audio for video / podcasts
Generate voiceover from script. Cloud TTS is usually better; Web Speech gives you a free preview to test pacing.
Reading articles aloud
Many news/blog sites add "listen" buttons that call speechSynthesis. Free for them; useful for readers commuting.
Language learning
Hear a foreign word pronounced. Web Speech respects the lang attribute; u.lang = 'fr-FR' uses a French voice if available.
Pronunciation guides
Get computer-generated pronunciation as a baseline; humans review.
Voice assistant prototypes
Stitch together speechSynthesis + microphone + chat API for a quick voice assistant proof-of-concept.
Common Bugs
Voices array empty on first call
Race condition, voices load async. Wait:
Speech stops after ~15 seconds (Chrome bug)
Hacky but works.
No speech on first page load
Browsers require a user gesture before playing audio. Trigger from a button click, not page-load.
Speech doesn't stop on navigation
In SPAs, navigating doesn't unload the page. Cancel explicitly:
Voice selection per-language
If user picks a language but you set a voice from a different language, results are unpredictable. Match voice to lang:
iOS Safari quirks
iOS limits TTS in PWAs and adds extra restrictions. Test on actual iOS Safari, not just Chrome.
Programmatic Voice Selection
Privacy Considerations Specific to TTS
Some Web Speech voices are network-backed. voice.localService:
true: synthesis on-device, no network.false: text sent to OS/cloud TTS service for synthesis.
If you're reading sensitive content aloud (proofreading internal docs, drafting confidential responses), filter to localService: true voices.
The browser → cloud TTS path varies by OS and browser:
- macOS default voices: local.
- iOS Siri voices: local for downloaded, network for others.
- Chrome Google voices: often network.
- Windows Microsoft voices: most are local; "online" voices are network.
- Android Google TTS: typically network.
Privacy
This page calls speechSynthesis.speak() with the text you typed; nothing is uploaded by the page. However, the browser may route the text to a cloud TTS service if you pick a network voice (see above). To verify: open DevTools Network during speech with your chosen voice; for local voices you'll see no requests; for network voices you'll see traffic to a TTS endpoint. The tool itself doesn't upload, anything that goes out is between your browser and the OS/cloud TTS engine the OS uses.