Hume
Hume Octave is a text-to-speech model that takes acting directions alongside the text. Hume tuning is passed in synthesizer.options.
You can also set these in the portal under Extra Options on the speech credential, in which case they apply to every request that uses that credential. Settings supplied on the verb take precedence.
Hume no longer lists the Octave TTS docs on its developer site, although the TTS API still answers. Confirm with Hume that Octave TTS is available on your account before relying on it in production.
Credential
Add a Hume speech credential in the portal or API, using the vendor id hume. Hume is used for text-to-speech only.
When you save the credential, jambonz checks it by synthesizing a short phrase with the Ava Song voice.
Voices and languages
The portal lists two voices from Hume’s voice library under English (US): Ava Song (default) and Male English Actor. Any other voice can be entered as a custom voice:
- a voice name is sent as the voice
name, and a voice UUID is sent as the voiceid; - for a voice you created or cloned in your Hume account, set
voice_providertoCUSTOM_VOICE.
Hume has no language setting: the spoken language follows the voice and the text. jambonz accepts synthesizer.language but does not send it to Hume.
Options
Every option is optional. An option you don’t set is not sent, so Hume’s own default applies.
Octave version, 1 or 2. Overrides the credential’s model.
HUME_AI for a voice from Hume’s library, or CUSTOM_VOICE for a voice in your account. jambonz defaults to HUME_AI.
Acting directions for the voice, such as calm and reassuring. Hume recommends 100 characters or fewer.
Speaking rate. 0.75 to 1.5 is recommended.
Seconds of silence added after the speech, 0 to 5.
Lower latency streaming. Requires a voice. Not used when audio is rendered for caching.
Sampling temperature.
The id of an earlier Hume generation, so the new speech continues in the same style.
Non-streaming say only. Whether Hume splits the text into smaller parts.
Streaming
Hume supports TTS streaming, so it can be driven token by token from an LLM using tts:tokens, for example from the agent verb. jambonz keeps one connection to Hume for the call and sends the text as it arrives. Hume has no cancel message, so on barge-in jambonz closes the connection and opens a new one for the next turn.
Hume does not return word-level timestamps to jambonz, so alignment events are not available.