TTS notification through mobile app changed language

I got some automations for notifying me when a certain device finished its service (dish washer, washing machine). TTS notifications are played on my mobile phone.

For some reason the notification language changed and german message textss are played with an english TTS voice, although I did not change anything.

Overview of parameters in nodered

domain: notify:
service: [*my mobile app*]
data:
{
    "title": "[*message text*]",
    "message": "TTS",
    "data": {
        "priority": "high",
        "channel": "alarm_stream_max",
        "language": "de-DE"
        }
}      

The weird thing:
TTS language is correct when triggering the service call manually. I tried passing an additional language parameter (as seen above), but no change.

Anyone got any ideas?

What are your settings for ConfigurationHome Assistant CloudText To Speech? I’m unsure of the scope of this setting, but it does affect the language for TTS on my Google Home Mini.

The android app uses the default TTS language on the device so you need to check that as it most likely changed.

Where in the docs do you see language parameter being changed? That is not correct.

Google TTS is not the same as the one in the android app :slight_smile:

2 Likes

Thanks for the correction :slight_smile: I was leaning that way, but thought there was a chance since most Android devices are practically Google devices.

2 Likes

I checked the TTS settings on my mobile device, the language setting was set to use the system language (which is german).

I manually changed it to german now. Will see what happens.

I know the docs don’t list a language parameter for notifications via companion app. It merely was a (very) wild guess in terms of “Okay, this attempt makes no sense, but so does the problem”.

I threw sense over board, since the exact same service call node in nodered produces different outputs (english on triggered automation, german on manual trigger via inject node). :sweat_smile:

@dshokouhi Manually setting the TTS language of the mobile device to german did not evoke any changes :frowning_face:

Is the app Google text to speech up to date?

All apps are up to date.

when you go to TTS speech settings in your device settings and you attempt to play the sample what voice does it play in?

If you refer to the TSS preview: language/ voice is correct.

so thats what the app is using, I am not sure why the language has changed. Can you think of what has changed since then? an app update, phone update things like that will be helpful.

No system update, only the usual updates (google services, my dails apps like podcatcher etc.).

I’m still wondering why manual triggered service calls produce correct TTS. :thinking:

Can you reproduce it if you take nodered out of the equation? Like use the same text when you send one manually and in a normal automation.

Ah, I did not think of doing that before since I’m only using nodered. Thanks.

I just built an automation and tested it. Same problem:
The service call by the automation produced wrong TTS output. A manual service call via developer tools produced correct output.

Look at notification history in app configuration, is the text the same or sightly different?

1 Like

There is a small difference in terms of data formatting: The message title is (not) enclosed with quotation marks.

Testing showed this is a difference between an automation using stock HA and an automation using nodered. There is no connection between the formatting and the TTS output being correct/ wrong.

Beyond that:
In the last two days I logged into HA and triggered the automations (stock HA/ nodered) and service calls manually. Actually for no purpose whatsoever (since I don’t have any approach how to solve this problem and I’m not changing anything).

Yesterday I suddenly had correct TTS output upon manually triggering the automation. Today the automation got triggered due the washing machine finishing its program and TTS output suddenly was wrong again.

I logged into HA and triggered the automation manually several times:
First time: Wrong TTS output.
Second time (10 seconds later): Correct TTS output.

I’m having correct TTS output, no matter how the service call is triggered. But I assume this will change again…