Sorry I didn’t get a chance to test this earlier. Thanks for clarifying the announce flag - that makes sense.
I’ve updated to beta13 - all tests below are on this version. TL;DR All seems good with announce: false. Still volume issues when announce: true.
Let’s build up a story so we’re on the same page, then I’ll report my findings.
User story: When an announcement is played and I’m listening to music, the announcement should play over my music. If I’m playing my music loud, then my music volume should reduce (duck), the chime and announcement played at the requested volume, then my music should resume at my previous loud volume. If my music is quiet then it doesn’t really matter about reducing the volume or not, but the announcement should still play at the requested volume. If I’m not listening to music, then the announcement only should play. [@Nimrod_Dolev does this match your expectation?]
For my use case, I would always have announce: true, as I don’t know what the state of all the speakers will be. Some will be playing music, others not, soundbars may or may not be playing audio from the connected TV, different volumes, etc. So announce: true is the safest, so the final speaker states are the same as the initial states.
All tests with a single Sonos speaker this time, join and unjoin false. cache true.
Test 1, single speaker, no music, 10% initial volume, announce: FALSE. 60% announcement volume.
Expected result: Play announcement at 60%
Actual results:
- Initial speaker volume: 10%. No music playing.
- Volume during announcement: 60%
- Final speaker volume: 10%. No music playing.
Summary: as expected
Test 2, single speaker, no music, 10% initial volume, announce: TRUE. 60% announcement volume.
Expected result: Play announcement at 60%, as per Test 1
Actual results:
- Initial volume: 10%. No music playing.
- Volume during announcement: <10%. First ~1s is at 10%, then lower
- Final volume: 10%. No music playing.
Summary: Announcement played at <10% volume, which is too low for an announcement
Test 3, single speaker, no music, 80% initial volume, announce: TRUE. 60% announcement volume.
Expected result: Play announcement at 60%, as per Test 1
Actual results:
- Initial volume: 80%. No music playing.
- Volume during announcement: <10%. First ~1s is at 10%, then lower
- Final volume: 80%. No music playing.
Summary: Announcement played at <10% volume, which is too low for an announcement. The initial volume of the speaker does not affect the announcement volume.
Test 4, single speaker, music playing at volume 10%, announce: FALSE. 60% announcement volume.
Expected result: Music should stop, announcement should play at 60%, volume should return to 10%
Actual results:
- Initial volume: 10%. Music playing.
- Volume during announcement: 60%
- Final volume: 10%. No music playing
Result: as expected
Test 5, single speaker, music playing at volume 80%, announce: TRUE, 60% announcement volume
Expected result: Music volume should reduce to below 60%, announcement should play at 60%, then music volume return to 80%
Actual results:
- Initial volume: 80%, music playing
- Volume during announcement: Music volume reduces, my estimate is to about 20%. 1s of the announcement plays at 10% volume, the result is inaudible
- Final volume: 80%, music playing
Summary: Seems to be the same problem at Test 3
It’s starting to get complicated… but I’m happy to keep testing for you. If you want a debug log, let me know which test and I’ll repeat it and collect logs. Join/unjoin, which I haven’t tested this time, adds complexity to the initial/final states. imho, join of all speakers is the best experience for an announcement. Would it be better/simpler when announce: true, to snapshot the states of all speakers (group memberships, play/pause states), play the announcement as per announce: false (ie, replace audio), then restore back the group memberships and play/pause states?