Configure Mary TTS

I never really come to this discussion board so I had no idea that the Sonos plugin was being updated. I realized something was wrong when my TTS decided to stop working. That’s when I discovered something different by looking at the Sonos plugin. I don’t see how I can add Mary TTS back. Please advise how I can do that or is there a way to go back to my old settings (Sonos 1.4, 1.5). I tried restore from a backup from 2 weeks ago but the Sonos 2.0 plugin was still there.

Go into the Settings tab of the Sonos System master device.

Are you referring to the TTS tab? I see MaryTTS on a drop down list with others and Responsive Voice listed as default. I don’t see how to save MaryTTS as default. I also don’t see any of the controls for voice speed and pitch.

The default is whatever engine you leave selected (note the label of the control: “Default Engine”). Mary does not support modifications for speed and pitch. I realize that the prior plugin accepted those values on the UI regardless, but they were not passed to the Mary TTS engine. AFAIK, only ResponsiveVoice actually used these parameters, and it’s now dead.

1 Like

Thank you, I got it set up. Now, how to make it work like before. When I now send VeraPlus/Mary TTS the command and message string all I get is a delay and then a beep type tone. This is lua code I used before:

local SONOS = 188
local PIONEER = 322
local LS_SID = “urn:micasaverde-com:serviceId:Sonos1”
luup.call_action(LS_SID, “Say”, {Text="Someone Opened the sliding door. ", GroupZones=“ALL”,Volume=80, SameVolumeForAll=“true”},SONOS)

Do you see anything I need to change?

Look in your LuaUPnP.log file for the “Say” actions being logged, and in the lines after, you may observe error messages or warning that might lead you. From the description, it sounds like you may have the server URL wrong and it’s not able to reach the engine (that would explain the delay). Your server URL should be of the form http://local-ip-address:port-number/process

You also need to reload Luup after making settings changes.

In the old Sonos TTS interface we had to input the URL server location of MaryTTS in order to direct the output of “Say” command. This is not how your plugin works now?

The server URL should be in the form I gave you previously. If you know the IP address and port of the server, just put those in where indicated in the previous form example.

Thanks for your patience, I’m almost there. I’m not a coder so in the code below how do I write in that URL properly. I know the ip and port of the server.

local SONOS = 188
local LS_SID = “urn:micasaverde-com:serviceId:Sonos1”
luup.call_action(LS_SID, “Say”, {Text="Someone Opened the sliding door. ", GroupZones=“ALL”,Volume=80, SameVolumeForAll=“true”},SONOS)

You don’t put the URL in the action. The URL goes on the Settings tab of the Sonos System master device.

Here is what was happening. When the plugin updated, some of the files evidently didn’t update. I was still looking at some of the old interface and I couldn’t see any of the settings tabs you were describing. I deleted that 2.0 device and added 2.0 back in. All is well with the world. Thank you for your patience.

Thx. for Sonos App 2.0 !

luup.call_action(“urn:micasaverde-com:serviceId:Sonos1”, “Say”,
{Text=“The sun shines outside”, Language=“en”},
in my scene, only only the Sonos_chime goes off. The text are not spoken to my Sonos.

Engine: is RV


Responsive Voice does not work anymore for some months.

1 Like

Mai_Pensato, Thanks for your reply!

I switched to Google TTS. Until recently it worked on my old Vera with UI5. However, TTS does not work on my Vera Plus yet, not even with Google TTS. The login gives:

50 05/24/20 12:03:27.131 luup_log:60: YouLess kwh (cnt)=223.802 <0x74f62520>
08 05/24/20 12:03:28.456 JobHandler_LuaUPnP::HandleActionRequest device: 120 service: urn:micasaverde-com:serviceId:Sonos1 action: Say <0x712c5520>
08 05/24/20 12:03:28.457 JobHandler_LuaUPnP::HandleActionRequest argument DeviceNum=120 <0x712c5520>
08 05/24/20 12:03:28.457 JobHandler_LuaUPnP::HandleActionRequest argument serviceId=urn:micasaverde-com:serviceId:Sonos1 <0x712c5520>
08 05/24/20 12:03:28.457 JobHandler_LuaUPnP::HandleActionRequest argument action=Say <0x712c5520>
08 05/24/20 12:03:28.457 JobHandler_LuaUPnP::HandleActionRequest argument Text=test test test TTS doesn’t work <0x712c5520>
08 05/24/20 12:03:28.457 JobHandler_LuaUPnP::HandleActionRequest argument Engine=GOOGLE <0x712c5520>
08 05/24/20 12:03:28.458 JobHandler_LuaUPnP::HandleActionRequest argument rand=0.6099634113732129 <0x712c5520>
50 05/24/20 12:03:28.461 luup_log:114: Sonos: Say action on device 120 text “test test test TTS doesn’t work " <0x77738320>
02 05/24/20 12:03:28.496 luup_log:114: Sonos: Google TTS fetch command failed (256); wget --quiet --timeout=15 --output-document ‘/www/sonos/Say.120.mp3’
–header “Accept-Charset: utf-8;q=0.7,;q=0.3"
–header "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,
–user-agent “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11”” <0x77738320>
02 05/24/20 12:03:28.497 luup_log:114: Sonos: (tts) engine Google TTS error: Failed to retrieve audio file from remote API <0x77738320>
02 05/24/20 12:03:28.497 luup_log:114: Sonos: (tts) Engine “Google TTS” produced no audio

Can you see what’s going wrong?
For example, do I have to adjust anything about router settings?

Thanks !

The only known working TTS engines at this time are Mary and Azure. I did not remove the others because some people may still be using them somehow, but I cannot test them. All TTS engines other than Mary and Azure are deprecated and will be removed from a future version.

1 Like

A newbie question; is the only way to install Mary TTS, to install it on a computer and copy the IP? Or is it possible to set “Server URL” to a cloud service (or install it on direct on the Vera)?

As far as I know, there is no cloud service for Mary, and it does not run on Vera directly, you need a local server.*

Personally, I do not like the quality of Mary’s speech. I find Azure to be outstanding, and you can use it within the free tier, especially if you tend to use fixed phrases and allow the plugin’s TTS caching to do its work. I’ve been using it for months and haven’t paid a cent, not even close. I know a lot of people (myself included) take objection to many of MSFT’s behaviors, but this is one of their better services and a reasonable environment.

* Edit: it’s entirely possible that you could run Mary within the free tier of an Amazon EC2 instance. I haven’t tried, but I run far more complex things with higher traffic still well within free tier.

1 Like

Rigpapa, Thx for your support!!
I have TSS on Vera UI7 running now within the MS Azure cloud option. Unfortunately support in Dutch of TTS with Azure is not (yet) possible, I thought.

After some more research on MS Azure site found that Dutch is also supported: Regio's - Speech-service - Azure Cognitive Services | Microsoft Learn

In the Sonos master Settings, Text-to-Speech (TTS)
, Region set on Western Europe, Voice manually on NL-NL-HannaRUS, other key created on Western Europe. It works well!

Correct, as you discovered, you can provide a custom value. I’ll make sure it’s part of the 2.1 suite of known voices.