=== WordWave - Easy Audio Narration ===
Contributors: 5starplugins
Tags: text to speech, tts audio, ai text to speech, accessibility, ai narration
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 1.2.7
Requires PHP: 7.4
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Text-to-speech tool that converts blogs into natural AI audio with a fast built-in audio player.

== Description ==

The WordWave text-to-speech for WordPress transforms written posts into listenable audio using AI narration. It allows visitors to listen instead of read, improving accessibility, engagement, and time on page without changing your publishing workflow.

With WordWave, you can convert blog posts to audio automatically or manually and display a lightweight audio player directly inside your content. The plugin generates high-quality MP3 audio and only displays the player where audio exists, ensuring a clean and fast experience.

= Text to Speech for WordPress =

Turn written WordPress content into audio using AI-powered text-to-speech technology. Offer an audio version of your posts so users can listen while multitasking, commuting, or browsing hands-free.

= Turn Blog Posts Into Audio =

Convert WordPress posts into audio automatically when published, or generate narration manually when needed. The built-in player embeds directly into your content.

= AI Narration Made Easy =

Generate natural-sounding AI voice narration without recording, editing, or hiring voice talent. Audio is saved as standardized 24kHz MP3 files compatible with all modern browsers.

= Built-In Audio Player =

WordWave includes a fast, lightweight audio player optimized for performance. It does not block page rendering and will only appear when audio is available.

= Accessibility Benefits =

Text-to-speech improves accessibility for visitors with visual impairments and provides an alternative way to consume content. Adding audio can increase user engagement and time on page.

== ✅ Free Standard Features ==

* Text-to-speech for WordPress blogs
* AI narration with natural voice output
* Uses your OpenAI or ElevenLabs API key
* 5,000 word limit per narration
* Convert blog posts to audio automatically or manually
* Built-in audio player
* Google Analytics tag on player
* Automatically add player to new posts
* Exclude specific posts using tags
* Ignore images and captions during narration
* Add intro message before narration
* Standardized 24kHz MP3 audio output
* Plugin updates

== ✨ Premium Upgrade (Optional) ==

