A Home Assistant custom integration that connects to the Cartesia Sonic 3 text-to-speech API, giving HA access to Cartesia’s impressive library of 660 ultra-realistic voices across 42 languages, with fine-grained control over speed, volume, <emotion value="excited" /> and emotion via SSML tags.
This TTS model is fast! The Sonic 3 model claims a 90ms response time, while the Sonic Turbo model claims a 40ms response time.
Easy UI installation, and supports the standard HA tts.speak action. Includes full support for both paid and (very generous) free tiers. New voices and languages added by Cartesia are automatically supported by this integration.
Check out my github page for full project details, presented clearly and concisely without any AI hyperbole:
Thank you for this! Loving how easy it’s been to use so far. One question: when you refer to “default” voice, implying that the voice can be changed outside the initial settings, are you just referring to per-call overrides? Or is there a way to have a different voice per Assistant pipeline? For example, I have 3 conversation agents, and I want each of them to have a different voice. I figured I could select different voices when I assigned them to “Assistants” I make in the Voice Assistants UI, but unfortunately all I can select is the one Cartesia Sonic TTS integration and the language, which will use the default. And I can’t add more instances to the integration. Is there a way to assign different voices per-assistant (as opposed to per-call) in the YAML?
The default voice is set when you initially configure the integration. It is used whenever you don’t specify the language or voice in the tts.speak action. HA doesn’t support more than one instance of this integration, so you’re kinda stuck with that one default.
But as you noted, you can override the defaults per call. With some clever YAML logic you could switch to the voice you want based on different factors - I think that’s the only way to achieve what you want.