Your readers want to listen. This plugin records your post in a human-sounding voice and saves it to your media library as an ordinary MP3. It is yours: download it, hand it on, put it in a podcast feed. The recording is made by your own computer, in your browser.
The same sentence, read twice. On the left, this plugin. On the right, the voice built into your browser, which is what every free text-to-speech plugin uses.
Kokoro-82M, the voice called Heart
What a free plugin can offer you
Both clips are levelled to the same loudness, because the louder recording wins on the ear no matter how it sounds.
One row above your text. Under 12 KB, and it takes its colours from your theme.
It lands in your media library like any upload. Download it, attach it to a podcast feed, hand it to someone. It is yours.
Heart, Bella, Nicole and Sarah; Michael and Adam; Emma and George. American and British, male and female. Set one for the whole site or pick a different one per post.
Under 12 KB. They download the MP3 and nothing else. No model, no engine, no waiting.
Nothing to sign up for and nothing to run out of. Voice as many posts as you like, as often as you like.
The screen inside your WordPress. It reads your hardware, tells you what the download will cost you once, and lists your posts with the ones that already have audio.
| Services with an API | This plugin | |
|---|---|---|
| Where the voice is made | on their server | in your browser |
| Where your post text goes | to them | nowhere |
| API key | required | none |
| Account | required | none |
| What you pay for | every character, forever | nothing |
| Limit | your credit balance | none |
| Works without internet | no | yes, after the first download |
| If the service shuts down or raises prices | the plugin dies | it keeps working |
The last row is the point. A plugin built on somebody's API lives exactly as long as that API does. Once the voice is downloaded, this one makes no outside calls at all.
A blog publishing four 1,500-word articles a week writes about 1.9 million characters a year. At the prices those services publish themselves:
| Service | Per year |
|---|---|
| ElevenLabs via API | $95 to $190 |
| Trinity Audio, Basic | $189 |
| Trinity Audio, Standard | $849 |
| BeyondWords Pro | $1,068 to $1,188 |
| SD Voice for Posts | free, no limits |
Those are their own published prices. The per-character fee is not a detail of their pricing. It is where their revenue comes from, which is why none of them can simply stop charging it.
They use the voice built into the browser, the one you heard at the top of this page. It is free, and it has a hard limit written into the specification: the Web Speech API only speaks out loud. It cannot hand you a file.
| Browser voice | This plugin | |
|---|---|---|
| Price | free | free |
| Voice | robotic | human-sounding |
| MP3 file | impossible | yes |
| Reader can download it | no | yes |
| Podcast feed | no | yes |
| Works offline | no | yes |
Because your computer does the work, the speed is your computer's speed. A machine with graphics acceleration is in a different league from one without, and we are not going to print a number here that turns out to be a lie on your hardware.
So measure it instead. The page below downloads the same voice this plugin uses and times one sentence on your machine. Nothing is installed and nothing is sent anywhere.
The voice model itself is not bundled with the plugin. It is fetched from Hugging Face the first time you press Prepare the voice, and then cached in your browser. That transfer is one-way: the model comes in, and nothing about you or your post text goes out. This plugin has no analytics and makes no call home of any kind.
The plugin has been submitted to the WordPress plugin directory and is waiting for its review. When it is approved, this is where the install link will be. From then on it installs the ordinary way, from Plugins → Add New inside your own site.
Nothing to sign up for in the meantime. There is no mailing list here, and no form asking for your address in exchange for being told.