Title: Codeep Voice: Text to Speech MP3 for Posts
Author: sdsoftware
Published: <strong>October 8, 2026</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/codeep-voice-for-posts/assets/banner-772x250.png?rev=3734359)

![](https://ps.w.org/codeep-voice-for-posts/assets/icon-256x256.png?rev=3734359)

# Codeep Voice: Text to Speech MP3 for Posts

 By [sdsoftware](https://profiles.wordpress.org/sdsoftware/)

[Download](https://downloads.wordpress.org/plugin/codeep-voice-for-posts.0.3.2.zip)

 * [Details](https://test.wordpress.org/plugins/codeep-voice-for-posts/#description)
 * [Reviews](https://test.wordpress.org/plugins/codeep-voice-for-posts/#reviews)
 *  [Installation](https://test.wordpress.org/plugins/codeep-voice-for-posts/#installation)
 * [Development](https://test.wordpress.org/plugins/codeep-voice-for-posts/#developers)

 [Support](https://wordpress.org/support/plugin/codeep-voice-for-posts/)

## Description

Codeep Voice for Posts turns a post into an audio file. You open the plugin’s
 screen
in your admin, pick a post and press a button. Your own browser generates the speech,
and the finished recording is saved to your media library as an ordinary MP3, attached
to that post. A small player then appears on the post for your readers.

The speech is produced by a model that runs on your computer, inside the admin
 
screen. The plugin has no server of its own. There is no account to create, no API
key to paste and nothing that counts your usage, and your post text is not uploaded
anywhere.

#### Hear it before you install

Two recordings of the same sentence, one made by this plugin and one by the
 speech
voice built into your browser, are on the plugin page: https://sdsoftware.io/codeep-
voice-for-posts/

#### What you get

 * A real **MP3 file** in your media library, attached to the post
 * **Nine voices**: Heart, Bella, Nicole and Sarah; Michael and Adam, American; 
   Emma and George, British; and Amy, American, fast on a computer with no graphics
   card
 * A **player** on the post, under 12 KB, which takes its colours from your theme
 * A **download button** in that player, so a reader can keep the file
 * Your readers download the MP3 and nothing else: no model, no engine, no waiting

Because the file is a plain MP3 in your media library, you can do anything you
 
would do with any other upload: download it, put it in a podcast feed, serve it 
from a CDN, or hand it to someone.

#### How it works

The voice model is downloaded once and then lives in your browser. When you press
the button, your own computer generates the audio, the plugin saves it as an MP3
attachment, and your visitors simply get that file.

Visitors download **nothing** but the MP3 itself. No model, no engine, no WebGPU
on their side.

#### Honest about speed

The voice is generated on your own computer, so the speed is your computer’s speed,
and it depends on how long the post is.

On a machine with graphics acceleration it is quick. Without acceleration it still
works, it just takes considerably longer on a long article.

The plugin measures your computer and shows an estimate for that specific post **
before** you start, so you know what you are in for. Either way you only do it once
per post, and the file stays for good.

You can also find out before installing anything. This page downloads the same
 
voice and times one sentence on your own machine: https://sdsoftware.io/check/

#### What this plugin does not claim

It does not make your site compliant with any accessibility standard. WCAG does 
not require that article text be read aloud, so an audio version is a convenience
for your readers rather than a compliance measure. A good convenience, but a convenience.

### External services

This plugin downloads a text-to-speech model the first time you use it. Nothing 
is sent out: the transfer is one-way, into your browser.

 * **Hugging Face** (`huggingface.co`) hosts the Kokoro-82M model files, licensed
   Apache-2.0. Downloaded once, when you press **Prepare the voice**, and then cached
   in your browser. Your post text is never uploaded. Terms: https://huggingface.
   co/terms-of-service Privacy: https://huggingface.co/privacy
 * **Hugging Face** (`huggingface.co`) also hosts the Piper voice files, licensed
   MIT, used by the voice named “Amy, American, fast on any computer”. The same 
   one-way download applies: it happens once, when you press **Prepare the voice**
   with that voice selected, and the file is then cached in your browser. Which 
   file is downloaded depends on the voice you choose, and its size is shown on 
   the screen before you start. Terms: https://huggingface.co/terms-of-service Privacy:
   https://huggingface.co/privacy

No account, API key or registration is required for any of this, and no data about
you or your visitors is sent anywhere.

### Third-party libraries

The plugin carries the code it needs instead of pulling it from a CDN. That is
 
what makes it work offline, and it means shipping other people’s work. Licences 
are included in `assets/js/vendor/licenses/`.

 * **kokoro-js** 1.2.1, Apache-2.0: the voice model runner
 * **@huggingface/transformers** 3.8.1, Apache-2.0: inside the same bundle
 * **onnxruntime-web** 1.22, MIT: the WebAssembly runtime in `assets/wasm/`,
    assets/
   js/vendor/ort.js and part of the same bundle
 * **phonemizer** 1.2.1, Apache-2.0: turns text into the sounds a voice reads,
    
   in `assets/js/vendor/phonemizer.js` and inside the same bundle
 * **espeak-ng**, GPL-3.0-or-later: the pronunciation rules phonemizer is built
   
   on. It ships inside phonemizer rather than as a package of its own
 * **@breezystack/lamejs** 1.2.7, LGPL-3.0: MP3 encoding

Two of those licences are the reason this plugin is **GPLv2 or later** rather
 than
GPLv2 only: espeak-ng under GPL-3.0 and lamejs under LGPL-3.0. Both are compatible
through the “or later” clause, and neither would be without it.

espeak-ng is easy to miss, so it is named here on purpose: it appears in no
 package.
json. It arrives inside `phonemizer`, which arrives inside `kokoro-js`, and all 
three end up compiled into one file.

The voice model itself (Kokoro-82M, Apache-2.0) is not bundled. It is
 downloaded
from Hugging Face on first use, as described above.

## Screenshots

[⌊The player on a published post: what your readers see.⌉⌊The player on a published
post: what your readers see.⌉[

The player on a published post: what your readers see.

[⌊The voicing screen: what your computer can do, what the one download costs, and
every post with its state.⌉⌊The voicing screen: what your computer can do, what 
the one download costs, and every post with its state.⌉[

The voicing screen: what your computer can do, what the one download costs, and 
every post with its state.

[⌊Voicing in progress: the number of chunks, the estimate, and the time left.⌉⌊Voicing
in progress: the number of chunks, the estimate, and the time left.⌉[

Voicing in progress: the number of chunks, the estimate, and the time left.

[⌊The MP3 in the Media Library, attached to the post.⌉⌊The MP3 in the Media Library,
attached to the post.⌉[

The MP3 in the Media Library, attached to the post.

[⌊Settings, all of them.⌉⌊Settings, all of them.⌉[

Settings, all of them.

## Installation

 1. Upload the plugin through **Plugins  Add New  Upload**, or copy the folder to `
    wp-content/plugins/`.
 2. Activate it.
 3. Go to **Codeep Voice** in the admin menu.
 4. Press **Prepare the voice** once. The model downloads and stays in your browser.
 5. Pick a post and press **Voice it**.

The MP3 lands in your Media Library and the player appears on the post automatically.

## FAQ

### Do my visitors download the voice model?

No. They download the MP3 and a player under 12 KB. The model only ever runs in 
your admin screen, on your computer.

### Does my post text get sent anywhere?

No. The text is turned into audio inside your browser. There is no server of ours
involved at any point.

### What does it need to run?

A reasonably current browser in your admin. Graphics acceleration makes it much 
faster but is not required. Without it the plugin still works, just slower.

### Can I close the tab while it is working?

You can stop and come back. Progress is saved after every chunk, so reopening the
screen continues from where it left off rather than starting over. Do not close 
the tab mid-run if you can help it, because leaving it open is faster.

### I changed the voice in settings but my posts sound the same

Changing the setting does not rewrite audio that already exists. The posts list 
shows which voice each post was made with; press **Voice it again** on the ones 
you want switched.

### I edited a post. What happens to the audio?

The post is marked **Out of date** in the list. The old file keeps playing and is
not deleted until you make a new one, so your readers never hit a dead player.

### Can I change how the player looks?

Yes, with CSS, and nothing in the plugin needs editing. The player uses a shadow
root so your theme cannot break it and it cannot break your theme. Style it from
outside with custom properties:

    ```
    .entry-content {
      --codeep-voice-accent: #7c3aed;
      --codeep-voice-line: #e9d5ff;
      --codeep-voice-background: #faf5ff;
      --codeep-voice-box-radius: 10px;
      --codeep-voice-padding: .9em 1em;
    }
    ```

Or with `::part()` for full control:

    ```
    codeep-voice-player::part(title)  { font-weight: 700; }
    codeep-voice-player::part(button) { background: #7c3aed; color: #fff; }
    ```

Available parts: `box`, `play`, `rate`, `button`, `title`, `seek`, `time`, `download`.
Font and text colour are inherited from your theme automatically.

### Where does the player show up?

Before the post by default. You can move it after the post, or turn automatic placement
off entirely and put the `[codeep_voice]` shortcode exactly where you want it.

### Which languages are supported?

The voice model reads English. The plugin interface itself follows your site language.

### Does it work on a phone?

The player does, for your readers. Generating audio on a phone is not recommended.
Do that on a desktop.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Codeep Voice: Text to Speech MP3 for Posts” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ sdsoftware ](https://profiles.wordpress.org/sdsoftware/)
 *   [ vladimirgrigoryan ](https://profiles.wordpress.org/vladimirgrigoryan/)

[Translate “Codeep Voice: Text to Speech MP3 for Posts” into your language.](https://translate.wordpress.org/projects/wp-plugins/codeep-voice-for-posts)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/codeep-voice-for-posts/),
check out the [SVN repository](https://plugins.svn.wordpress.org/codeep-voice-for-posts/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/codeep-voice-for-posts/)
by [RSS](https://plugins.trac.wordpress.org/log/codeep-voice-for-posts/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.3.2

 * After three of your posts have audio, the plugin’s own screen asks once
    for 
   a review on WordPress.org. One click on either button and it never asks again.
   It never appears on any other admin page.

#### 0.3.1

 * The name in the plugin directory now says what the plugin does:
    Codeep Voice:
   Text to Speech MP3 for Posts. No code changed.

#### 0.3.0

 * A second voice engine, Piper. The new voice “Amy, American, fast on any
    computer”
   needs no graphics acceleration and is many times faster than the existing voices
   on a plain processor. Pick it in Settings; everything else works exactly as before.
 * Smaller download: the plugin now carries one ONNX runtime instead of two.

#### 0.2.0

 * Extension points for add-ons: the voice list, the data passed to the admin
    screen
   and the moment an MP3 is attached to a post can now be filtered or hooked by 
   other plugins. Nothing changes for anyone who does not use them.

#### 0.1.0

 * First release.

## Meta

 *  Version **0.3.2**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/codeep-voice-for-posts/)
 * Tags
 * [accessibility](https://test.wordpress.org/plugins/tags/accessibility/)[podcast](https://test.wordpress.org/plugins/tags/podcast/)
   [text to audio](https://test.wordpress.org/plugins/tags/text-to-audio/)[text to speech](https://test.wordpress.org/plugins/tags/text-to-speech/)
   [tts](https://test.wordpress.org/plugins/tags/tts/)
 *  [Advanced View](https://test.wordpress.org/plugins/codeep-voice-for-posts/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/codeep-voice-for-posts/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/codeep-voice-for-posts/reviews/)

## Contributors

 *   [ sdsoftware ](https://profiles.wordpress.org/sdsoftware/)
 *   [ vladimirgrigoryan ](https://profiles.wordpress.org/vladimirgrigoryan/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/codeep-voice-for-posts/)