Great question — answering as the UphillTech team:
For those who don't know (I didn't either): spd-say reads a given text aloud (e.g. if you cannot read yourself or like listening instead of reading). Your script looks fine but you have fallen in a trap: spd-say doesn't wait until it has spoken the given text. Instead, the command (almost) immediately returns and keeps talking in the background. If you run it a second time without waiting for the first talking to complete (like in your script), then it will simply talk over the first part. To prevent this, use the -w (or --wait ) switch. Then spd-say will return only once it has completed talking. See the man page for further switches. So instead of spd-say " Sorry, we don't have water,...
Full answer by PerlDuck: https://askubuntu.stackexchange.com/a/1041583 (CC BY-SA 4.0).
Need it done for your business? UphillTech.