I recently updated HA for the first time (to 110.4) in quite a while. After the update, my TTS stopped working. I use Alexa devices for speech commands, but have a couple of Google Home Minis that I use just for TTS (the microphones on the Home Minis are turned off). Whenever I try to use TTS, I hear the beep that normally precedes TTS, but then nothing.
I checked my tts folder in config, and it contains correct the .mp3 files, but they are not playing on the Home Minis.
My config: I run HA on an X86_64 PC running Ubuntu 18.04. HA is in a docker container, which I start with Docker Compose.
After I updated HA, I deleted and reinstalled Google Cast integration, to see if that would solve the problem. But did not help.
I checked prior posts similar to mine, but the solutions did not help. I already have my router forwarding port 8123 to HA port 8123. I have DDNS domain name with a Let’s Encrypt certificate.
My prior version of HA had base_url under the http: section. But when I updated, I saw in the log that this was deprecated, so I removed base_url from the http section.
To update, in my TTS config I changed the base_url to an https: (instead of http:). Then, I tried to use TTS again. Nothing. But immediately after trying, I went into Developer Tools, States, and looked at the media_player entity for the Home mini. In the attributes column, this is what it listed:
Using a laptop (not the HA computer), I copied the media_content_id and pasted it into my browser. When I did so, it played the audio file that was supposed to be played by the Google Home Mini. Thus, Amazon Polly is creating the media file and any pc can play it using the media_content_id.
Not sure at all why the Home Mini devices don’t play it.
Well, I finally solved this. Just thought I would post it in case someone else has the same problem.
What finally worked is, in the TTS section of my config.yaml, I changed base_url to my external domain name (followed by port).
I was surprised that this did the trick, since the HA TSS page says that you should use an internal ip address for Google Cast devices. But I will take the resolution.