TTS - some guidance please

@jjlawren (tagged because I have had a short exchange with them in another post on this and who is the developer)

I have a reasonably sophisticated and flexible notification system including announcements which has been working really well for some years.

The only thing it was missing was the ability to fade down the music before announcing and then fade it back up again. I did achieve this with scripts but it was clunky and didn’t really give a pleasing affect.

The new announce feature provides and improves on this but I now have problems with some of the simple announcement functionality that I had working before because to my mind we have taken a huge step forward but unfortunately lots of little steps backwards too.

I would like to raise some issues on GitHub in order that they might be tracked and possibly rectified but I really need some help in where the actual issue lie?

Sonos? TTS? Media Player?

I also don’t want to upset anyone with this. I’m not critical, I love the idea of being able to play announcements over music but it does seem that a lot of flexibility and functionality has had to be discarded in order to make it work.

I just want to know where to raise the issues and get some ‘official’ feedback.

My problems include:

  1. No longer any indication that a media player is playing an announcement. In fact it keeps its state as paused and its attributes (notably media_duration) are not updated so it is not even reflecting the real world situation. I cannot believe this is how it should be.
  2. Using the construct, media-source://tts/cloud?message="I am very loud"
    which is often suggested as a work around for some ‘problems’ cannot, I don’t think, be made to work with Google Cloud and SSML
  3. It appears (although I haven’t tested this extensively) that if an announcement is played on more than one media player they do not ‘group’ so it sounds like there is an echo as they are not completely in synch.

If none of these things can be fixed I wonder if the announce option could be optional when using TTs allowing us to continue with the (slightly absurd) unjoin, join, restore workflow?

Which would be a great shame but would at least not ‘break’ anything.

This is Sonos-specific. The old behavior is still available for advanced use cases when announce is disabled. The lack of media_player state updates and loss of group sync are limitations of the new API used for the overlay playback feature.

As for TTS, you’ll need to use TTS media source URLs passed into media_player.play_media so that you can bypass announce, which is automatically called by tts.*_say under the hood.