Skip to content

[css-speech-1] defaults for phrasing elements and voice-character #13808

@paceaux

Description

@paceaux

First I want to share how excited I am that there's a CSS Speech module. Considering that language originates in the verbal form and that most writing systems are based on the verbal form, I think it's long-overdue that we address how content can be consumed this way. Tone and stress are significant aspects of communication and think this module will help ensure that users don't experience a loss of information.

With that consideration, I would like to suggest / request two things:

Problem: Information loss in spoken modality due to lack of stress and tone

Solution: We allow the default visual distinctions of certain phrasing elements inform some default auditory distinctions:

  • em : voice-stress: moderate
  • strong : voice-stress: strong
  • mark : voice-stress: strong; voice-pitch: high
  • small, sub, sup : voice-stress: reduced
  • i, q: voice-balance: leftwards; pause: weak;
  • i : voice-rate: slow (an unbalanced slow voice with a pause could reflect alternate thoughts and transliterations)
  • dfn, dt: voice-rate: slow; pause: weak;
  • del,s,strike: voice-range: low; voice-volume: x-soft (less range and much softer, indicating contrast to regular)
  • ins: voice-range: medium; voice-volume: soft `
  • u: voice-balance: rightwards; ¿¿speak-as: spell-out??; voice-rate: slow; (unbalance slow voice indicating it's annotated in someway. especially if spelled out)
  • pre, code, var, samp, data: voice-range: x-low (monotone could be similar to monospace)
  • kbd, data: speak-as: literal-punctuation; (guarantees that !.; are read aloud)
  • var, samp: voice-pitch: low
  • var: pause: weak
  • samp: voice-stress: moderate
  • abbr: speak-as: spell-out

Problem: We don't have a way define default and alternate voice styles

Certain elements carry semantics that communicate, "not the narrator's original words / phrasing" such as:

  • q
  • blockquote
  • samp

We recognize quoted text in narrations because the narrator has altered their voice. Whether they read the text higher, lower, more feminine or masculine, or with a different accent. The narrator alters their dictation to indicate, "this is not the narrator's voice."

While we have all of the individual parts for a "narrator voice" and "non-narrator voice", we don't have a way to point the whole collection of attributes together so that we can apply them.

Solution: A @voice-character at-rule and/or reading-style property

I could see something like how we use @keyframes and animation to define a set of attributes and apply them to an element:

@voice-character Narrator {
  voice-family: young neutral;
  voice-stress: normal;
  voice-pitch: medium;
  voice-range: medium;
}

@voice-character Excerpt {
  voice-family: old neutral;
  voice-stress: moderate;
  voice-pitch: high;
  voice-balance: leftwards;
}

@voice-character Code {
  voice-family: young neutral;
  voice-stress: none;
  voice-range: x-low;
}

body {
  reading-style: Narrator;
}

q, blockquote {
  reading-style: Excerpt;
}

pre, code, var, samp, data {
  reading-style: Code;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions