WordPress plugin

Automatically create and embed audio versions of WordPress posts and pages.

The 'BeyondWords text-to-speech' WordPress plugin (formerly 'SpeechKit text-to-speech') allows you to automatically create audio versions of selected WordPress posts and embed them via the customizable audio player.

This guide explains how to set up and use the plugin, as well as answering FAQs.

️ The BeyondWords plugin works with Pages, Posts, and custom post types that have 'custom-fields' in the 'supports' array — see this WordPress resource for guidance.

Setting up the WordPress plugin

1. Set up your BeyondWords project

  1. Sign into your BeyondWords account (don't have one? Create your free account)

  2. Go to the 'Content' section of your project dashboard (don't have one? Create a project)

  3. Select 'WordPress' under 'Connect your CMS'

    Already created audio? You will need to navigate to 'Settings (Integration)' instead

  1. Select the AI voices you would like to use for titles and body content, then select 'Save changes' (please note that this will change the default voices for the API and Text-to-Speech Editor)
  1. Keep the API credentials (Project ID and API key) on hand for later

2. Install the plugin on WordPress

  1. Log into your WP Admin dashboard

  2. From the left-hand menu, select 'Plugins' then 'Add New'

  1. Search for 'BeyondWords', select the plugin, then select 'Install and activate'
  1. Once installed, select the 'Manage Plugins' button — you will be redirected to the 'Installed Plugins' page
  1. Select 'Settings' in the BeyondWords plugin
  1. Follow the instructions provided to authenticate your account and determine your settings
  1. Select 'Save Settings'

The BeyondWords for WordPress plugin should now be installed, activated, and enabled.

Using the WordPress plugin

🚨

Please make sure you are using the latest version of our plugin. We recommend that you enable auto-updates to ensure you don't miss any important changes.

Request audio when drafting posts

To request audio for a post, you will need to ensure that the 'Generate audio' checkbox is checked when you publish or update it. You can find this checkbox in the BeyondWords section of the Page/Post Settings Sidebar, as well as the dedicated BeyondWords sidebar.

The default setting for the checkbox depends on the post type and category, and can be determined in plugin settings (Settings > BeyondWords > 'Generate audio' settings > Preselect 'Generate audio').

Once processed, the audio will be automatically embedded via the Small Player. You can customize the appearance of the Small Player via your project dashboard.

Request audio for existing posts

You can request audio for one or more existing posts using 'Bulk actions':

  1. Open the relevant posts overview page in your WordPress admin ('Posts', 'Pages', or a custom post type)

  2. Use the checkboxes to select the posts you would like to request audio for (you may need to change your 'View mode' in 'Screen Options' first)

  3. Choose 'Generate audio' from the 'Bulk actions' dropdown then select 'Apply'

You should receive a success message stating that audio has been requested. If audio already exists for any posts, these will be skipped. Once processed, the audio will be automatically embedded via the Small Player.

Check the response to an audio request

You can check the BeyondWords API response to an audio request via the BeyondWords column in the relevant posts overview section of your WordPress admin.

  • audio has not been requested (–)

  • audio has been requested (✓)

  • audio was requested but the Player has been disabled (✓ - Disabled)

  • there has been an error (you will see a ! warning symbol with an error code and description)

(If you cannot see the column, you should be able to add it via 'Screen Options')

Error information

  • CMS updates disabled: This means that the audio has not been updated in line with changes to your WordPress post. (The previous version will remain.) This is because someone disabled CMS updates when editing the audio via BeyondWords (please see step 9).

Check the status of your audio

When audio has been requested for a page or post, you can see its status in the BeyondWords section of the Page/Post Settings Sidebar, as well as the dedicated BeyondWords sidebar.

You can also check audio status via your BeyondWords dashboard.

Once processed, the audio will be automatically embedded via the Small Player. Characters will be used each time a new audio is processed.

WordPress filters

️ BeyondWords was formerly known as SpeechKit. Please note that the old brand name is featured in these filters. Learn about filters on WordPress >

speechkit_post_player_enabled: Override whether the Player is enabled/disabled for a specific post.

$enabled boolean

Is the Player enabled?


$post_id int

The Post ID


php

function speechkit_post_player_enabled( $enabled, $post_id ) {
    // Disable the Small Player for a specific Post ID
    if ( $post_id === 42 ) {
      $enabled = false;
    }

    return $enabled;
}
add_filter( 'speechkit_post_player_enabled', 'speechkit_post_player_enabled', 10, 2 );

speechkit_content: Override the content used to generate audio.

$content string

Content of the current post.


$post_id int

The post ID.


php

function speechkit_content( $content, $post_id ) {
    // Override the content which is sent to the SpeechKit API
    $content = 'Content of the current post';

    // Or use $post_id to get content from plugins such as Advanced Custom Fields.

    return $content;
}
add_filter( 'speechkit_content', 'speechkit_content', 10, 2 );

speechkit_js_player_params: Filters the BeyondWords JavaScript SDK parameters.

$params array

function speechkit_js_player_params( $params ) {
  // Use the Medium Player (by specifying the "manual" embed method)
  $params['playerType'] = 'manual';

  return $params;
}
add_filter( 'speechkit_js_player_params', 'speechkit_js_player_params', 10 );

speechkit_amp_player_html: Filters the HTML of the BeyondWords AMP audio player.

$html string

The HTML for the audio player.


$post_id int

WordPress Post ID.


$project_id int

BeyondWords Project ID.


$podcast_id int

BeyondWords Podcast ID.

function speechkit_amp_player_html( $html, $post_id, $project_id, $podcast_id ) {
    // Add a custom wrapper to the default AMP audio player HTML.
    $html = '<div class="amp-player-wrapper">' . $html . '</div>';

    return $html;
}
add_filter( 'speechkit_amp_player_html', 'speechkit_amp_player_html', 10, 4 );

speechkit_js_player_html: Filters the HTML of the BeyondWords JS audio player.

$html string

The HTML for the audio player. The audio player JavaScript may fail to locate the target element if you remove or replace the default contents of this parameter.


$post_id int

WordPress Post ID.


$project_id int

BeyondWords Project ID.


$podcast_id int

BeyondWords Podcast ID.

function speechkit_js_player_html( $html, $post_id, $project_id, $podcast_id ) {
    // Add a custom wrapper to the default JavaScript audio player HTML.
    $html = '<div class="js-player-wrapper">' . $html . '</div>';

    return $html;
}
add_filter( 'speechkit_js_player_html', 'speechkit_js_player_html', 10, 4 );

FAQs

Creating audio

Will my old posts be converted into audio?

BeyondWords will not automatically convert pre-existing WordPress posts into audio.

However, you can generate audio for old posts by using 'Bulk actions' or updating a post with 'Generate audio' checked.


What happens when I update a post?

If you update the text in an audio-enabled post via WordPress, BeyondWords will automatically reprocess the audio. Once available, the new version will be streamed in the Small Player. Reprocessing usually takes just a few minutes and will not use any additional characters.

If you wish to edit the audio without editing your WordPress post, see our instructions on editing audio via our Text-to-Speech Editor.


Can I edit the audio without editing my WordPress post?

Yes, you can use our Text-to-Speech Editor to edit your audio without editing your WordPress post. You can edit the text, change voices at a title and paragraph level, and insert your own audio clips.


How do I generate audio if my posts are created programatically?

To add audio for posts that are created programatically (for example, with wp_insert_post), set the custom field speechkit_generate_audio with the value of 1.

This will send the post content to the BeyondWords API for processing immediately after the post is created in WordPress.

If you are using the wp_insert_post function, $fire_after_hooks will be set to true by default. This is a requirement — if you set this parameter to false, audio generation will fail.

For more information, please see this WordPress guide.


Which fields will be converted into audio?

BeyondWords will convert your WordPress title and body content into audio using the [default voice)(doc:change-voices) set for each.

If you would like excerpts to be included in audio versions, you can use the 'Process excerpts' setting in the plugin settings. Excerpts will be prepended to your body content, meaning that they will be read aloud after the title and in the default voice chosen for body content.


Player FAQs

What does the audio player look like? Can it be customized?

The WordPress plugin uses our Small Player, which supports light mode and dark mode. You can customize the Small Player in the 'Distribution (Player)' section of your project dashboard.


Where will the audio player appear?

Our WordPress plugin prepends the Small Player before the first part of the_content(), which you should find in your PHP templates. This means it should appear directly above your body content.

The Small Player will be automatically embedded into pages with processed audio. It will not be rendered on pages where an audio version is unavailable.


How do I remove the audio player from a post?
  1. Open the post in your WordPress Editor

  2. Open the BeyondWords sidebar

  3. Uncheck 'Display player'

  4. Select 'Update'


Alternatively, you can delete or disable the audio via your BeyondWords dashboard. The corresponding Small Player will be removed automatically.


Other FAQs

Can I share my audio versions elsewhere?

Yes, there are many other ways to distribute audio versions of your WordPress posts.

All of your audio versions will be available in the 'Content (Audios)' section of your BeyondWords project dashboard, where you can:

You can also distribute your audio content via podcast feed and share a 'latest audio' playlist.


Will the BeyondWords plugin slow down my website?

Our WordPress plugin should not slow down your website. We’ve designed BeyondWords to minimize any effect on latency. We’re also the only text-to-speech service that transcodes audio for HLS (HTTP Live Streaming), which splits audio into 15-second segments at different bit rates to ensure frictionless listening.


Troubleshooting and support

🚨

Please make sure you are using the latest version of our plugin. We recommend that you enable auto-updates to ensure you don't miss any important changes.

️ The BeyondWords plugin works with Pages, Posts, and custom post types that have 'custom-fields' in the 'supports' array — see this WordPress resource for guidance.

If you are having an issue with a specific post, it may be helpful to check the API response and audio status.

  • Setup issues: Please contact our support team by using the chat function on your dashboard or emailing [email protected].

  • Voice/sound issues: Please use the 'Report voice issue' function in your BeyondWords dashboard.

  • Errors: If your audio request or audio status is showing an error that you cannot resolve, please send information about this error to our support team.

  • Other issues: Please contact our support team by using the chat function on your dashboard or emailing [email protected].

If you are having trouble with a specific post:

  1. Open the BeyondWords sidebar on the relevant post

  2. Go to ‘Inspect’ then select ‘Copy’

  3. Paste the copied details into your message to our support team


What's next
Did this page help you?