=== Text To Speech TTS Accessibility === Contributors: atlasaidev, hasanazizul Donate link: http://atlasaidev.com/ Tags: accessibility, speech, tts, text to speech, text to audio Requires at least: 5.6 Tested up to: 7.0 Requires PHP: 7.4 Stable tag: 2.2.5 License: GPLv3 or later License URI: https://www.gnu.org/licenses/gpl-3.0.txt Free text to speech with browser voices + premium AI voices from Google, OpenAI & ElevenLabs. Add an audio player to any WordPress post. == Description == **AtlasVoice — Text To Speech TTS Accessibility** is a user-friendly text-to-speech plugin for WordPress and WooCommerce. Convert any post, page, or product description into natural-sounding audio with one click. The free version uses the browser's built-in speechSynthesis engine — no account, no API key, no registration. Upgrade to Pro for AtlasVoice's own AI voice engine, **Google Cloud TTS**, **OpenAI TTS**, or **ElevenLabs TTS**. **No Registration, No Account, No API required for the free version.** ### How It Works 1. Install & activate — the audio player appears automatically on selected post types. 2. Choose a voice — free browser voice, or a Pro AI provider (Google, OpenAI, ElevenLabs, AtlasVoice TTS Pro). 3. Customize and publish. ### Free Version — Key Features * 20–300+ browser voices via the browser's built-in [speechSynthesis API](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis). * Shortcode `[atlasvoice]` and a Gutenberg block. * Analytics dashboard — play counts, pause events, engagement. * Text aliases — replace abbreviations with spoken equivalents. * Unlimited TTS — no character limits, no monthly quotas. * Full customization — color, size, border, hover, custom CSS. * Cross-device — works on desktop, tablet, mobile. * Custom post types — WooCommerce, ACF, CPT UI, Toolset Types. * Caching/multilingual compatible — Autoptimize, LiteSpeed, WP Rocket, W3TC, SG Optimizer, WPML, Polylang, TranslatePress. ### AtlasVoice Pro adds AI voice providers (AtlasVoice TTS Pro, Google Cloud, OpenAI, ElevenLabs), bulk MP3 generation, downloadable MP3 audio, Google Cloud Storage backup, JSON-LD audio schema, scheduled email reports, advanced analytics. See [AtlasVoice Pro](https://atlasaidev.com/plugins/text-to-speech-pro/). ### Useful Links [Pro](https://atlasaidev.com/plugins/text-to-speech-pro/) · [Pricing](https://atlasaidev.com/pricing/) · [Demo](https://atlasaidev.com/plugins/text-to-speech-pro/demo/) · [Docs](https://atlasaidev.com/docs/) · [Tutorials](https://www.youtube.com/@atlasaidev) · [Contact](http://atlasaidev.com/contact-us/) == Installation == 1. From your WordPress admin, go to **Plugins > Add New**. Search for "Text To Speech TTS Accessibility". Click **Install Now** and then **Activate**. 2. Alternatively, download the plugin from the WordPress Plugin Repository, go to **Plugins > Add New > Upload Plugin**, upload the zip file, and activate it. 3. Go to the **Text To Speech** menu in your admin sidebar and configure your settings. 4. The audio player will appear automatically on your selected post types. **For Pro version:** 5. Purchase [AtlasVoice Pro](https://atlasaidev.com/plugins/text-to-speech-pro/) and install it as an add-on alongside the free version. 6. Go to **Integration** menu to connect your preferred AI voice provider (Google Cloud TTS, OpenAI, or ElevenLabs). 7. Go to **Customization** menu to select your preferred player style. 8. Go to **Listening** menu to choose your voice, language, speed, and pitch settings. == Frequently Asked Questions == = Does Text To Speech support all Android phones? = Yes, Text To Speech supports all Android phones. The free version uses the browser's [speechSynthesis API](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis), which varies by browser and device. Voices and languages may differ depending on the browser used. The [Pro version](https://atlasaidev.com/plugins/text-to-speech-pro/) eliminates this limitation by using server-side AI voice providers (Google Cloud, OpenAI, ElevenLabs), delivering consistent, high-quality audio across all devices and browsers. = Does Text To Speech support my language? = The Pro version supports [81+ languages](https://wordpress.org/plugins/text-to-audio/#:~:text=PRO%20SUPPORTED%20LANGUAGES%3A) with premium AI voices. Google Cloud TTS supports 90+ languages, and ElevenLabs offers multilingual voice models. The free version supports languages available through your [browser's speech synthesis engine](https://wordpress.org/plugins/text-to-audio/#:~:text=based%20on%20device.-,SUPPORTED%20LANGUAGES,-%3A). = Does it work with WooCommerce? = Yes! AtlasVoice works on all WooCommerce pages — product pages, shop pages, and any page with WooCommerce content. Product descriptions, custom fields (via ACF), and any visible text can be converted to audio. Bulk MP3 generation also works for WooCommerce products. = What is Google Cloud Text To Speech and how do I set it up? = [Google Cloud Text To Speech](https://cloud.google.com/text-to-speech) is Google's premium AI voice service offering 300+ voices across 90+ languages, including Neural2 and WaveNet voice types. To set it up: (1) Create a Google Cloud account, (2) Enable the Text-to-Speech API, (3) Create a service account and download the JSON key file, (4) Upload the JSON file in **AtlasVoice > Integration > Google Cloud TTS**. Google Cloud TTS is a paid service — you will be billed by Google based on the number of characters processed. = What is ChatGPT (OpenAI) Text To Speech? = [OpenAI Text To Speech](https://platform.openai.com/docs/guides/text-to-speech/overview) offers natural-sounding AI voices powered by the same technology behind ChatGPT. Choose from 6 voices (Alloy, Echo, Fable, Nova, Onyx, Shimmer) with Standard (tts-1) or HD (tts-1-hd) quality. To set it up: (1) Create an OpenAI account, (2) Generate an API key, (3) Enter the API key in **AtlasVoice > Integration > ChatGPT TTS**. OpenAI TTS is a paid service — you will be billed by OpenAI based on usage. = What is ElevenLabs Text To Speech? = [ElevenLabs](https://elevenlabs.io/) offers the most realistic AI voices available, with human-like intonation, emotion, and expression. Access 100+ premium voices with fine-tuning controls for stability, similarity boost, style exaggeration, and speed. To set it up: (1) Create an ElevenLabs account, (2) Get your API key from your profile, (3) Enter the API key in **AtlasVoice > Integration > ElevenLabs TTS**. ElevenLabs TTS is a paid service — you will be billed by ElevenLabs based on character usage. = Can I back up MP3 files to Google Cloud Storage? = Yes! The Google Cloud Storage backup feature works with **all** TTS providers — Google Cloud TTS, ChatGPT TTS, AtlasVoice TTS Pro, and ElevenLabs TTS. Even if you use ElevenLabs for voice generation, you can store the MP3 files in Google Cloud Storage. You need to configure a Google Cloud service account JSON file with Storage Admin permissions from the **Integration** menu. = Does audio content help with SEO? = Yes! Audio content improves SEO in several ways: (1) **Increased dwell time** — visitors stay longer on pages with audio, which is a positive Google ranking signal. (2) **Reduced bounce rate** — audio engagement keeps users on your site. (3) **Audio Schema markup** (Pro) — AtlasVoice generates JSON-LD structured data that helps search engines understand your audio content, potentially enabling rich results in Google Search. (4) **Accessibility compliance** — Google increasingly favors accessible websites in its rankings. = Is this plugin WCAG / ADA compliant? = AtlasVoice helps your website meet WCAG 2.1 (Web Content Accessibility Guidelines) and ADA (Americans with Disabilities Act) requirements by providing audio alternatives to text content. This is a key component of web accessibility, especially for users with visual impairments, dyslexia, or cognitive disabilities. = Can I use different AI voices on different posts? = The voice and language settings from the **Listening** menu apply globally. However, you can override the voice and language for individual posts using the shortcode: `[atlasvoice lang="en-GB" voice="Google UK English"]`. This gives you the flexibility to use different voices for different content. = Does Text To Speech support multilingual plugins? = Yes, the [Pro version](https://atlasaidev.com/plugins/text-to-speech-pro/) fully supports **WPML**, **TranslatePress**, **GTranslate**, and **Polylang**. The audio player automatically detects language changes and adjusts the voice accordingly. = Does Text To Speech support custom post types? = Yes, both the free and [Pro version](https://atlasaidev.com/plugins/text-to-speech-pro/) support custom post types. The plugin integrates with ACF (Advanced Custom Fields), Custom Post Type UI, and Toolset Types. = Content is missing from the audio playback. How do I fix it? = You have several options: (1) **Enable "Read Content from DOM"** in Settings — this reads content directly from the page, capturing dynamically generated content. (2) **Add CSS Selectors** (Pro) — target specific elements to include in playback. (3) **Use filters** — add content programmatically via the `tta__content_description` filter. (4) **Use the shortcode** — wrap specific content with `[atlasvoice]Your content here[/atlasvoice]`. = Can I exclude certain words or HTML tags from being read aloud? = Yes! In the [Pro version](https://atlasaidev.com/plugins/text-to-speech-pro/): (1) Go to **Settings > Exclude Texts To Speak** to exclude specific words or phrases (separate with pipe |). (2) Go to **Settings > Exclude Tag's Content** to skip content inside specific HTML tags like `code` or `blockquote` (separate with pipe |). (3) Exclude by post ID, category, or tag for broader content control. = How do I add a button in the Gutenberg block editor? = Open the Gutenberg block editor, search for the "Customize Button" block, add it to your content, and customize the appearance (color, background, width, CSS). = How do I change the button text? = **Method 1 — Shortcode:** `[atlasvoice listen_text="Listen" pause_text="Pause" resume_text="Resume" replay_text="Replay"]` **Method 2 — Filter (overrides shortcode):** ` add_filter('tta__button_text_arr', 'tta__button_text_arr_callback'); function tta__button_text_arr_callback($text_arr) { return [ 'listen_text' => 'Listen', 'pause_text' => 'Pause', 'resume_text' => 'Resume', 'replay_text' => 'Replay', 'listen_hover_title' => 'Click to listen', 'pause_hover_title' => 'Click to pause', 'resume_hover_title' => 'Click to resume', 'replay_hover_title' => 'Click to replay', ]; } ` = How do I change the button background and text color? = Go to the **Customization** menu in the plugin dashboard to adjust button background color, text color, hover effects, and border radius. You can also customize these via the Gutenberg "Customize Button" block. = How do I change voice and language via shortcode? = Use the `lang` and `voice` attributes: `[atlasvoice lang="en-GB" voice="Google UK English"]` = Where do I report security bugs found in this plugin? = Please report security bugs through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/e8df1af0-74f2-41c7-bb59-d72a3898e234). The Patchstack team will assist with verification, CVE assignment, and notify the developers. == Screenshots == 1. Default audio player on a blog post. 2. Default Pro audio player with enhanced controls. 3. AtlasVoice TTS Pro modern audio player with progress bar and download. 4. Settings page with content controls, exclusions, and post type selection. 5. Post editor with individual TTS content customization. 6. Integration menu — Google Cloud TTS, ChatGPT TTS, and ElevenLabs TTS setup. 7. Customization menu — choose from 6 player styles. 8. Listening menu — voice, language, speed, pitch, and ElevenLabs advanced controls. 9. Player customization — colors, width, border radius, and margin settings. 10. Analytics dashboard — engagement funnel, device types, and listening trends. 11. Bulk MP3 generation from the WordPress posts list. 12. Google Cloud Storage backup configuration. 13. ElevenLabs usage tracking with character count and subscription details. 14. Multilingual support GTranslate/WPML/TranslatePress 15. Analytics CSV, PDF, Email Schedule, Custom Search, Summery 16. Analytics Location, Top Cities, Playing Trend. 17. Analytics Peak Listening Hours, Popular Post. 18. Text to Speech Aliases 19. Add ACF Fields To Posts == Source code == The complete, unminified source code for this plugin is published on GitHub at https://github.com/azizulhasan/text-to-audio under the GPLv3 license (the same license as the distributed plugin). The git tag matching the wp.org plugin version (for example, tag `2.1.20` for plugin version 2.1.20) reflects the exact source used to produce the wp.org release ZIP. == External services == This plugin connects to a number of third-party services. Each one is described below — what it is, what data is sent, when it is contacted, and links to the provider's Terms of Use and Privacy Policy. = AtlasAiDev Tracker (track.atlasaidev.com) = **Off by default. Opt-in.** Nothing is sent to this service unless the site administrator explicitly opts in to usage tracking from the consent notice shown by the plugin. The choice is stored in the WordPress option `text-to-audio_allow_tracking` (`'yes'` to enable, `'no'` / unset to disable) and can be revoked at any time, after which no further requests are made. When opted-in, the service receives usage telemetry — plugin version, active WordPress / PHP version, site language, which AtlasVoice features are enabled, the site name and URL, the administrator email, and the site's outbound public IP address (resolved via icanhazip.com; see the Geolocation entry below for that provider's links). This is used by AtlasAiDev to understand which features matter to users and to prioritise improvements. No website visitor / listener data is sent to this service. Service provided by AtlasAiDev: - Terms and Conditions: https://atlasaidev.com/terms-and-conditions/ - Privacy Policy: https://atlasaidev.com/privacy-policy/ = AtlasAiDev plugin catalog (raw.githubusercontent.com) = When the site administrator opens the "Other AtlasAiDev Plugins" admin page (and only then), the plugin fetches a small JSON catalog from `https://raw.githubusercontent.com/atlasaidev/plugins/main/plugins.json` so the listing reflects the current set of AtlasAiDev plugins without needing a plugin update for every catalog change. The fetch is gated to that admin screen, requires the `manage_options` capability, and the screen shows an on-page notice describing the request before the user sees the catalog. No user or site data is sent beyond standard HTTP headers added by WordPress. The catalog is cached locally for 24 hours. Service provided by GitHub, Inc.: - Terms of Service: https://docs.github.com/en/site-policy/github-terms/github-terms-of-service - Privacy Statement: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement = Translation downloads (api.github.com, raw.githubusercontent.com) = To keep the plugin ZIP small, translation files (`.mo`) are not bundled — they are downloaded on demand from the public translation repository at `https://github.com/azizulhasan/atlasaidev-translations`. The plugin contacts two GitHub endpoints: 1. `https://api.github.com/repos/azizulhasan/atlasaidev-translations/contents/atlasvoice/` — to list the available files for the active site locale. 2. `https://raw.githubusercontent.com/azizulhasan/atlasaidev-translations/main/atlasvoice/` — to fetch each `.mo` file referenced by that listing. The only data sent is the WordPress locale code (for example `es_ES`, `pt_BR`) as part of the URL. No user-identifying information, site URL, or admin email is transmitted. The download is triggered: * On plugin activation, for the site's current locale. * When the site language is changed in **Settings → General**. * The plugin skips the download entirely if a `.mo` for the locale already exists in the plugin's `languages/` folder. Service provided by GitHub, Inc.: - Terms of Service: https://docs.github.com/en/site-policy/github-terms/github-terms-of-service - Privacy Statement: https://docs.github.com/en/site-policy/privacy-policies/github-general-privacy-statement = Geolocation lookups (ip-api.com, ipinfo.io, icanhazip.com) = **Off by default. Opt-in.** No request is ever sent to any of these services until the site administrator turns on the **"Show listener location in analytics"** toggle inside **AtlasVoice → Analytics** (visible only once the parent "Enable analytics" toggle is on). When the toggle is off, the dashboard simply shows "Unknown" for location fields and the helpers below short-circuit before any network call. When enabled, the analytics dashboard displays where listeners are located by resolving the listener's public IP address to country / region / city via: 1. `https://icanhazip.com/` — used once per session to determine the site's outbound public IP, so the rest of the plugin can call the geolocation services with the right address. 2. `http://ip-api.com/json/` — primary geolocation lookup. 3. `https://ipinfo.io//json` — fallback when ip-api.com returns an error or rate-limits. Only the listener's IP address is sent. Geolocation responses are stored against the play event in the local analytics table. Services: - ip-api.com — Terms: https://ip-api.com/docs/legal, Privacy: https://members.ip-api.com/privacy-policy - ipinfo.io — Terms: https://ipinfo.io/terms-of-service, Privacy: https://ipinfo.io/privacy-policy - icanhazip.com — https://major.io/p/a-new-future-for-icanhazip/ == Changelog == ### TRANSLATION REQUEST We are looking for people to help translate this plugin. If you can help, we would love to hear from you. Help us and the WordPress community translate the plugin. [Contact us](http://atlasaidev.com/contact-us/) and we'll guide you through the process. = 2.2.5 ( 14 Jun 2026 ) = Fixed : The player no longer reads punctuation marks such as apostrophes and quotation marks aloud as the word "backslash". Fixed : Headings, section dividers, lists and quotes are now read as their own sentences instead of running into the next paragraph. Fixed : Abbreviations, decimal numbers, email addresses and initials are no longer broken up while being read. Fixed : The Listen button again matches the width of your content instead of appearing as a small box. Fixed : Playback now starts from the beginning when you open and play a post in a new browser tab. = 2.2.4 ( 11 Jun 2026 ) = Fixed : Plyr-backed Pro player (players 3-6) could appear blank/invisible until the first user interaction on sites running Perfmatters with the "Remove Unused CSS" (RUCSS) feature enabled. Perfmatters was rewriting our two stylesheets (`text-to-audio-pro.css`, `plyr.min.css`) to `data-pmdelayedstyle` and only swapping the real `href` back after a mousemove / scroll / touch, so the widget rendered without any styles in the meantime. Improved : `TTA_Hooks::init_cache_compatibility()` now also subscribes to `perfmatters_rucss_excluded_stylesheets` so the TTS/Pro stylesheets stay as ordinary `` tags at page load. = 2.2.3 ( 31 May 2026 ) = Improved : The Dashboard widget's "Minutes Listened" and "Top Post Today" statistics are now shown to every user (previously hidden unless the premium add-on was active). Improved : Removed the remaining audio-file features from the free plugin — the AudioObject (JSON-LD) schema generator and all MP3 file-URL handling now live entirely in the AtlasVoice Pro add-on, because they require a generated audio file that the free browser-voice player does not produce. The free plugin no longer contains any functionality that is limited unless the add-on is active. Improved : The premium voice-provider integrations (Google Cloud TTS, ChatGPT, ElevenLabs) — their setup screen, API-key forms, and authentication checks — now live entirely in the AtlasVoice Pro add-on. The free plugin shows an upgrade prompt in their place; no provider or API-key code ships in the free build. Improved : Player responsiveness — the player now flows with your theme's content width on all screen sizes. Improved : The Listening tab's premium voice settings — provider voices, voice/language selection for the AI players, and the multilingual voice-to-language mapping — now live entirely in the AtlasVoice Pro add-on. The free plugin keeps the default browser-voice player's listening settings and, when a translation plugin (GTranslate, WPML/SitePress, TranslatePress, Polylang) is detected, shows an upgrade prompt in place of the mapping UI. Fixed : After the AtlasVoice Pro add-on is deactivated, the Customize tab now reliably reverts a previously selected premium player back to the Default player and saves it. Previously the saved premium player id stayed selected, so "Default" could not be re-saved. Improved : Analytics now tracks all your posts — the previous 20-post tracking cap has been removed from both the dashboard and the setup wizard. New and existing installs default to tracking every post. Added : If the AtlasVoice Pro add-on is active but older than the version that hosts the screens moved out of the free plugin, the dashboard now shows a notice prompting you to update the add-on so those screens keep working. = 2.2.2 ( 31 May 2026 ) = Improved : Custom button CSS now uses the WordPress Customizer's built-in "Additional CSS" panel (Appearance → Customize → Additional CSS) instead of a separate plugin field. Any CSS you previously saved in the plugin's Custom CSS box is migrated there automatically on update — nothing to re-enter. Improved : The player now renders in the normal page DOM (light DOM) so your theme styles and Customizer Additional CSS apply to it directly. Improved : Moved all remaining inline `