Skip to content

to_smd: amazon:effect whisper + mstts:express-as styles; v3 style passthrough - #6

Merged
willwade merged 1 commit into
masterfrom
feat/ssml-to-dialect
Sep 9, 2026
Merged

willwade merged 1 commit into
masterfrom
feat/ssml-to-dialect

Conversation

@willwade

@willwade willwade commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Completes the SpeechMarkdown side of the tts_speak_ssml-on-ElevenLabs story (wrapper follow-up incoming):

  • ssml_to_smd translates <amazon:effect name="whispered"> → (text)[whisper] (other effects degrade to text) and <mstts:express-as style="…"> → (text)[style:"…"]
  • The ElevenLabs v3 dialect passes style values through as audio tags — [cheerful] — since v3 tags are open-ended natural language (pre-v3 dialect keeps dropping them)
  • Round-trip test pins the full chain rust-tts-wrapper will use: SSML → SpeechMarkdown → v3 dialect (break → pause tier, prosody rate → tempo tag, whisper → [whispers])

Test plan

  • All 87 lib tests + 217/217 corpus pass; clippy --all-targets clean
  • CI green (per-commit)

…-as; v3 style passthrough

to_smd now translates <amazon:effect name="whispered"> to the whisper
modifier and <mstts:express-as style=…> to the generic style modifier;
the ElevenLabs v3 dialect passes style values through as audio tags
(v3 tags are open-ended natural language). Together these unblock
tts_speak_ssml on ElevenLabs: W3C/Alexa/Azure SSML can round-trip into
the model-matched dialect instead of being stripped — pinned by a
round-trip test (break → pause tier, prosody → tempo tag, whisper).
@willwade
willwade merged commit f33bf62 into master Sep 9, 2026
4 checks passed
willwade added a commit that referenced this pull request Sep 24, 2026
- integration runner gains a .gemini.ssml arm (11 fixture sets now
  byte-enforced against Platform::Gemini)
- tests/test-data submodule bumped ee7460e -> 22663dc (gemini fixtures;
  lands on master when PR #6 in speechmarkdown-test-files merges)
- cargo fmt (includes some pre-existing drift)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant