Applies to: Protocol and format interpretation for developers inspecting authorized media delivery.
The useful distinctions
- WebVTT cue text includes voice and language spans.
- A voice annotation can identify a speaker by label.
- Ruby text uses ruby and rt cue markup.
Separate annotations from visible words
The invented cue labels the voice as Guide, identifies the Japanese span, and supplies a ruby reading for one word. A text extraction routine should decide explicitly whether it wants the base characters, the reading, the speaker label, or an annotated representation. Stripping angle-bracket substrings with a regular expression cannot express those choices reliably. It may also lose useful distinctions needed by an editor comparing language tracks.
Preserve the small vocabulary
Cue text resembles HTML in places, but accepting arbitrary web elements would exceed the subtitle grammar. Keep the permitted cue tags and their annotations rather than passing the payload through a general HTML editor that rewrites it unpredictably. The voice label is editorial metadata; it does not create an audio track or establish the speaker's identity from the recording. Similarly, the language annotation describes the enclosed text rather than translating it. If a conversion target cannot carry ruby, document whether the reading is appended, substituted, or retained in separate metadata. That is an explicit conversion decision, and different choices produce different text. The example is a syntax fixture, not a claim that every subtitle renderer displays every annotation identically.
Worked example · synthetic
Guide is a voice annotation; ja labels the Japanese span. 青 is the ruby base and あお its reading. These annotations are distinct from media-track selection or an assertion about an actual speaker.
Synthetic text example; no network operation has been performed.
WEBVTT
00:00:01.000 --> 00:00:04.000
<v Guide><lang ja><ruby>青<rt>あお</rt></ruby>い紙です。</lang></v>
Check the interpretation
- Parse with the WebVTT cue-text grammar.
- Keep the ruby base and reading distinct in exports.
- Document any deliberate loss of annotations during conversion.