Add prosody model; bump spec to v0.2.0 - #1
Merged
Merged
Conversation
Introduce a core prosody model (SPEC §5.5): a `prosody` control carrying the continuous attributes `rate` (tempo multiplier), `pitch` (semitone shift), and `volume` (vocal-intensity multiplier), as a per-voice baseline object (§2.3) and a per-line cue clause (§5), merged per attribute onto the IR clip and omitted at natural defaults (§11.1). The section maps the remaining prosodic dimensions onto existing constructs (*emphasis*, breaks, punctuation, direction). Prosody is advisory synthesis guidance — a deliberate exception to fail-closed (§15.4): core vocabulary, but engines drop attributes they cannot honour, degrading expressiveness not mix correctness. It joins the synthesis cache key (§14.3) and does not affect timing/resolution. New SEMITONES token (§1.5); AST Voice.prosody / Prosody interface / prosody clause variant (§10); IR-clip prosody. Versioning: adopt three-part semver and bump the spec to v0.2.0 (minor). Normalize every example and conformance-fixture stamp to 0.2.0 (stamp-only, pre-1.0 housekeeping; 0.1 remains valid input). Add CHANGELOG.md. Docs/examples: AUTHORING Prosody section + runnable examples/prosody.podscript (single-sourced, CI-guarded). Conformance: new parse/prosody and resolve/prosody fixtures. OpenSpec: prosody capability spec added; add-prosody change archived. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Summary
Adds a core prosody model to the Podscript spec and bumps the spec to v0.2.0 (minor, backward-compatible).
Prosody is how a line is spoken. A new
prosodycontrol carries the three continuous acoustic correlates —rate(tempo),pitch(semitone shift),volume(vocal intensity) — as a per-voice baseline and a per-line override, merged per attribute. The remaining prosodic dimensions map onto constructs that already exist:prosody rate 1.15 pitch +2st volume 1.1(new)*emphasis*...,{break Nms}(direction)Design highlights
start/dur/endare unaffected.(direction)), degrading expressiveness, not mix correctness.rateis near-universal;pitch/volumevary. Grounded in what real engines actually expose (ElevenLabs has no SSML/per-word rate; only a whole-request speed).volume≠gain: vocal effort at synthesis vs. mix fader level in dB — kept explicitly distinct.Versioning
PATCHoptional (0.1≡0.1.0, still valid input).0.2.0(stamp-only, pre-1.0 housekeeping — no script's meaning changes).CHANGELOG.md.What's included
SEMITONEStoken, §2.3 voiceprosody, §5/§5.5 clause + full model, §10 AST types, §11/§11.1 IR, §14.3 cache key, §1.2/§20 semver.examples/prosody.podscript(single-sourced + CI-guarded).parse/prosodyandresolve/prosodyfixtures; existing fixtures restamped.openspec/specs/prosody/capability spec;add-prosodychange archived.Validation
reuse lint: 48/48 compliant🤖 Generated with Claude Code