SOLVED: No TTS output from Google Home

cdybdahl, I’m now following this issue… https://github.com/home-assistant/home-assistant/issues/13442

Ah, interesting… that definitely looks familiar. Not a lot of activity in the past couple of weeks though… I’ll chime in over there a bit later on today, and encourage you to do the same.

Have you tried removing the port from base_url? I use ssl and when using a port in base_url, I get the sound from the google home but no message. When I remove the port it works fine.

2 Likes

Holy shit, that solved the problem for me! Assuming it had something to do with the cert matching the *.duckdns.org domain…

THANKS!

@cdybdahl Are you using 8123 forwarded to your Hass.io instance? Could you possibly share your whole ‘http’ config?

I tried this and it did not work for me Google TTS does not working when SSL is enabled · Issue #13442 · home-assistant/core · GitHub. Any other pointers?

Are you forwarding 443 to 8123?

My http config:

http:
  api_password: !secret http_password
  base_url: !secret public_url
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem

Base URL is REDACTED.duckdns.org (no port), and 443 is forwarded to 8123 in my router config.

1 Like

@cdybdahl Thanks. I’ve now got the correct path (?) being shown in the developer/states page as below but I still get no speech. Media player turns on but nothing spoken. Now running 0.67.0.

volume_level: 0.7272727489471436
is_volume_muted: false 
media_content_id: https://mydomain.duckdns.org/api/tts_proxy/2e871554f1f3e466dshjy282f6b2f308141e40112f_en_-_google.mp3 
media_position: 0 
media_position_updated_at: 2018-04-15T23:47:38.644053+00:00 
app_id: CC1AD845 
app_name: Default Media Receiver 
friendly_name: Gaming Room Home 
supported_features: 21437

What is your ‘media_content_id’ after you’ve got it to say something?

Hi, I’m running hassio 0.73.3 w/ SSL enabled via DuckDNS and Let’s Encrypt. I have removed port 8123 from my base URL and have port 443 forwarding to 8123 in my router’s config.

Also, I can see that the Google TTS mp3 files are being created and stored in 'config/tts". Finally, I can even see my Sonos speakers queue the TTS mp3 files to play. But for whatever reason, they won’t actually play.

Any ideas for troubleshooting?

@matthewk

I was having the same issue as you, solved it by adding this to the tts: config

tts:
  - platform: google
    base_url: https://<yours>.duckdns.org

I didnt, and still dont use “base_url” in the http component

Cool. Curious as to why you don’t use base_url in http component. Can you elaborate?

I was able to get it working by adding port forwarding 8123 > 8123

I had it commented out from over a year ago when I first setup HA and everything worked without it, not even sure what it does exactly, glad you got it working

I had the same issue. I had recently uncommented the base_url. Once I commented it out again, my TTS started working once more. I am using a Docker container.

I recently got this problem after adding home assistant behind an nginx reversed proxy. Fixed it by adding base_url in the tts section

HI, can you give me more information about configuration of nginx? wich home assistant version do you have?
I have Home Assistant Core 0.116.2 and when try to launch tts service i receive the error:

2020-10-18 18:43:39 ERROR (Thread-10) [homeassistant.components.cast.media_player] Failed to cast media http://<internal_IP>:8123/api/tts_proxy/6279886fde090b3038f267098bcca771a6efa946_en-us_a9c18110b0_cloud.mp3 from internal_url (http://<>internal_IP:8123). Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

Here is my configuration. I’m running always the latest HA. I run this on Debian.

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    # Update this line to be your domain
    listen 443;
    server_name homeassistant.yourdomain.something;

    # Ensure these lines point to your SSL certificate and key
    ssl_certificate /etc/letsencrypt/live/homeassistant......../fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/homeassistant......./privkey.pem;

    # Ensure this line points to your dhparams file
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;


    # These shouldn't need to be changed
#    listen [::]:443 default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
    ssl on;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "EECDH,.................. More stuff.......RT:!DES:!MD5:!PSK:!RC4";
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    
    proxy_buffering off;

    location / {
        proxy_pass http://127.0.0.1:8123;
        proxy_set_header Host $host;
        proxy_redirect http:// https://;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }

I dont know if its better also for my installation (ex HASS.io ) :frowning:

It does not matter. I use mine to get encryption and my own certificates. Also to use cnames.