{"id":273044,"date":"2026-01-14T05:44:29","date_gmt":"2026-01-14T05:44:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/speechable\/"},"modified":"2026-01-18T06:31:54","modified_gmt":"2026-01-18T06:31:54","slug":"speechable","status":"publish","type":"plugin","link":"https:\/\/fr.wordpress.org\/plugins\/speechable\/","author":23433284,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.2","stable_tag":"trunk","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Speechable","header_author":"Tanish Mittal","header_description":"Convert posts to audio using AI-powered text-to-speech with word highlighting.","assets_banners_color":"fdfdfd","last_updated":"2026-01-18 06:31:54","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/tanishmittal.com?ref=speechable","header_plugin_uri":"https:\/\/github.com\/tansihmittal\/speechable\/","header_author_uri":"https:\/\/tanishmittal.com","rating":0,"author_block_rating":0,"active_installs":10,"downloads":225,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"glowdopera","date":"2026-01-14 05:50:48"}},"upgrade_notice":{"1.0.2":"<p>Improved compatibility with WP Rocket, Elementor, and other popular caching\/page builder plugins.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3439315,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3439315,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3439315,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3439315,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Audio player on the frontend with word highlighting","2":"Settings page with voice selection and presets","3":"Block editor panel for generating audio","4":"Voice presets for quick transformations","5":"Player customization options"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[1953,452,16722,1449,4013],"plugin_category":[34,50],"plugin_contributors":[253951],"plugin_business_model":[],"class_list":["post-273044","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-audio","plugin_tags-text-to-speech","plugin_tags-tts","plugin_tags-voice","plugin_category-accessibility","plugin_category-media","plugin_contributors-glowdopera","plugin_committers-glowdopera"],"banners":{"banner":"https:\/\/ps.w.org\/speechable\/assets\/banner-772x250.png?rev=3439315","banner_2x":"https:\/\/ps.w.org\/speechable\/assets\/banner-1544x500.png?rev=3439315","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/speechable\/assets\/icon-128x128.png?rev=3439315","icon_2x":"https:\/\/ps.w.org\/speechable\/assets\/icon-256x256.png?rev=3439315","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Speechable<\/strong> transforms your WordPress content into natural-sounding audio using AI-powered text-to-speech technology. Speechable uses Piper TTS, an open-source neural text-to-speech engine that runs in your browser.<\/p>\n\n<h4>Third-Party Service<\/h4>\n\n<p>This plugin uses the following third-party services for text-to-speech functionality:<\/p>\n\n<p><strong>Piper TTS Web Library<\/strong><\/p>\n\n<ul>\n<li>Service Provider: <a href=\"https:\/\/github.com\/Mintplex-Labs\/piper-tts-web\">Mintplex Labs<\/a><\/li>\n<li>Library CDN: jsDelivr (https:\/\/cdn.jsdelivr.net\/npm\/@mintplex-labs\/piper-tts-web)<\/li>\n<li>ONNX Runtime CDN: Cloudflare (https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/onnxruntime-web)<\/li>\n<li>WASM Phonemizer CDN: jsDelivr (https:\/\/cdn.jsdelivr.net\/npm\/@diffusionstudio\/piper-wasm)<\/li>\n<li>Voice Models: Downloaded from <a href=\"https:\/\/huggingface.co\/diffusionstudio\/piper-voices\">Hugging Face<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/github.com\/Mintplex-Labs\/piper-tts-web\/blob\/main\/LICENSE\">MIT License<\/a><\/li>\n<\/ul>\n\n<p><strong>Whisper (Word Timestamps)<\/strong><\/p>\n\n<ul>\n<li>Service Provider: <a href=\"https:\/\/huggingface.co\/docs\/transformers.js\">Hugging Face Transformers.js<\/a><\/li>\n<li>Library CDN: jsDelivr (https:\/\/cdn.jsdelivr.net\/npm\/@huggingface\/transformers)<\/li>\n<li>Model: Xenova\/whisper-tiny.en (~75MB, downloaded on first use)<\/li>\n<li>Purpose: Provides accurate word-level timestamps for synchronized highlighting<\/li>\n<li>Terms of Service: <a href=\"https:\/\/github.com\/huggingface\/transformers.js\/blob\/main\/LICENSE\">Apache 2.0 License<\/a><\/li>\n<\/ul>\n\n<p><strong>What data is transmitted:<\/strong><\/p>\n\n<ul>\n<li>The TTS library and ONNX runtime are loaded from CDN when generating audio<\/li>\n<li>Voice model files are downloaded from Hugging Face when first using a voice<\/li>\n<li>Whisper model is downloaded for word timestamp extraction (first use only)<\/li>\n<li>Your content text is processed locally in your browser and is NOT sent to any external server<\/li>\n<li>Once downloaded, all resources are cached locally in your browser<\/li>\n<\/ul>\n\n<p><strong>Why external resources are required:<\/strong><\/p>\n\n<p>The text-to-speech engine requires machine learning runtime (ONNX) and voice models that are too large to bundle with the plugin. These are loaded on-demand from CDN services, similar to how Google Fonts or other web services work. This is a service-based approach that keeps the plugin lightweight while providing high-quality AI voices.<\/p>\n\n<h4>Key Features<\/h4>\n\n<ul>\n<li><strong>AI-Powered Voices<\/strong> - Natural-sounding speech using Piper TTS neural network models<\/li>\n<li><strong>Accurate Word Highlighting<\/strong> - Whisper-powered word timestamps for precise synchronization<\/li>\n<li><strong>12 Languages<\/strong> - English, German, French, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, Korean<\/li>\n<li><strong>Customizable Player<\/strong> - Match your theme with custom colors and styling<\/li>\n<li><strong>Download Audio<\/strong> - Let visitors download audio files for offline listening<\/li>\n<li><strong>Voice Presets<\/strong> - Quick effects like Radio, Stadium, Cave, Chipmunk, Robot, and more<\/li>\n<li><strong>Free<\/strong> - No premium version, no limits, no hidden costs<\/li>\n<\/ul>\n\n<h4>How It Works<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to Settings \u2192 Speechable to configure your preferences<\/li>\n<li>Edit any post and click \"Generate Audio\" in the sidebar<\/li>\n<li>The audio player automatically appears on your published posts<\/li>\n<\/ol>\n\n<h4>Voice Presets<\/h4>\n\n<p>Transform your audio with one-click presets:<\/p>\n\n<ul>\n<li>Default - Natural voice<\/li>\n<li>Radio - Broadcast quality<\/li>\n<li>Stadium - Echo effect<\/li>\n<li>Cave - Deep reverb<\/li>\n<li>Chipmunk - High-pitched fun<\/li>\n<li>Deep - Low bass voice<\/li>\n<li>Robot - Mechanical tone<\/li>\n<li>Telephone - Phone quality<\/li>\n<li>Megaphone - Announcement style<\/li>\n<li>Giant - Booming voice<\/li>\n<li>Fairy - Magical high voice<\/li>\n<li>Narrator - Audiobook style<\/li>\n<\/ul>\n\n<h4>Perfect For<\/h4>\n\n<ul>\n<li><strong>Bloggers<\/strong> - Give readers an audio option<\/li>\n<li><strong>News Sites<\/strong> - Accessibility for all visitors<\/li>\n<li><strong>Educational Content<\/strong> - Help students learn<\/li>\n<li><strong>Accessibility<\/strong> - Support visually impaired users<\/li>\n<li><strong>Podcasters<\/strong> - Quick audio versions of written content<\/li>\n<\/ul>\n\n<h4>Privacy<\/h4>\n\n<p>Your content is processed locally in the browser. Text is not sent to external servers. Voice models are downloaded once and cached locally.<\/p>\n\n<h3>Usage<\/h3>\n\n<h4>Getting Started<\/h4>\n\n<ol>\n<li>After activation, go to <strong>Settings \u2192 Speechable<\/strong> to configure your default options<\/li>\n<li>Select your preferred language and voice<\/li>\n<li>Choose which post types should have audio (posts, pages, etc.)<\/li>\n<li>Customize the player colors to match your theme<\/li>\n<\/ol>\n\n<h4>Generating Audio for a Post<\/h4>\n\n<p><strong>Method 1: Block Editor (Single Post)<\/strong><\/p>\n\n<ol>\n<li>Edit any post or page in the WordPress block editor<\/li>\n<li>Look for the <strong>\"Speechable\"<\/strong> panel in the right sidebar (under Document settings)<\/li>\n<li>Select your preferred voice and quality settings<\/li>\n<li>Click <strong>\"Generate Audio\"<\/strong> and wait for processing<\/li>\n<li>Once complete, you can preview the audio before publishing<\/li>\n<li>Publish or update your post - the audio player will appear automatically<\/li>\n<\/ol>\n\n<p><strong>Method 2: Posts List (Quick Access)<\/strong><\/p>\n\n<ol>\n<li>Go to <strong>Posts \u2192 All Posts<\/strong><\/li>\n<li>Hover over any post to see the <strong>\"Audio\"<\/strong> button in the row actions<\/li>\n<li>Click it to open the audio generation modal<\/li>\n<li>Configure settings and click <strong>\"Generate\"<\/strong><\/li>\n<li>The audio will be saved to that post<\/li>\n<\/ol>\n\n<h4>Configuring Settings<\/h4>\n\n<p><strong>Voice Settings<\/strong><\/p>\n\n<ul>\n<li><strong>Language<\/strong> - Choose from 12 supported languages<\/li>\n<li><strong>Voice<\/strong> - Select a voice for the chosen language (preview available)<\/li>\n<li><strong>Quality<\/strong> - Low (faster), Medium (balanced), or High (best sync accuracy)<\/li>\n<li><strong>Whisper Model<\/strong> - Controls word timestamp accuracy (Tiny is fastest, Small is more accurate)<\/li>\n<\/ul>\n\n<p><strong>Voice Presets<\/strong><\/p>\n\n<p>Click any preset to quickly apply pitch and reverb effects:<\/p>\n\n<ul>\n<li>Default, Warm, Bright, Radio, Narrator, Podcast, Deep, Soft, Room, Hall, Telephone, Vintage<\/li>\n<\/ul>\n\n<p><strong>Display Settings<\/strong><\/p>\n\n<ul>\n<li><strong>Post Types<\/strong> - Enable audio for posts, pages, or custom post types<\/li>\n<li><strong>Player Position<\/strong> - Show player before or after content<\/li>\n<li><strong>Word Highlighting<\/strong> - Enable\/disable word-by-word highlighting during playback<\/li>\n<li><strong>Auto-scroll<\/strong> - Automatically scroll to keep highlighted word visible<\/li>\n<\/ul>\n\n<p><strong>Player Appearance<\/strong><\/p>\n\n<ul>\n<li>Customize background, text, button, progress bar, and highlight colors<\/li>\n<li>Adjust border radius for rounded or square corners<\/li>\n<li>Live preview shows your changes instantly<\/li>\n<\/ul>\n\n<h4>Managing Audio<\/h4>\n\n<ul>\n<li><strong>Regenerate<\/strong> - Click \"Regenerate\" in the editor panel to create new audio with different settings<\/li>\n<li><strong>Delete<\/strong> - Remove audio from a post using the \"Delete\" button<\/li>\n<li><strong>Download<\/strong> - Visitors can download the audio file using the player's download button<\/li>\n<\/ul>\n\n<h4>Tips for Best Results<\/h4>\n\n<ol>\n<li><strong>Use High quality<\/strong> for important content where word sync matters<\/li>\n<li><strong>Preview voices<\/strong> in Settings before generating to find the best match<\/li>\n<li><strong>Shorter posts<\/strong> generate faster - consider breaking very long content into parts<\/li>\n<li><strong>First generation<\/strong> takes longer as voice models are downloaded and cached<\/li>\n<li><strong>Word highlighting<\/strong> works best with standard theme content areas<\/li>\n<\/ol>\n\n<h3>Credits<\/h3>\n\n<h4>Core Technologies<\/h4>\n\n<ul>\n<li><p><strong>Piper TTS<\/strong> - <a href=\"https:\/\/github.com\/rhasspy\/piper\">rhasspy\/piper<\/a> by Mike Hansen\nFast, local neural text-to-speech system (MIT License)<\/p><\/li>\n<li><p><strong>Piper TTS Web<\/strong> - <a href=\"https:\/\/github.com\/Mintplex-Labs\/piper-tts-web\">Mintplex-Labs\/piper-tts-web<\/a> v1.0.4\nBrowser-compatible Piper TTS implementation (MIT License)<\/p><\/li>\n<li><p><strong>OpenAI Whisper<\/strong> - <a href=\"https:\/\/github.com\/openai\/whisper\">openai\/whisper<\/a>\nRobust speech recognition for word-level timestamps (MIT License)<\/p><\/li>\n<li><p><strong>Transformers.js<\/strong> - <a href=\"https:\/\/github.com\/huggingface\/transformers.js\">huggingface\/transformers.js<\/a> v3.4.1\nRun Whisper models in the browser by Xenova (Apache 2.0 License)<\/p><\/li>\n<li><p><strong>ONNX Runtime Web<\/strong> - <a href=\"https:\/\/github.com\/microsoft\/onnxruntime\">microsoft\/onnxruntime<\/a>\nMachine learning inference engine (MIT License)<\/p><\/li>\n<li><p><strong>Piper WASM Phonemizer<\/strong> - <a href=\"https:\/\/github.com\/diffusionstudio\/piper-wasm\">diffusionstudio\/piper-wasm<\/a>\nWebAssembly phonemizer for text processing (MIT License)<\/p><\/li>\n<\/ul>\n\n<h4>Voice Models<\/h4>\n\n<ul>\n<li><p><strong>Piper Voices<\/strong> - <a href=\"https:\/\/huggingface.co\/diffusionstudio\/piper-voices\">diffusionstudio\/piper-voices<\/a>\nHigh-quality neural voice models hosted on Hugging Face<\/p><\/li>\n<li><p><strong>Whisper Models<\/strong> - <a href=\"https:\/\/huggingface.co\/Xenova\">Xenova on Hugging Face<\/a>\nOptimized Whisper models for browser inference (whisper-tiny.en, whisper-small)<\/p><\/li>\n<\/ul>\n\n<h4>Infrastructure<\/h4>\n\n<ul>\n<li><strong>jsDelivr CDN<\/strong> - Fast, reliable CDN for npm packages<\/li>\n<li><strong>Cloudflare CDN<\/strong> - ONNX Runtime delivery<\/li>\n<li><strong>Hugging Face<\/strong> - Model hosting and distribution<\/li>\n<\/ul>\n\n<h4>Design<\/h4>\n\n<ul>\n<li><strong>Lucide Icons<\/strong> - <a href=\"https:\/\/lucide.dev\">lucide.dev<\/a> (ISC License)\nBeautiful, consistent icon set<\/li>\n<\/ul>\n\n<h4>Development<\/h4>\n\n<ul>\n<li><strong>Developer<\/strong>: <a href=\"https:\/\/tanishmittal.com\">Tanish Mittal<\/a><\/li>\n<li><strong>Plugin Architecture<\/strong>: WordPress standards-compliant<\/li>\n<li><strong>Browser Compatibility<\/strong>: Modern ES6+ with Web Workers<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>speechable<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to Settings \u2192 Speechable to configure options<\/li>\n<li>Edit a post and use the \"Audio Generation\" panel to create audio<\/li>\n<\/ol>\n\n<h4>Minimum Requirements<\/h4>\n\n<ul>\n<li>WordPress 5.8 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>Modern browser (Chrome, Firefox, Safari, Edge)<\/li>\n<\/ul>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20an%20api%20key%3F\"><h3>Does this plugin require an API key?<\/h3><\/dt>\n<dd><p>No! Speechable uses Piper TTS which runs entirely in your browser. No API keys, no external services, no monthly fees.<\/p><\/dd>\n<dt id=\"what%20languages%20are%20supported%3F\"><h3>What languages are supported?<\/h3><\/dt>\n<dd><p>Speechable supports 12 languages: English (US &amp; UK), German, French, Spanish, Italian, Portuguese, Dutch, Polish, Russian, Chinese, Japanese, and Korean.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20website%3F\"><h3>Will this slow down my website?<\/h3><\/dt>\n<dd><p>No. The TTS processing happens in the browser when generating audio in the admin. The frontend player is lightweight and only loads on posts with audio.<\/p><\/dd>\n<dt id=\"can%20visitors%20download%20the%20audio%3F\"><h3>Can visitors download the audio?<\/h3><\/dt>\n<dd><p>Yes! There's a download button on the player that lets visitors save the audio file.<\/p><\/dd>\n<dt id=\"does%20word%20highlighting%20work%20on%20all%20themes%3F\"><h3>Does word highlighting work on all themes?<\/h3><\/dt>\n<dd><p>Word highlighting works with most themes. It automatically detects your content area and highlights words as they're spoken.<\/p><\/dd>\n<dt id=\"is%20the%20audio%20stored%20on%20my%20server%3F\"><h3>Is the audio stored on my server?<\/h3><\/dt>\n<dd><p>Yes, the generated audio is stored as post meta data. This ensures fast playback without regenerating audio each time.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20player%20appearance%3F\"><h3>Can I customize the player appearance?<\/h3><\/dt>\n<dd><p>Yes! You can customize colors for the background, buttons, progress bar, text, and word highlighting. You can also adjust the border radius.<\/p><\/dd>\n<dt id=\"is%20speechable%20compatible%20with%20wp%20rocket%3F\"><h3>Is Speechable compatible with WP Rocket?<\/h3><\/dt>\n<dd><p>Yes! Speechable automatically excludes its JavaScript from WP Rocket's minification, concatenation, and delay JS features to ensure the player works correctly.<\/p><\/dd>\n<dt id=\"does%20speechable%20work%20with%20elementor%3F\"><h3>Does Speechable work with Elementor?<\/h3><\/dt>\n<dd><p>Yes! Speechable is fully compatible with Elementor and other page builders like Beaver Builder, Divi, WPBakery, Bricks, and Oxygen. The player automatically reinitializes when content is loaded dynamically.<\/p><\/dd>\n<dt id=\"does%20speechable%20work%20with%20caching%20plugins%3F\"><h3>Does Speechable work with caching plugins?<\/h3><\/dt>\n<dd><p>Yes! Speechable is compatible with WP Rocket, LiteSpeed Cache, W3 Total Cache, Autoptimize, and SG Optimizer. The plugin automatically configures the necessary exclusions.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added compatibility with WP Rocket (JS exclusions from minification\/delay)<\/li>\n<li>Added compatibility with LiteSpeed Cache, W3 Total Cache, Autoptimize, SG Optimizer<\/li>\n<li>Added compatibility with Elementor, Beaver Builder, Divi, WPBakery, Bricks, Oxygen<\/li>\n<li>Player now auto-reinitializes on dynamic content load (AJAX)<\/li>\n<li>Added MutationObserver for detecting dynamically added players<\/li>\n<li>Added AJAX endpoint for loading player HTML dynamically<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added \"How to Use\" section in settings page<\/li>\n<li>Added Custom preset for manual pitch\/reverb adjustments<\/li>\n<li>Fixed preset selection persistence after save<\/li>\n<li>Updated documentation<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>AI-powered text-to-speech with Piper TTS<\/li>\n<li>12 language support with multiple voices<\/li>\n<li>Word highlighting during playback<\/li>\n<li>Customizable audio player<\/li>\n<li>Voice effect presets<\/li>\n<li>Audio download functionality<\/li>\n<li>Block editor integration<\/li>\n<\/ul>","raw_excerpt":"Convert your WordPress posts to audio with AI-powered text-to-speech. Works in the browser with word highlighting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/273044","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=273044"}],"author":[{"embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/glowdopera"}],"wp:attachment":[{"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=273044"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=273044"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=273044"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=273044"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=273044"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=273044"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}