Release notes: Voice Profiles (Crystal + bobby) + YAML-selectable voices
This release adds a new Voice Profiles system to NV Speech Player packs. Voices are now defined in phonemes.yaml and can be selected at runtime, letting you ship multiple voice characters without maintaining multiple full phoneme tables.
Highlights
- New YAML voice profiles
- Voices are defined in
phonemes.yamlundervoiceProfiles. - Profiles are overlays: one base phoneme table, plus per-voice adjustments.
- Voices are defined in
- New bundled voices
- Beth (female)
- bobby (child)
- Voice selection everywhere
- The NVDA driver can select a YAML-defined voice.
- The Phoneme Editor can select a YAML-defined voice.
- Better debugging for pack authors
- Pack load / parse warnings are now recorded and exposed via an API, so it’s easier to see why a profile didn’t load or apply.
How voice profiles work (short version)
A voice profile can apply:
- class-based scaling (e.g., vowels vs. fricatives) for formants, bandwidths, gain/noise, and voice quality
- per-phoneme overrides for targeted fixes (absolute values that win for those specific fields)
New profile tuning controls
Profiles now support additional multipliers needed for realistic voices:
- Pitch contour scaling:
voicePitch_mul,endVoicePitch_mul - Vibrato scaling:
vibratoPitchOffset_mul,vibratoSpeed_mul - Voice quality:
voiceTurbulenceAmplitude_mul,glottalOpenQuotient_mul
Notes for pack developers
- Existing packs remain compatible:
voiceProfilesis optional. - If you define lots of overrides, it usually means your class scales need tuning.
- For low sample rates, keep an eye on harsh sibilants and overall gain — profiles include tools to roll off the top end and preserve headroom.