Google TTS - broken with Google Home and Mini - works fine with normal ChromeCast devices

I’m late to the party on this and it’s probably unrelated, but I just moved from hassbian to a Windows PC with VirtualBox /Ubuntu/Docker and lost my TTS. I have been struggling with it for a few days until I just realized that my base_url value was incorrect. A simple thing, but I’d overlooked it.

If you are using SSL certificate or Docker, you may need to add the base_url configuration variable to your http component as follows:

#Example configuration.yaml entry
http:
  base_url: example.duckdns.org

The base_url configuration variable was added in 0.35.1, so make sure your Home Assistant version is 0.35.1 or above.

I have NAT reflection enabled
I also have set my base_url to the IP I use to access Hass externally

After a reboot of Hass, I get the Ding and then nothing. The message I sent doesn’t get spoken When I open the Google Home app, and choose the device I tried to cast to, it shows the Stop Casting option. It appears it didn’t receive the casted item and/or thinks it’s still casting. If I click Stop Casting nothing happens.

When I restart Hass, it’s the same pattern as above.

Hi,

Anyone got any update on this?
I have same issue with my google home and the TTS from Home-Assistant.
First after a reboot i hear a ding then after that nothing happens…
I’m pretty new to this so sorry if it has been answered.

Looks like it is not possible to solve this issue when you use SSL with HA for Google Home devices seen these devices have their DNS settings hardcoded. At least with my internet provider’s router I can’t change DNS settings (which would not solve the Google Home going straight to 8.8.8.8 anyway) and can’t use port mapping on the router either as the rules are only managing outbound to inbound, and not inbound to inbound.

1 Like

@littlbee Can you elaborate on this? It’s not really obvious to me what SSL has to do with DNS.

It’s got something to do with NAT reflection / hairpin / loopback I was trying to sort this out yesterday but eventually I gave up. Anyway now you have something to Google, if you get it sorted please let us know. (Hint, some people just enabled NAT hairpin in their router settings and it solved the problem so it’s worth trying that first) - didn’t work for me on my Ubiquiti Edgerouter but you might be lucky!

@aherbjornsen When SSL is switched on (for secure external access without VPN) it’s often necessary to do some port forwarding (443) to get it all working, this port forwarding seems to affect internal devices and stops TTS working on Google Home. Some people find that NAT hairpin works but it didn’t for me.

It has to do with SSL in the sense that the root URL in configuration.yaml must reflect the hostname and not internal IP. Having the hostname set and considering the Google Home has its DNS hardcoded, the GH will resolve the hostname to my external IP, and my router doesn’t allow NAT loopback (or NAT hairpinning).

@littlbee Thanks, that made it clearer. What you’re saying is that the Google Home device ignores my local DNS and goes directly to 8.8.8.8.

I did some traces on my router and see that this is correct.

Then I enabled the option “Intercept DNS port” in the router, and I now see that the Google Home device is being handed the internal address.

Unfortunately, it still does not work. I’ll try to dig deeper into this and do some further traffic dumps.

I don’t remember how I solved this but I’m currently using Google TTS through Chromecast Audio devices with Hass.io on RPi3 and the DuckDNS addon. I have a ASUS RT-AC66U router running Asuswrt-Merlin firmware. I can use https and get TTS notifications.

Duckdns with let’s encrypt ? Check if you have enabled nat loopback or nat hairpin on your router

Yes, this addon https://www.home-assistant.io/addons/duckdns/ .

@n0ir, If you read the title and/or previous messages, you will see that it’s already known to work with Chromecast. The problem is with Google Home devices.

No need to be snarky @aherbjornsen

My setup works with both my Chromecast Audio devices, Chromecast video devices and a Google Home Mini.

I assume it’s because my ASUS router have the possibility for the right settings, but apparently it’s possible.

@n0ir, No attempt at being snarky - but I’m not a mind reader. Your message, as it was written, did not bring anything new to the table. If you actually have TTS working through your Google Home Mini as well, that’s interesting, but you did not say so.

I cannot get that to work, even with my router configured for nat loopback and intercepting the DNS calls from my Home Mini to Google’s DNS. Could you check your relevant DNS settings and post them here?

How do you configure the base URL your HASS config?

@aherbjornsen We’re all on this forum to try and help each other the best we can. :S I’m terribly sorry my attempt to help you was not clear to you but the reason why I took the time to post a replay was to try and share that it obviously possible to use DuckDNS and have TTS notifications through Chromecast/Google Home devices.

I’ve finally got it working on my Home Mini.

Apart from having to add NAT loopback in the router, the format of the base_url has to be correct.

I initially had it set to:

base_url: https://<mydomain>:8123

That did not work. Then i removed the ‘https://’ part like this:

base_url: <mydomain>:8123

And suddenly it started working.

Well, seen I can’t get NAT loopback on my internet provider’s router, I just discovered (and implemented) an alternative solution that actually works even better with Google Home. It consists in using the Google Home broadcast function, via another hass.io add-on : https://community.home-assistant.io/t/community-hass-io-add-on-google-assistant-webserver-broadcast-messages-without-interrupting-music/37274/12

The only downback is that it broadcasts to all your google homes, so if you have several in your house you can’t direct your message to a specific device.

I’ve been having the same problem for a couple of days.
Do not transmit the tts (mp3) just make the beep.

1 Like

I have the opposite problem. My google TTS notifications work fine on my google home but not on my chromecast audios. No errors that I can see either.