Repository navigation
Add opt-in audio description for videos - #39
Open
bluebird42 wants to merge 2 commits into
Open
bluebird42 wants to merge 2 commits into
bluebird42 wants to merge 2 commits into
Conversation
Spaces can turn on audio description. New uploads then get, in English and Dutch, a full-mix MP3 of the video's audio with spoken descriptions of what is on screen, and a descriptions WebVTT. Descriptions play in the pauses of the speech, or over it with the original audio ducked to 20%, and stay with the scene they describe. Five optional background flow steps detect scenes, describe the video with labelled stills, translate, speak and mix. They skip themselves unless the run asks for audio description, and publication never waits for them. The MP3 is published as an HLS alternate audio rendition marked describes-video and listed under a new audio_descriptions manifest key. Hosts decide who may use it through the optional UsageLimits.can_use_audio_description?/1 callback.
bluebird42
force-pushed
the
audio-description
branch
from
November 1, 2026 15:48
71cb150 to
13cccf2
Compare
Generate descriptions in the source language with a configurable fallback. Add file menus for uploading, replacing, downloading and removing tracks. Preserve manually managed descriptions when background work completes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Spaces can turn on audio description (Settings → Features). Every new upload or reprocessing run of a video up to 10 minutes then gets, in English and Dutch:
audio_description_<lang>.mp3: a full mix of the video's own audio with spoken descriptions of what happens on screen. It is also published as an HLS alternate audio rendition withCHARACTERISTICS="public.accessibility.describes-video", so players can switch to it.descriptions_<lang>.vtt: a WebVTT withKind: descriptions, containing exactly the spoken descriptions, timed to when they are spoken.How descriptions are placed
scdetand grouped into scenes of at least 3 s. A description starts while its scene is on screen and at least half of it is spoken during the scene.Flow steps
Five optional background steps in all publishing presets:
media.detect_scenes(FLAME),ai.describe_video,ai.translate_descriptions,ai.speak_descriptionsandmedia.mix_audio_description(FLAME).audio_description, so other spaces pay nothing.unavailable.Contracts
spaces.audio_description_enabledand anaudio_descriptionstable (one row per video version and language).manifest.json: a newaudio_descriptionskey (omitted when empty). The existingaudio_tracksandsubtitlesare unchanged, so current players are unaffected.audio_descriptionslist.UsageLimits.can_use_audio_description?/1callback decides who may turn the feature on. Without a policy, every space may. Turning it off is always allowed. The check is repeated per run.Providers
Scaleway Generative APIs (Gemma 4) describe and translate, and Mistral (Voxtral) speaks, both in the EU.
SCALEWAY_API_KEY.MISTRAL_API_KEYis reused.MAVE_AUDIO_DESCRIPTION_*(model, voices per language, max length).docs/audio_description.md.Tests
CHARACTERISTICSline and the manifest key.mix credo --strictandmix securityare clean.mainas well: two analytics tests, and a WebP poster test because that ffmpeg has nolibwebp.