For content creators, podcasters, and professionals, a Premium version is available with expanded features and tech support. [Check out our free trial](https://5starplugins.com/wordwave-audio-for-wordpress/?utm_source=wordpress.org&utm_medium=directory&utm_campaign=wow-free) for these features:

* Unlimited word count
* Multiple voice selections and language support
* Narrate pages, custom post types, and WooCommerce products
* Automatically generate audio for new content
* Player positioning controls
* Add intro and outro
* Downloadable MP3 files
* Podcast audio feed and archive page
* Voice styles (pace, tone)
* Built-in play stats dashboard 
* Technical support

== External services ==

- OpenAI: This plugin connects to OpenAI's Text-to-Speech API to generate audio narrations, it is needed to create MP3 files from post content.

It sends post text segments, selected voice/model, and narration settings when narration is generated (manually or on publish).
This service is provided by OpenAI: [terms of use](https://openai.com/policies/terms-of-use), [privacy policy](https://openai.com/policies/privacy-policy).

- ElevenLabs: This plugin can connect to the ElevenLabs Text-to-Speech API to generate audio narrations and voice previews when ElevenLabs is selected as the provider.

It sends post text segments, selected voice/model, and generation settings when narration is generated (manually or on publish). It also sends short preview text and selected voice ID when an admin clicks a voice preview in settings.
This service is provided by ElevenLabs: [terms of service](https://elevenlabs.io/terms), [privacy policy](https://elevenlabs.io/privacy).

- WordWave Stats API (5starplugins.com): This plugin can send aggregate plugin usage and environment statistics to improve compatibility and product quality.

It sends site URL, WordPress version, PHP version, plugin version, enabled provider, active feature flags, and aggregate player event totals. It does not send post content or visitor personal data.
Data is sent only when Share Plugin Statistics is enabled by an admin, on settings save and on a scheduled interval.
This service is provided by 5 Star Plugins: [terms of use](https://5starplugins.com/policy/#plugin), [privacy policy](https://5starplugins.com/policy/#privacy).

- WordWave Remote Sidebar Messages (5starplugins.com): This plugin fetches a JSON file from 5starplugins.com to display rotating sidebar notices on the plugin admin pages (for example, feature announcements and upgrade messaging).

It sends a standard HTTP GET request to a 5starplugins.com JSON endpoint (for example, /wordwave-premium-messages.json) and includes a WordWave user-agent string that contains plugin version and site URL. Requests are made when the admin settings page loads and then cached in a transient for up to 24 hours.
This service is provided by 5 Star Plugins: [terms of use](https://5starplugins.com/policy/#plugin), [privacy policy](https://5starplugins.com/policy/#privacy).

- Knowledgebase Widget (via support.5starplugins.com): This plugin loads a Knowledge Base and Support widget only on the WordWave admin pages only after clicking the Yes opt-in link for support resources when first activated.

It is used to provide access to our own knowledgebase and support resources, and retrieves the KB articles only when clicked on.
This service is provided by 5 Star Plugins: [terms of use](https://5starplugins.com/policy/#plugin), [privacy policy](https://5starplugins.com/policy/#privacy).

- This plugin includes the Freemius SDK, if you opt-in, it is used for optional analytics and licensing features.

It loads only if you opt-in on plugin activation, or if you click on a Trial or Upgrade link.
This service is provided by Freemius: [terms of use](https://freemius.com/terms/), [privacy policy](https://freemius.com/privacy/).

== Installation ==

1. Upload the plugin to the /wp-content/plugins/ directory or install via the WordPress plugin screen.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Configure settings and generate audio for your posts.
**Minimum Configuration**

Go to the plugin settings page:

* Choose service: Select "OpenAI" (currently the only option)
* Add API key: Paste your OpenAI API key and save
* Select voice: Choose from available voices
* Post content selector: Default is `main .entry-content` - change this if your theme uses different markup

Click Save Changes.

We recommend that you only enable Auto-Generate on Publish after manually generating a test narration.

**Additional Configuration**

* Intro text: Custom text to be read at the beginning of each narration. Includes variables for the headline, author and publish date.
* Intro MP3: Path to custom audio file to be played at the beginning of each narration.
* Player placement: Top of story or disable player (premium: by word count or paragraph number)
* Learn More link: An optional 'Learn More' link to appear in the player
* CDN: Serve the audio files from your specified CDN

**Eligibility Criteria**

You can customize certain criteria for posts to be eligible for AI narration:

* Post type
* Tags: Posts with any of the listed tags will be excluded
* Date: Posts before the given date will be excluded
* Minimum word count: Posts with fewer than the minimum will be excluded
* Maximum word count: Free version limited to 5,000 words (upgrade for higher limits)

== Frequently Asked Questions ==

= What Can You Create with WordWave? =

* Blogs – Add audio narration to WordPress posts
* Video Voiceovers (Premium) – Generate downloadable AI voice tracks for video content
* eLearning Content (Premium) – Add spoken explanations to lessons and tutorials
* Product Demos (Premium) – Create audio walkthroughs and explanations
* Product Accessibility (Premium) – Add audio to WooCommerce products for improved ADA
* Podcast-Style Content (Premium) – Turn blog posts into podcast episodes with downloadable MP3 files and an audio feed that can update podcast platforms, like Apple or Spotify Podcasts, automatically

= What is text-to-speech (TTS)? =

Text-to-speech (TTS) is a technology that reads written content aloud using a natural-sounding AI voice. In WordPress, TTS allows visitors to listen to blog posts instead of reading them.

= Does audio generate in real time? =

No. Audio is generated using a text-to-speech API and saved as an MP3 file for fast playback and compatibility.

= Will this affect page speed? =

No. The player is lightweight and optimized for performance.

= Does the free version require a Premium upgrade? =

No. The free version includes core text-to-speech functionality. [WordWave Premium](https://5starplugins.com/wordwave-audio-for-wordpress/?utm_source=wordpress.org&utm_medium=directory&utm_campaign=wow-free) adds advanced voice controls, unlimited word counts, custom post types, pages, podcast features, WooCommerce narration, and additional customization features. Plus, priority email support with our tech team in the US.

= Which AI model does WordWave use and what are the costs? =

WordWave is compatible with OpenAI gpt-4o-mini-tts and ElevenLabs AI Text to Speech, which you purchase directly, ensuring the best pricing. AI credits are not marked up and resold by 5 Star Plugins.

AI credits are used when audio is generated, NOT each time it is played. WordWave generates audio and stores the MP3 in your WordPress site for playback; it is not generated each time a visitor listens.

Please check OpenAI (gpt-4o-mini-tts) or ElevenLabs (ElevenAPI) for current plans and pricing. It is a nominal cost, just cents per minute of audio generated. Actual costs depend on characters processed and the voice model used; users pay the AI service directly.

= How does it work? =

Using WordWave is easy and does not require any technical expertise or coding. Get it working quickly in a few simple steps.

1. After installing and activating the plugin, navigate to "WordWave" in your WordPress admin menu.
2. From the plugin "Settings" tab, add your AI TTS account and select your preferences. Check "Auto-Generate On Publish" to automatically generate audio on future posts.
3. From the plugin "Narrations" tab, you can bulk generate audio for existing posts or create each individually with one click.
4. Test it out by visiting a post. You will find the WordWave audio player displayed everywhere there is audio.


== Screenshots ==

1. Audio player inside a WordPress blog post
2. Text-to-speech settings panel
3. AI narration generation screen
4. Example post with audio enabled

== Upgrade Notice ==

Fix generation progress and legacy narration path compatibility; add generation timing display and improve debug/log behavior.

== Changelog ==

= 1.2.7 =
* Restore narration generation progress updates with resilient index polling and fallback path handling
* Add generation time tracking and display in results
* Normalize legacy narration paths and self-heal track URLs for improved playback compatibility
* Harden audio file size resolution for older generated entries
* Add slug-change synchronization for narration folder/index metadata
* Gate stats and debug logging output behind debug mode
* Ensure tooltip support opt-in action works from both settings and narrations pages

= 1.2.6 =
* Add class_exists/function_exists guard before loading bundled Freemius SDK to avoid conflicts with other plugins
* Route debug logs to a dedicated uploads/wordwave-debug subfolder
* Update external services disclosure for remote sidebar messages (5starplugins.com)

= 1.2.5 =
* Bump plugin version to 1.2.5
* Refresh the stable tag and upgrade notice for the new release

= 1.2.4 =
* Reduce OpenAI narration chunk size to improve verbatim accuracy and reduce word drift
* Add verbatim instruction prefix to all OpenAI TTS requests
* Gate narration audit log (wordwave-narration-audit.log) behind debug flag; clean up on disable
* Exclude certain specific page builder classes from custom parser
* Fix stats meta inherited from duplicated posts: reset on first narration generation

= 1.2.3 =
* Update Freemius SDK to 2.13.1
* Improve settings UX with mutual exclusion for tag filters and field reordering
* Enhance download security with token validation
* Update post type filter labels for clarity
* Add iTunes category, author, and locked elements to RSS feed
* Enhance podcast feed XML compliance with proper iTunes namespaces

= 1.2.2 =
* More security hardening: nonce checks, input sanitization, and direct access guards
* Update to not call core loading files directly
* Fix file and folder path logic
* Remove curl and use wp_remote_get
* Fix whole input parsing
* Fix direct access to some files
* Removed upgrade/supplemental text

= 1.2.1 =
* Security hardening: nonce checks, input sanitization, and direct access guards
* Admin UX improvements: tag auto-suggest, generation button behavior updates
* External services disclosure updates and support widget enqueued properly

= 1.2 =
* Increased remote API call requests to 900 seconds to avoid timeouts and missing audio files
* Fixed Google gtag console error
* Fixed first group of content to process to be much smaller/shorter to boost page performance on initial load 
* Support for bullet lists in Block Editor
* Background audio generation on Publish to remove long delays in response
* Smaller character/word limits to speed up responses and avoid request time-outs
* Support for older Classic Block content - Headlines, paragraphs, and bullet lists
* Add timestamp to audio filename generation to resolve cached file issues

= 1.1.1 =
* Initial build
