Accessibility Compliance - Content Management
Accessibility Compliance
Compliance Requirements Matrix
| Regulation | Scope | Requirement | Deadline |
|---|---|---|---|
| ADA Title II | US state/local government | WCAG 2.1 AA | Apr 2026 (50k+ pop), Apr 2027 (<50k) |
| Section 508 | US federal agencies | WCAG 2.1 AA | Ongoing |
| WCAG 2.1 AA | Web content | 1.2.2 (pre-recorded captions), 1.2.4 (live captions) | Standard |
| EAA | EU audiovisual services | Accessible multimedia | June 2025 |
| CVAA/FCC | US broadcast + online video | Closed captions on distributed content | Ongoing |
Caption Quality Standards
FCC caption quality requirements:
- Accuracy: Captions must match spoken words and non-speech sounds
- Synchronicity: Captions must coincide with dialogue and sounds
- Completeness: Captions must cover the entirety of the program
- Placement: Captions must not obscure visual content
Machine vs Human Accuracy
- Machine (REACH ASR): ~83-87% accuracy. Use as a starting point, then upgrade to human captions for full ADA/Section 508 compliance.
- Human (REACH professional): 99%+ accuracy. Meets ADA, Section 508, WCAG 2.1 AA, and FCC requirements.
Best practice: Auto-caption with machine ASR for immediate availability, then upgrade to human captions for compliance.
Audio Description via REACH
For visually impaired users, REACH supports audio description:
- serviceFeature:
4(AUDIO_DESCRIPTION) — standard - serviceFeature:
9(EXTENDED_AUDIO_DESCRIPTION) — extended pauses - Set
usage=1(EXTENDED_AUDIO_DESCRIPTION) on the CaptionAsset
Accessibility Audit Pattern
Bulk-check caption coverage across a library:
# Step 1: List all entries
curl -X POST "$KALTURA_SERVICE_URL/service/media/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[objectType]=KalturaMediaEntryFilter" \
-d "filter[statusEqual]=2" \
-d "filter[mediaTypeEqual]=1" \
-d "pager[pageSize]=500"
# Step 2: For each entry, check caption assets
curl -X POST "$KALTURA_SERVICE_URL/service/caption_captionAsset/action/list" \
-d "ks=$KALTURA_KS" \
-d "format=1" \
-d "filter[objectType]=KalturaAssetFilter" \
-d "filter[entryIdEqual]=$KALTURA_ENTRY_ID" \
-d "filter[statusEqual]=2"
# Step 3: Flag entries with totalCount=0 as needing captions
# Step 4: Order REACH tasks for uncaptioned entries