# Tutorial — Captions UI
*Augmented Traveler local tutorial.* Back to [[Unreal — Tutorials]] · monologue captions: [[Tutorial — Sequencer for Monologues]] · live answers: [[Tutorial — Conversation Client Plugin]]
How we show **captions** for everything the figure says:
- **authored monologues:** timed text we know in advance;
- **live answers:** text that arrives as it is generated.
Captions are **on by default**. Museums, schools and the ADA expect it, and many visitors are in noisy rooms.
> **Draft.** Test with the UX and accessibility designer and with deaf and hard-of-hearing visitors before opening.
## 1. Standards we follow
| Source | What we take |
|---|---|
| **WCAG 2.2** | Captions for recorded media (SC 1.2.2, Level A) and for live media (SC 1.2.4, Level AA) |
| **FCC caption quality** (47 CFR 79.1) | Four tests: **accurate, synchronous, complete, well-placed** (never covering faces) |
| **DCMP Captioning Key** | At most 2 lines; each caption on screen 1.33–6 s; white medium sans-serif with a shadow on a translucent box; mixed case; bottom placement; reading speed 130–160 words per minute by audience |
| **BBC subtitle guidelines** (secondary summary) | 2 lines; line length up to about 68% of a 16:9 width; 160–180 words per minute |
| **Smithsonian Guidelines for Accessible Exhibition Design** | Open (always-on) captions preferred; 70% contrast; sans-serif or simple serif |
| **Meta VR accessibility guidance** | In XR: about 1 m away (or half the far-field distance) or head-locked; top or bottom of the central 40°; up to 32 characters per row, 2 rows; text scale 50–200%; background box |
| **W3C XR Accessibility User Requirements** | Support captions, and let them be customised |
## 2. Our style
| Setting | Kiosk (life-size display) | Headsets | Phones / web |
|---|---|---|---|
| Position | Bottom third, beside the figure, **not over the face or hands** | About 1 m in front, lower field, gently follows the head | Bottom, above the controls |
| Lines | 2 max | 2 max, 32 characters per row | 2 max |
| Font | Clear sans-serif (the studio caption font), medium weight | Same, larger | Same |
| Size | Readable from 2.5 m (test on the actual screen) | Adjustable 50–200% | System text size respected |
| Colour | White or near-white on a 70–80% dark translucent box | Same | Same |
| Speaker label | "Maria Mitchell:" on the first caption of each turn; "You asked:" for the visitor's question | Same | Same |
| Sound cues | [lamp hisses], [telescope creaks] only when meaningful | Same | Same |
**Period spelling:** caption text follows the **historian-approved script** exactly, including period words. Don't modernise.
## 3. Authored monologues: the Subtitles and Closed Captions plugin
1. Enable **Subtitles and Closed Captions** (Beta in 5.8).
2. Make a **Subtitle Asset** per monologue (`SUB_<Figure>_Monologue_<NN>`). Import the timed script as **SRT**, or type the entries (start offset and duration).
3. Add the **subtitle track** to the Level Sequence ([[Tutorial — Sequencer for Monologues]]), so captions stay locked to the audio.
4. **Style** the plugin's display widget (a UMG TextBlock set in Project Settings) to match section 2.
- 5.8 supports per-platform display overrides; use one for headsets.
5. **Check timing** against the audio.
- No caption under 1.33 s or over 6 s.
- Split long sentences at natural phrase breaks, never mid-name.
## 4. Live answers: `WBP_AT_Captions`
The conversation service sends **caption chunks** with timing ([[Tutorial — Conversation Client Plugin]]). They go to a UMG widget:
1. `WBP_AT_Captions` has a container with up to **two lines**, a **speaker label** and a dark translucent background.
2. **Reveal text in phrases, in time with the audio.** Don't show it word by word, which is tiring to read, and don't show it before it is spoken.
3. When the next phrase doesn't fit, **roll up** (the old line slides up and fades out over about 0.5 s).
4. **The visitor's question** shows briefly ("You asked: …") when the transcript arrives, then clears when the answer starts.
5. **Refusals and redirects** are captioned like any other line.
6. **In XR:** render the widget in a **Widget Component** or an OpenXR stereo layer placed per section 2. Stereo layers can draw behind the scene in 5.8, which keeps captions crisp ([[Tutorial — OpenXR Headset Builds]]).
## 5. Settings for visitors
A small accessibility menu (kiosk corner button; headset wrist menu):
- captions **on/off** (default on);
- **text size** (3 steps);
- **background opacity**;
- the language, if translations exist later.
Remember the choice for the session only; reset it for the next visitor.
## 6. Check before opening
- [ ] Every monologue captioned word-for-word; timing checked
- [ ] Live answers caption in sync with speech; no text before it is spoken
- [ ] Never covers the face or hands at kiosk distance or in the headset
- [ ] Readable at 2.5 m on the kiosk screen and in the headset (test with visitors)
- [ ] Accessibility designer sign-off; notes from deaf and hard-of-hearing testers recorded
## Sources
- W3C, WCAG 2.2 Understanding SC 1.2.2: https://www.w3.org/WAI/WCAG22/Understanding/captions-prerecorded.html
- eCFR, 47 CFR 79.1 (caption quality): https://www.ecfr.gov/current/title-47/chapter-I/subchapter-C/part-79/subpart-A/section-79.1
- DCMP Captioning Key (presentation rate; appearance): https://dcmp.org/learn/captioningkey/601 · https://dcmp.org/learn/captioningkey/597
- BBC subtitle guidelines summary (Clevercast): https://www.clevercast.com/bbc-subtitling-guidelines/ · original: https://www.bbc.co.uk/accessibility/forproducts/guides/subtitles/
- Smithsonian Guidelines for Accessible Exhibition Design (PDF): https://www.thc.texas.gov/public/upload/publications/Smithsonian%20Guidelines%20for%20accessible%20design.pdf
- Meta, VR accessibility design: https://developers.meta.com/horizon/design/accessibility/
- Meta, VRC.Quest.Accessibility.1: https://developers.meta.com/horizon/resources/vrc-quest-accessibility-1/
- W3C, XR Accessibility User Requirements: https://www.w3.org/TR/xaur/
- Epic, Subtitles and Closed Captions plugin: https://dev.epicgames.com/documentation/unreal-engine/subtitles-and-closed-captions-plugin-in-unreal-engine
- Epic, UE 5.8 release notes: https://dev.epicgames.com/documentation/unreal-engine/unreal-engine-5-8-release-notes
- Full list: [[Sources — 2026-09-20]]