Help! TTS Google Assistant Voice Changed!

When I set up my system to announce doors and windows open/closed, it used the Google Assistant voice. Recently that has been slowly changing. Some voices are Google Assistant and some are this new voice which is a more robotic female voice (Robo). It seems they are changing more and more to the robotic voice.

Currently when I open my front door, it is Google Assistant, but when I close it’s Robo. I don’t know what the rhyme or reason to the change is. I believe there must be a cache somewhere that is being replaced.

Is there a setting in HA that I changed? Is there a way to get the old Google Assitant voice instead of Robo?

My configuration, an automation with several triggers and a single data template to handle them.

data_template:
  message: >
    The
    {{trigger.to_state.attributes.friendly_name|regex_replace(find='contact',replace='',ignorecase=True)
    }} is  {% if trigger.to_state.state == 'on' %} open {% else %} closed {%
    endif %}
entity_id: media_player.announcer_group
service: tts.google_translate_say

Same here - it’s horrible!

1 Like

Well, at least there’s some confirmation. They’re slowly changing over to Robo.

I was reading on this page, TTS Integration: Service say, there is support for setting options such as voice, but there are no examples.

The say service support language and on some platforms also options for set, i.e., voice, motion, speed, etc . The text for speech is set with message . Since release 0.92, service name can be defined in configuration service_name option.

Cheers Adam, I’ll google around a bit.
What I don’t get is it isnt consitient?
I have many automations using speech, some use Robo, some the old voice.

1 Like

Seems to have fixed itself. All of my audio notifications are back to normal.

Still borked for me :face_with_symbols_over_mouth:

1 Like

Did you install a TTS battery notification blueprint or other TTS-related automation? This started happening around the time I did that. So I checked it out and the voice for “en-gb” or “en-us” sounds highly similar to Robo. I haven’t had a battery notification in a while, and the sounds are starting to right themselves. I think we need to figure out the "language: " setting for Google Assistant voice.

can you share your yaml for google annunciate door open. how did you get it to work.
it is a scrip?

Sure. Here you go. https://pastebin.adamoutler.com/jrwWSMHSkgRzfyfR

  1. List all your entities in the 4 groups at the top to
    catch any open to close or off to on.
  2. Create a media player group in Google App, called “announcer group”
  3. Use the media player group on the last line.

If you want a real good sounding voice use Hindi!

data_template:
  message: >
    The   {{trigger.to_state.attributes.friendly_name|regex_replace(find='contact',replace='',ignorecase=True)
    }} is  {% if trigger.to_state.state == 'on' %} open {% else %} closed {%
    endif %}
  language: 'hi'
entity_id: media_player.announcer_group
service: tts.google_translate_say

Although my Google Assistant now sounds like an Indian Princess. Not sure how I feel about that or how the family will feel.

Thanks bro. But this is way too complicated for me. Is there a tutorial somewhere.
I don’t know what you mean with creat a google app.

This is a simple automation. I don’t think a google app is required.

Here’s my code that bounces a message to phone, TV and Google home.

- id: '1591953119248'
  alias: Sensor Battery Warning
  description: ''
  trigger:
  - below: '3.2'
    entity_id: sensor.outdoor_battery
    platform: numeric_state
    for: 00:05:00
  condition: []
  action:
  - data:
      message: GARDEN SENSOR BATTERY WARNING!
    service: notify.mobile_app_marks_iphone
  - data:
      message: Garden battery sensor is {{ states('sensor.outdoor_battery') }} volts.
        Replace battery!
    service: notify.lg_tv
  - data_template:
      cache: false
      message: Garden battery sensor is {{ states('sensor.outdoor_battery') }} volts.
        Replace battery!
    entity_id: media_player.living_room_home
    service: tts.google_say
  mode: single
1 Like

Thanks brother that was helpful.

Any one have a fix for this ? I cleared the tts cache and now every google_translate_say sound like a robot

1 Like

Yeah, I’m finding that all the old announcements are in a nice “posh English” voice, but any new ones sound like the Texas instruments speak and spell I had 20 years ago… And that’s using the exact same format to play them.

Edit: looks like all the “en” language options use the standard non special voice.
en-gb en-au, en-us, etc all give the same non accent voice.
Seems to be since it switched from being able to use upper case letters like en-GB, en-AU etc…

did you find a fix for this?

Hi all,
I just made a custom component that should help with this problem by using the more realistic Google Assistant voice:

After some googling, it appears that there are two types of tts voices - standard and wavenet voices. The wavenet voices are the “realistic” ones and the standard are synthesised. Apparently the google assistant uses the wavenet ones hence why I assume the assistant_relay solution works that caj380 created.

Don’t know for sure but I suspect the reason it is changing is because of the pricing model?.. for the wavenet voices pricing starts from the first character, whereas the standard ones are free upto the first 4M characters used per month. refer to: Standard and WaveNet voices  |  Cloud Text-to-Speech Documentation and this one on pricing: Pricing  |  Cloud Text-to-Speech  |  Google Cloud

My understanding is that home assistant has a cache of tts phrases (found in the home assistant tts directory). If the text isn’t changed the cache is used until it expires or is deleted. That may be why some still use old voice and some use new voice.

4 Likes