{"id":398824,"date":"2026-11-13T19:45:52","date_gmt":"2026-11-13T19:45:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/describewright-ai-audio-description-for-accessible-video\/"},"modified":"2026-11-13T19:45:22","modified_gmt":"2026-11-13T19:45:22","slug":"describewright","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/describewright\/","author":23589964,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.13","stable_tag":"1.0.13","tested":"7.1.4","requires":"7.0","requires_php":"7.4","requires_plugins":null,"header_name":"Describewright \u2013 AI Audio Description for Accessible Video","header_author":"Karelia Labs","header_description":"Write audio descriptions for your WordPress videos with AI: it looks at the video, finds the pauses in the speech and describes what viewers who cannot see the screen would miss. Review and edit, then publish as a descriptions track with an audio-description button in the player.","last_updated":"2026-11-13 19:45:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/karelialabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":75,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.13":{"tag":"1.0.13","author":"karelialabs","date":"2026-11-13 19:45:22","revision":3801086}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3801086,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3801086,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3801086,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3801086,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3801086,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"describewright\/described-transcript":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"describewright\/described-transcript","version":"1.0.0","title":"Described transcript","category":"media","icon":"visibility","description":"Shows a video's speech and its audio descriptions as text, in time order. Click a time to jump the player there.","keywords":["audio description","accessibility","transcript","wcag"],"textdomain":"describewright","attributes":{"attachmentId":{"type":"number","default":0},"lang":{"type":"string","default":""},"collapsed":{"type":"boolean","default":true},"showTimes":{"type":"boolean","default":true}},"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true},"typography":{"fontSize":true},"color":{"background":true,"text":true}},"editorScript":"file:.\/index.js","style":"describewright-transcript","viewScript":"describewright-transcript-view","render":"file:.\/render.php"}},"tagged_versions":["1.0.13"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3801086,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3801086,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3801086,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3801086,"resolution":"4","location":"assets","locale":"","width":1280,"height":900}},"screenshots":{"1":"The editor: each description with the frame it describes, its times and its word budget, next to the playing video.","2":"Media \u2192 Audio description: every video with its description languages.","3":"The Audio description button under a video, and the described transcript.","4":"Settings: the style of the descriptions and how the player reads them."}},"plugin_section":[],"plugin_tags":[1953,2682,292639,222,1956],"plugin_category":[34,50],"plugin_contributors":[288387],"plugin_business_model":[],"class_list":["post-398824","plugin","type-plugin","status-publish","hentry","plugin_tags-accessibility","plugin_tags-ada","plugin_tags-audio-description","plugin_tags-video","plugin_tags-wcag","plugin_category-accessibility","plugin_category-media","plugin_contributors-karelialabs","plugin_committers-karelialabs"],"banners":{"banner":"https:\/\/ps.w.org\/describewright\/assets\/banner-772x250.png?rev=3801086","banner_2x":"https:\/\/ps.w.org\/describewright\/assets\/banner-1544x500.png?rev=3801086","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/describewright\/assets\/icon.svg?rev=3801086","icon":"https:\/\/ps.w.org\/describewright\/assets\/icon.svg?rev=3801086","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/describewright\/assets\/screenshot-1.png?rev=3801086","caption":"The editor: each description with the frame it describes, its times and its word budget, next to the playing video."},{"src":"https:\/\/ps.w.org\/describewright\/assets\/screenshot-2.png?rev=3801086","caption":"Media \u2192 Audio description: every video with its description languages."},{"src":"https:\/\/ps.w.org\/describewright\/assets\/screenshot-3.png?rev=3801086","caption":"The Audio description button under a video, and the described transcript."},{"src":"https:\/\/ps.w.org\/describewright\/assets\/screenshot-4.png?rev=3801086","caption":"Settings: the style of the descriptions and how the player reads them."}],"raw_content":"<!--section=description-->\n<p><strong>Audio description for every WordPress video, written by AI and checked by you.<\/strong><\/p>\n\n<p>Blind and low-vision viewers hear what is said in a video, but not what is shown: the slide with the new opening hours, the name under the speaker, the map, the chart, the person who walks in. Audio description fills that gap with short spoken descriptions in the pauses of the speech. WCAG 2.1 requires it for prerecorded video at Level AA (success criterion 1.2.5).<\/p>\n\n<p>Describewright writes those descriptions for you:<\/p>\n\n<ol>\n<li>Open <strong>Media \u2192 Audio description<\/strong> and click <strong>Describe<\/strong> next to a video.<\/li>\n<li>Describewright finds the pauses in the speech, spots the scene changes and picks still frames.<\/li>\n<li>An AI model that can see images writes one description per pause, sized to fit it, including the on-screen text.<\/li>\n<li>You check each description next to the playing video, change what you like, and save.<\/li>\n<li>Your videos get an <strong>Audio description<\/strong> button. Viewers turn it on and hear each description at the right moment, and screen-reader users get it announced.<\/li>\n<\/ol>\n\n<h4>Why now<\/h4>\n\n<p>Audio description is part of WCAG 2.1 Level AA, the standard behind:<\/p>\n\n<ul>\n<li><strong>ADA Title II<\/strong> (US): state and local governments, public schools, colleges and universities must meet WCAG 2.1 AA on their websites from <strong>April 26, 2027<\/strong> (50,000 residents or more) and <strong>April 26, 2028<\/strong> (smaller entities and special districts).<\/li>\n<li><strong>The European Accessibility Act<\/strong>, which has applied across the EU since June 28, 2025, and the EU Web Accessibility Directive for public-sector websites (both through EN 301 549).<\/li>\n<li><strong>Section 508<\/strong> for US federal agencies (WCAG 2.0 AA, which includes the same success criterion).<\/li>\n<\/ul>\n\n<p>Captions alone do not meet 1.2.5. Professional audio description is usually priced per minute of video. Describewright uses the AI provider you set up in WordPress, so you pay that provider directly, with no per-minute fee from us.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Finds the pauses<\/strong> in the speech by listening to the sound track, or uses your captions when you have them from <a href=\"https:\/\/wordpress.org\/plugins\/captionwright\/\">Captionwright<\/a>.<\/li>\n<li><strong>Sees the video<\/strong>: detects scene changes and sends still frames from the right moments to the AI.<\/li>\n<li><strong>Fits the pause<\/strong>: each description gets a word budget from the length of its pause, and the editor warns when one is too long.<\/li>\n<li><strong>Reads on-screen text<\/strong> word for word: titles, names, slides, signs and numbers.<\/li>\n<li><strong>Notes for the AI<\/strong>: tell it the names and context once (\"Mayor Ana Ruiz speaks at the podium\") and it uses them.<\/li>\n<li><strong>Editor with frames<\/strong>: every description shows the frame it describes, with editable start and end times and a live read-aloud preview.<\/li>\n<li><strong>Audio description button<\/strong> in the core Video block and the <code>[video]<\/code> shortcode, with a language picker when you have several languages, keyboard and screen-reader friendly.<\/li>\n<li><strong>Description text under the video<\/strong>: while a description is read, it also appears as text below the player for viewers who follow along by sight. You can turn this off.<\/li>\n<li><strong>Described transcript<\/strong> block and <code>[describewright_transcript id=\"123\"]<\/code> shortcode: the speech and the descriptions as text, in time order (WCAG 1.2.3 and 1.2.8). Click a time to jump the video there.<\/li>\n<li><strong>Standard WebVTT<\/strong> description files (<code>kind=\"descriptions\"<\/code>) in your uploads folder. They are yours to keep.<\/li>\n<li><strong>Built on WordPress AI<\/strong>: Describewright uses the AI provider you set up once under Settings \u2192 Connectors (WordPress 7.0+). It has no API key or AI settings of its own.<\/li>\n<\/ul>\n\n<h4>Who it is for<\/h4>\n\n<p>Cities, counties and public agencies that publish council meetings and announcements; schools, colleges and universities with lecture and campus videos; course creators and membership sites; museums, libraries and nonprofits; and agencies that look after accessibility for their clients.<\/p>\n\n<h4>Describewright Pro<\/h4>\n\n<ul>\n<li><strong>The whole library in one queue<\/strong>: describe every video without audio description, with a list of videos to retry if one fails.<\/li>\n<li><strong>Extended audio description<\/strong>: the player waits while a long description is read, so nothing important has to be left out.<\/li>\n<li><strong>Translate descriptions into 30 languages<\/strong> with the same timing; viewers pick the language next to the button.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>Describewright does not connect to any AI service itself. It asks WordPress' AI client (WordPress 7.0+), which sends the request to the AI provider you set up under Settings \u2192 Connectors, with the API key you entered there. This happens only when you start one of the actions below, and nothing is sent to Karelia Labs.<\/p>\n\n<ul>\n<li><strong>Create audio description<\/strong> sends still frames from the video (JPEG, up to 512 pixels wide, each labelled with its time), the video's title, your notes for that video, the pauses (start and end times and a word limit), the language and style you chose, up to four descriptions written earlier in the same video (so the AI does not repeat them) and, if Captionwright has captions for the video, the words spoken in and around that part of the video, with their times.<\/li>\n<li><strong>Test the connection<\/strong> sends one built-in 32\u00d732 red test image and a fixed question. Nothing from your site.<\/li>\n<\/ul>\n\n<p>The provider you choose in Connectors handles the data under its own terms and privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Describewright.<\/li>\n<li>Set up an AI provider under <strong>Settings \u2192 Connectors<\/strong> (WordPress AI), for example Anthropic, Google or OpenAI, and add its API key there. Its models must be able to look at images.<\/li>\n<li>Go to <strong>Media \u2192 Audio description \u2192 Settings<\/strong> and click <strong>Test the connection<\/strong>.<\/li>\n<li>Click <strong>Describe<\/strong> next to a video, then <strong>Create audio description<\/strong>. Check the descriptions and save.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20ai-written%20audio%20description%20good%20enough%20for%20wcag%3F\"><h3>Is AI-written audio description good enough for WCAG?<\/h3><\/dt>\n<dd><p>It gives you a complete first draft in minutes, but no automatic description is perfect. WCAG asks for descriptions that convey the important visual information, so read every description next to the video before you save. The editor is built for that check.<\/p><\/dd>\n<dt id=\"what%20does%20it%20cost%3F\"><h3>What does it cost?<\/h3><\/dt>\n<dd><p>The plugin is free. You pay your AI provider for what you use. A video is sent as still frames, not as video, so a low-cost vision model is enough. Our estimate from the published prices in October 2026: a few cents for a 10-minute video with a low-cost vision model. Your provider's bill is what counts.<\/p><\/dd>\n<dt id=\"which%20ai%20provider%20and%20model%20does%20it%20use%3F\"><h3>Which AI provider and model does it use?<\/h3><\/dt>\n<dd><p>The one you set up under Settings \u2192 Connectors. Describewright sends its frames as images, and WordPress picks a model of that provider that can look at images. <strong>Test the connection<\/strong> checks that the provider answers and really sees the test image.<\/p><\/dd>\n<dt id=\"do%20i%20need%20wordpress%207.0%3F\"><h3>Do I need WordPress 7.0?<\/h3><\/dt>\n<dd><p>Yes. Describewright uses WordPress AI, the AI client that comes with WordPress 7.0 and later.<\/p><\/dd>\n<dt id=\"it%20says%20the%20sound%20of%20the%20video%20could%20not%20be%20analysed.\"><h3>It says the sound of the video could not be analysed.<\/h3><\/dt>\n<dd><p>Describewright listens to the sound track to find the pauses in the speech. If the browser cannot decode that sound, it stops instead of guessing, because a guess could put descriptions on top of speech. Add captions with Captionwright (then the captions give the pauses), try another browser, or, for a video without speech, click \"Describe without speech timing\". A video with no sound track at all is described without asking.<\/p><\/dd>\n<dt id=\"my%20video%20has%20no%20pauses.\"><h3>My video has no pauses.<\/h3><\/dt>\n<dd><p>Lower \"Shortest pause\" in the settings. If the speech never stops, there is no gap for a spoken description to fit in. Describewright Pro can pause the video while a long description is read.<\/p><\/dd>\n<dt id=\"do%20visitors%20need%20a%20special%20browser%3F\"><h3>Do visitors need a special browser?<\/h3><\/dt>\n<dd><p>No. The button reads the descriptions with the browser's built-in voice and also announces them to screen readers. You can choose to only announce them to screen readers in the settings.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20captions%3F\"><h3>Does it work with captions?<\/h3><\/dt>\n<dd><p>Yes. Describewright works on its own, and with <a href=\"https:\/\/wordpress.org\/plugins\/captionwright\/\">Captionwright<\/a> it uses your captions to find the pauses more precisely and to tell the AI what is said.<\/p><\/dd>\n<dt id=\"where%20are%20the%20description%20files%20stored%3F\"><h3>Where are the description files stored?<\/h3><\/dt>\n<dd><p>In <code>wp-content\/uploads\/describewright\/<\/code>, one <code>.vtt<\/code> file per video and language. Deleting the plugin removes them, its settings and its records. Your videos are never changed.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.13<\/h4>\n\n<ul>\n<li>Describewright now works only through WordPress AI: the provider you set up under Settings \u2192 Connectors. The plugin's own AI service settings and API key field are gone, so a provider and its key are set up once for all of WordPress. Requires WordPress 7.0 or later.<\/li>\n<\/ul>\n\n<h4>1.0.12 and earlier<\/h4>\n\n<ul>\n<li>Versions 1.0.0 to 1.0.12 were released outside WordPress.org. Their features (pause and scene detection, the editor with frames and word budgets, the Audio description button, the described transcript block and WebVTT files) and their fixes are all in 1.0.13.<\/li>\n<\/ul>","raw_excerpt":"AI audio description for your videos: describes what is on screen in the pauses of the speech and adds an AD button to the player. WCAG 1.2.5.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/398824","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=398824"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/karelialabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=398824"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=398824"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=398824"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=398824"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=398824"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=398824"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}