I don’t think I could do per speaker. Not without a lot of code. I’ll need to investigate that possibility.
I could see perhaps doing a global minimum volume though which would let you change it from the current 50% threshold to say 25%. This would keep your bedroom speaker at 25% if it is at it already or above it, but if it’s at 19% it would raise it to 25% to speak and then set it back to 19%. Your Living Room speaker that is at 65% already would just stay at 65%. This would be if your global desired default volume is not set. If your global desired default volume is set and the speaker volume is less than that value then it would be raised to the desired default volume for speaking and then returned to the last known volume for that device.
Regarding the second instance. You could do that and make sure that in the second instance that the bedroom speaker is only used in the second instance (not in the first to prevent the clipping that you mentioned). You would then set the default volume in that instance to 25%.