Make Assist respect Piper configured Speaker

Hi all!

I’ve got an issue configuring Assist pipelines when dealing with the TTS section.

I’ve got Piper correctly set up as an App, with Wyoming protocol pointing at it. In Piper’s config I have set up a different speaker (speaker 1) and a lower voice cadence, and when I play TTS in automations, it properly plays audio respecting my settings.

The problem is when I use Piper from Assist. I set up the TTS section with Piper, and then I’m forced to select a language and a voice, which I do… but then when Assist plays its responses, it does so in the default speaker (0) with an ugly voice, ignoring my settings.

Is there a way that I can ask Assist to play through Piper using its default settings? Or maybe that I can inject additional parameters such as Speaker and Cadence? Moreover… how do I even edit Assist’s pipeline in yaml?

Thanks!

The assist component does not support the use of different speakers.

Thanks for your feedback!
I’ve been looking at the code in home-assistant-core/homeassistant/components/assist_pipeline/pipeline.py at 7480d59f0f001d1acee4ffa7c9bf6bceb3da2ee6 · epenet/home-assistant-core · GitHub
And I suspect that tts_voice could be left Optional (so, eventually =None) without any negative impact… do you think this would work?
I could try to submit a PR

I think the right way would be to add a list with a choice of speakers (the dictionary is already contained in the system), but this is a complex change that will require not only changing the specified file, but also the frontend.

I’m not quite sure, I was proposing this because there are many other options in Piper:

  • Length scale
  • Noise scale, and
  • Speaking cadence
    Adding all this items to the Assist pipeline seems like an overkill… specially when Piper is configured elsewhere.

It feels like the right solution is to leave the defaults to Piper to choose. That’s why I was proposing to leave the voice as Optional.

I’m only talking about speakers.
The parameters you specified are internal to the Piper server, and HA knows nothing about them and cannot change it.