Soniox
Realtime voices in sixty languages on the same key as Soniox speech-to-text.
Soniox text-to-speech uses the same API key as Soniox speech-to-text. Every voice speaks every supported language. Soniox tuning is passed in synthesizer.options.
You can also set options 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.
Credential
Create an API key in the Soniox console. The key needs text-to-speech access. jambonz sends it as a Bearer token. In the portal, open or add the Soniox speech credential and check Use for text-to-speech; one credential can serve both text-to-speech and speech-to-text.
When you save the credential, jambonz checks text-to-speech by synthesizing a short phrase with the Adrian voice.
Models
Voices and languages
A voice is given by name, such as Adrian. A cloned voice from your Soniox account can be used by its id. Every voice speaks every language below, so the portal lists the same voices under each language; Adrian is the default.
Soniox takes a bare language code. jambonz sends the primary subtag of synthesizer.language, so en-US is sent as en and es-ES as es; cmn is sent as zh, nb and nn as no, fil as tl and iw as he. A language Soniox does not support is passed through and Soniox returns an error; jambonz does not fall back to English. Set options.language to send a code as is; it takes precedence over synthesizer.language.
Supported languages: Afrikaans, Albanian, Arabic, Azerbaijani, Basque, Belarusian, Bengali, Bosnian, Bulgarian, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, Galician, German, Greek, Gujarati, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Kannada, Kazakh, Korean, Latvian, Lithuanian, Macedonian, Malay, Malayalam, Marathi, Norwegian, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swahili, Swedish, Tagalog, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Vietnamese and Welsh.
Options
Every option is optional. An option you don’t set is not sent, so Soniox’s own default applies.
Text-to-speech model. Overrides the credential’s model.
Language code sent to Soniox as is, such as fr. Overrides the code derived from synthesizer.language.
Speaking rate, 0.7 – 1.3. Soniox’s default is 1.0.
Shortens pauses in the generated speech.
Your own reference, up to 256 characters, attached to the request in Soniox’s usage records.
Streaming
Soniox supports TTS streaming, so it can be driven token by token from an LLM using tts:tokens, for example from the agent verb. jambonz streams text to Soniox over a live connection, starting a new Soniox stream for each turn, and on barge-in sends Soniox’s cancel instead of reconnecting.
Soniox returns character-level timestamps, so alignment events are available when alignment is enabled.
Soniox limits a single stream to two minutes of audio; longer speech is cut off with an error. A stream that receives no text for several seconds is closed by Soniox, and the next text opens a new one.