novolis-audio / voice-models.md
Voice models (Sherpa ONNX)
SFX, voice, and live music
dotnetaudiottsminiaudionovolis
Novolis voice uses Sherpa-ONNX offline TTS.
Bundled speakers (in this repo)
Profile metadata is declared in `NovolisAudioVoiceModelsManifest.cs` and emitted as `VoiceModelCatalog.g.cs`.
| Model profile id | Folder | Sample rate |
|---|---|---|
| `en-us-piper-amy` | [`models/en-us-piper-amy/`](../models/en-us-piper-amy/) | 16 kHz |
| `en-us-piper-lessac-low` | [`models/en-us-piper-lessac-low/`](../models/en-us-piper-lessac-low/) | 16 kHz |
| `en-us-piper-kristin-medium` | [`models/en-us-piper-kristin-medium/`](../models/en-us-piper-kristin-medium/) | 22.05 kHz |
Git LFS is required for *.onnx. Clone with:
git lfs install
git clone https://github.com/Novolis-Platform/novolis-audio.gitNovolis.Audio.Voice.SherpaOnnx packs each model as models/{profileId}.zip and extracts at build time (buildTransitive/Novolis.Audio.Voice.SherpaOnnx.targets).
Archetypes (excitable_female, procedural_male, …) map to these speakers in `Novolis.Audio.Voice.Profiles`—they are not the same as model ids.
Fetch locally
pwsh -File scripts/fetch-voice-model.ps1 -ProfileId en-us-piper-amy
pwsh -File scripts/fetch-voice-model.ps1 -ProfileId en-us-piper-lessac-low
pwsh -File scripts/fetch-voice-model.ps1 -ProfileId en-us-piper-kristin-mediumOverride with another model
Point NOVOLIS_VOICE_MODEL_DIR at an alternate extracted folder (or pass VoiceSynthesisOptions.ModelDirectory).
Verify
dotnet test --project tests/Novolis.Audio.Unit/Novolis.Audio.Unit.csproj -c ReleaseSherpa synthesis tests run only when materialized ONNX files are present.