Voice id versus model id
A Piper voice is a registered model, and its model id is what you pass toRunAnywhere.tts.loadVoice(...). Multi-voice engines additionally expose voice ids
inside one model; those go in TTSOptions.voice or in
initializeVoiceAgentWithLoadedModels(ttsVoiceID: ...). The two are not
interchangeable.
Piper voices
The example app cataloguesvits-piper-en_US-lessac-medium (US English) and
vits-piper-en_GB-alba-medium (British English), both at roughly 65 MB of memory. Any
Piper VITS tarball from the same release works; register it the same way and it becomes
selectable.
Registering Voices
Listing what is registered
availableVoices() queries the model registry for
MODEL_CATEGORY_SPEECH_SYNTHESIS and returns the model ids.
Switching Voices
Voice Selection UI
System voice
The SDK registers a synthetic entry for the platform’s built-in TTS engine so it competes in model selection alongside downloadable voices. It needs no download. Load it the same way as any other voice, using the constant rather than the literal string:Choosing between Piper and the system voice
Piper voices are consistent across devices and give you control over rate, pitch, and volume, at the cost of a per-voice download. The system voice ships with the OS, so it costs nothing to install and starts faster, but its quality and available languages vary by device and OS version. Both run offline.See Also
synthesize()
Basic synthesis
Voice Agent
Complete voice pipeline