{"id":372048,"date":"2026-10-12T11:39:17","date_gmt":"2026-10-12T11:39:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ost-read-aloud\/"},"modified":"2026-10-12T14:03:11","modified_gmt":"2026-10-12T14:03:11","slug":"ost-read-aloud","status":"publish","type":"plugin","link":"https:\/\/kaa.wordpress.org\/plugins\/ost-read-aloud\/","author":10165665,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"OST Read Aloud","header_author":"OpenSource Technologies","header_description":"Turn posts into natural-sounding audio with Google Cloud Text-to-Speech and highlight each word on the page as it is read. Set everything up from Settings \u2192 Text to Speech.","assets_banners_color":"1f3075","last_updated":"2026-10-12 14:03:11","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/ost.agency\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"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":"opensourcetech","date":"2026-10-12 14:03:11","revision":3741821}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3741821,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3741821,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3741821,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3741821,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3741821,"resolution":"1","location":"assets","locale":"","width":1536,"height":674},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3741821,"resolution":"2","location":"assets","locale":"","width":1536,"height":674},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3741821,"resolution":"3","location":"assets","locale":"","width":1536,"height":674},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3741821,"resolution":"4","location":"assets","locale":"","width":1536,"height":674}},"screenshots":{"1":"The player sits above the post. While the audio plays, the word being read is highlighted along with its paragraph, and the page scrolls gently to follow.","2":"Generate audio from the post editor. The panel shows how many characters will be sent, and marks the audio out of date when the post changes.","3":"Choose the language, voice, speaking rate, pitch and audio format. Only voices that can return word timings are listed, because those are the ones that can highlight.","4":"Decide where the player appears, what it is called, which colours mark the current word and paragraph, and whether the page follows the reading."}},"plugin_section":[],"plugin_tags":[1953,452,16722,1449,4013],"plugin_category":[34,50],"plugin_contributors":[84404],"plugin_business_model":[],"class_list":["post-372048","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-opensourcetech","plugin_committers-opensourcetech"],"banners":{"banner":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/banner-772x250.png?rev=3741821","banner_2x":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/banner-1544x500.png?rev=3741821","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/icon-128x128.png?rev=3741821","icon_2x":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/icon-256x256.png?rev=3741821","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/screenshot-1.jpg?rev=3741821","caption":"The player sits above the post. While the audio plays, the word being read is highlighted along with its paragraph, and the page scrolls gently to follow."},{"src":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/screenshot-2.jpg?rev=3741821","caption":"Generate audio from the post editor. The panel shows how many characters will be sent, and marks the audio out of date when the post changes."},{"src":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/screenshot-3.jpg?rev=3741821","caption":"Choose the language, voice, speaking rate, pitch and audio format. Only voices that can return word timings are listed, because those are the ones that can highlight."},{"src":"https:\/\/ps.w.org\/ost-read-aloud\/assets\/screenshot-4.jpg?rev=3741821","caption":"Decide where the player appears, what it is called, which colours mark the current word and paragraph, and whether the page follows the reading."}],"raw_content":"<!--section=description-->\n<p>OST Read Aloud adds a \"Listen to this article\" player to your posts. The audio is made once with Google Cloud Text-to-Speech and saved in your media uploads folder, so visitors never call Google and you are only charged when you generate audio.<\/p>\n\n<p>While the audio plays, the word being read is highlighted, along with its paragraph, and the page scrolls gently to follow along.<\/p>\n\n<p>Everything is set up from <strong>Settings \u2192 Text to Speech<\/strong>. No code changes are needed.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Connect with a Google API key or a service account JSON key.<\/li>\n<li>\"Test connection\" and \"Preview voice\" buttons on the settings page.<\/li>\n<li>Choose language, voice, speed, pitch and audio format (MP3 or WAV).<\/li>\n<li>Choose which post types get audio, and whether the title is read first.<\/li>\n<li>Generate audio from a panel in the block editor or a box in the classic editor, or automatically when a post is published or updated.<\/li>\n<li>Long posts are split into small parts and made one part at a time, so there are no timeouts.<\/li>\n<li>Word and paragraph highlighting that keeps your links and formatting intact.<\/li>\n<li>Player above or below the post, or anywhere with the <code>[ost_tts_player]<\/code> shortcode.<\/li>\n<li>Sticky player while listening, custom highlight colours, auto-scroll that pauses when the visitor scrolls.<\/li>\n<li>Add the class <code>ost-tts-skip<\/code> to any block (Advanced \u2192 Additional CSS class) to leave it out of the audio.<\/li>\n<\/ul>\n\n<h4>External service<\/h4>\n\n<p>This plugin sends post text to the Google Cloud Text-to-Speech API (texttospeech.googleapis.com) when an editor or administrator generates audio or a voice preview, or when automatic generation is turned on and a post is published or updated. When a service account is used, a sign-in token is requested from oauth2.googleapis.com. No data is sent to Google when visitors view or play audio.<\/p>\n\n<p>Google charges per character after the free monthly allowance. See the <a href=\"https:\/\/cloud.google.com\/text-to-speech\/pricing\">Google Cloud Text-to-Speech pricing<\/a> and the <a href=\"https:\/\/cloud.google.com\/terms\">Google Cloud terms<\/a> and <a href=\"https:\/\/policies.google.com\/privacy\">Google privacy policy<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload and activate the plugin.<\/li>\n<li>In Google Cloud, enable the <strong>Cloud Text-to-Speech API<\/strong> and create an API key (restrict it to that API) or a service account key.<\/li>\n<li>Go to <strong>Settings \u2192 Text to Speech<\/strong>, paste the key, save, and click <strong>Test connection<\/strong>.<\/li>\n<li>Pick a voice on the <strong>Voice<\/strong> tab and click <strong>Preview voice<\/strong>.<\/li>\n<li>Open a post, find the <strong>Text to Speech<\/strong> panel in the editor sidebar and click <strong>Generate audio<\/strong>.<\/li>\n<\/ol>\n\n<p>Sites that prefer to keep the key out of the database can add <code>define( 'OST_TTS_API_KEY', 'your-key' );<\/code> to wp-config.php.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20voices%20can%20highlight%20words%3F\"><h3>Which voices can highlight words?<\/h3><\/dt>\n<dd><p>Word highlighting needs word timings (SSML marks). Voice families that do not return them, such as Chirp HD, Journey and Studio, are not listed. If a voice returns no timings, the audio still works and highlighting stays off.<\/p><\/dd>\n<dt id=\"i%20changed%20the%20post.%20do%20i%20need%20to%20generate%20again%3F\"><h3>I changed the post. Do I need to generate again?<\/h3><\/dt>\n<dd><p>Yes. The editor panel shows \"out of date\" when the post text or voice settings no longer match the audio. With automatic generation turned on, this happens in the background. If the page text and the audio do not match, the audio still plays but highlighting is switched off until you regenerate.<\/p><\/dd>\n<dt id=\"where%20are%20the%20audio%20files%20stored%3F\"><h3>Where are the audio files stored?<\/h3><\/dt>\n<dd><p>In <code>wp-content\/uploads\/ost-tts\/<\/code>. Files are removed when you delete the audio or delete the post.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>Settings and audio are kept, unless you tick \"delete all generated audio files and settings\" on the Advanced tab first.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Turn posts into audio with Google Cloud Text-to-Speech and highlight each word on the page as it is read.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/372048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=372048"}],"author":[{"embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/opensourcetech"}],"wp:attachment":[{"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=372048"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=372048"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=372048"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=372048"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=372048"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kaa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=372048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}