Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
TTS and remote clients or speakers
#1
I finally got the TTS working directly on the master server and on my desktop. 

I installed the CQC Speech II driver which I'm thinking *IS* necessary but was not really in the documentation for CQC Voice?  Unless I completely missed it which is possible.

Question:
How can I send the TTS message to a specific player?  In the SayTextAndWait or SayText there's no option for where to "Say" it.

What media players or renderers are supported for TTS?  There's a long and I think unresolved Sonos TTS thread but no conclusive information or how-to for it really.
Reply
#2
The speech driver is totally separate from CQC Voice. CQCV is running locally on each machine that you enable it on and it just directly outputs TTS on the machine. It uses the default audio output you've configured in Windows.

The speech driver is for when you want everyone in the network to be able to queue up text to speak to one or more centralized outputs.

The System::SayXXX() commands also use the local TTS output, not the speech driver. However, they cannot be used from things that run in the background, because MS doesn't allow TTS to be done from the background. SO they are only useful in things run from the IV mostly.

The speech driver gets around this (in a fairly high overhead way) by 'speaking' the text out to a WAV file and then queuing that up to be played as a media file via a media player instance. You can play WAV files from the background, so it's a way to get around that in the case of the speech driver (which runs in the background.)

Anyhoo, all of this is overly complicated by MS' decision not to allow TTS from the background, because it means some things only work when run from certain programs.
Dean Roddey
Explorans limites defectum
Reply
#3
(01-31-2020, 01:23 PM)Dean Roddey Wrote: The speech driver is totally separate from CQC Voice. CQCV is running locally on each machine that you enable it on and it just directly outputs TTS on the machine. It uses the default audio output you've configured in Windows.

The speech driver is for when you want everyone in the network to be able to queue up text to speak to one or more centralized outputs.

The System::SayXXX() commands also use the local TTS output, not the speech driver. However, they cannot be used from things that run in the background, because MS doesn't allow TTS to be done from the background. SO they are only useful in things run from the IV mostly.

The speech driver gets around this (in a fairly high overhead way) by 'speaking' the text out to a WAV file and then queuing that up to be played as a media file via a media player instance. You can play WAV files from the background, so it's a way to get around that in the case of the speech driver (which runs in the background.)

Anyhoo, all of this is overly complicated by MS' decision not to allow TTS from the background, because it means some things only work when run from certain programs.

ok...

So I gather two things from this... "centralized outputs" and "media player instance".  

In the centralized outputs part of this I'm going to guess that the master or speech driver system?  Has to be connected to the speakers or AVR and then the outputs on the AVR are controlled to determine where the audio goes?  Is there a native way of changing the Windows Audio Output directly if you have multiple audio outputs?  BT speakers, line-out, maybe using TuneBlade? 

For the media player instance... what media players are supported for this?  I don't see many current day options in the drivers and the Sonos driver doesn't support playing a URL (even though it's possible).  Any work on a Chromecast drive to send audio to a Google Mini or Chromecast device?  This is where Heos would be nice as well.  What about options of other DLNA renderers running on rPi's with speakers?
Reply
#4
By media player instance, I meant the built in WMP engine. IN the background you can't do TTS. But you can create an instance of the WMP engine and play media files in the background. So the speech driver does it that way. It will spit out the audio to whatever is the default audio output on the machine it's running on. Since it's a driver, anything in the system can send it text to speak.

CQC Voice, OTOH, only is local to the machine it's running on. You are talking to it via a mic input on that machine, and it talks back to you via the audio output on that machine.

For anything in the foreground, like IVs, they can speak text directly. And you can send commands to IVs to have them speak some text, so that's another way to do non-local TTS. If you enable the control interface on an IV, then it will show up as a target in the System::SpeakIVText (I think that's the name, I'm going by memory but you'll see it.) The IVs also use the default local audio output.

There's no way to change output on the fly. If you have the audio output connected to something switchable and it's controllable, then you can set up actions that run before the speech driver starts speaking and after it finishes. You can use that to, say, remember the current settings of your audio switcher, switch it to a broadcast mode, do the speech, then switch it back to where it was.
Dean Roddey
Explorans limites defectum
Reply
#5
Thanks for the info. Perhaps for AirPlay device instances like Sonos you might whip up a really simple driver for TuneBlade? I'm likely going to write a CML Macro as it is really simple but it would make for a nice driver integration.

TuneBlade redirects Windows Audio to an AirPlay destination (Sonos Speaker). It works well from my limited testing so far and it has a very simple HTTP api. A driver may actually be overkill but would simply getting the list of players and make for easier selection in events.

Using TuneBlade I can now redirect my CQC Master server audio to any of the Sonos speakers or group of speakers I choose and I can setup the connection with a HTTP call. Very similar concept as having the server directly wired to an AVR and controlling the AVR inputs.

Plus if you have a Sonos or AirPlay compatible setup already then TuneBlade is only $10 which is a no-brainer decision.

For CQC Voice I understand it's local to where the Mic is connected or being activated from which is pretty standard. What was hanging me up was how to send the Audio to a remote system other than IV then reading through Blake's events and his description I realized everything is based around a direct connection of a Line-out and controlling an AVR to determine output destinations. With that realization I remembered TuneBlade (used in other projects) and it provides the same virtual capability for Airplay devices.
Reply
#6
Do you have any Sonos devices in the vicinity of a PC with a line in? If so you could set up TTS on said PC and output the audio to the Sonos. In the past I have used a bluetooth xmit / recv pair to send audio to a Sonos 5. Not doing that now as I am using TTS via Google Home devices using Tasker, AutoRemote and AutoVoice on an old Android phone.
Reply
#7
(02-01-2020, 09:42 AM)batwater Wrote: Do you have any Sonos devices in the vicinity of a PC with a line in? If so you could set up TTS on said PC and output the audio to the Sonos. In the past I have used a bluetooth xmit / recv pair to send audio to a Sonos 5.  Not doing that now as I am using TTS via Google Home devices using Tasker, AutoRemote and AutoVoice on an old Android phone.

None of my Sonos speakers have a line-in.  I'm using TuneBlade now which allows me to redirect my audio output to any AirPlay compatible device which includes Sonos speakers.  The BT idea would work but I don't have BT speakers around the house and of course there's the range issue.  

Wow... Tasker, AutoRemote, Autovoice to get a message to a Google Home?  Is this for inside the home from an event or for doing something from your phone remotely? 

I have a couple Google Mini's around but not in use.  In the past with HomeSeer I used them with a plugin for TTS and casting media to them.  I've thought about setting up Google Assistant Relay and see if I could integrate them with CQC if I couldn't get a working setup with Sonos.  

Here's the relay link if interested:
https://github.com/greghesp/assistant-relay
Reply
#8
(02-01-2020, 10:36 AM)simplextech Wrote:
(02-01-2020, 09:42 AM)batwater Wrote: Do you have any Sonos devices in the vicinity of a PC with a line in? If so you could set up TTS on said PC and output the audio to the Sonos. In the past I have used a bluetooth xmit / recv pair to send audio to a Sonos 5.  Not doing that now as I am using TTS via Google Home devices using Tasker, AutoRemote and AutoVoice on an old Android phone.


Wow... Tasker, AutoRemote, Autovoice to get a message to a Google Home?  Is this for inside the home from an event or for doing something from your phone remotely? 

I have a couple Google Mini's around but not in use.  In the past with HomeSeer I used them with a plugin for TTS and casting media to them.  I've thought about setting up Google Assistant Relay and see if I could integrate them with CQC if I couldn't get a working setup with Sonos.  

Here's the relay link if interested:
https://github.com/greghesp/assistant-relay

Yes, from within the home! (could be done remotely I suppose but that would be creepy)  Actually I forgot EventGhost (very old school but works) in the equation. I have not re-architected for AutoRemote using MQTT as the messaging transport.  So what I have is:

CQC-> EventGhost Driver -> EventGhost->AutoRemote->Tasker->Autovoice->Google Home   The google home does a bonk everytime AutoVoice takes it over but not bothersome.   If on Android alone (without CQC in the mix) the path is Tasker -> Autovoice -> Google home.  You can specify a specific speaker or a speaker grouping to send the TTS to. AutoRemote is the 2-way communication conduit between Tasker and CQC. So currently for me it's CQC <-> EventGhost <-> AutoRemote <-> Tasker.

Been tinkering for several years with home automation speech control through this mechanism as AutoVoice (Google) allows for very natural speech interaction. I've been working off and on with a tokenized control method that takes the natural speech to discrete action messages sent to CQC.
Reply
#9
(02-01-2020, 07:18 PM)batwater Wrote:
(02-01-2020, 10:36 AM)simplextech Wrote:
(02-01-2020, 09:42 AM)batwater Wrote: Do you have any Sonos devices in the vicinity of a PC with a line in? If so you could set up TTS on said PC and output the audio to the Sonos. In the past I have used a bluetooth xmit / recv pair to send audio to a Sonos 5.  Not doing that now as I am using TTS via Google Home devices using Tasker, AutoRemote and AutoVoice on an old Android phone.


Wow... Tasker, AutoRemote, Autovoice to get a message to a Google Home?  Is this for inside the home from an event or for doing something from your phone remotely? 

I have a couple Google Mini's around but not in use.  In the past with HomeSeer I used them with a plugin for TTS and casting media to them.  I've thought about setting up Google Assistant Relay and see if I could integrate them with CQC if I couldn't get a working setup with Sonos.  

Here's the relay link if interested:
https://github.com/greghesp/assistant-relay

Yes, from within the home!  Actually I forgot EventGhost in the equation.  I have not re-architected for AutoRemote using MQTT as the messaging transport.  So what I have is:

CQC->EventGhost->AutoRemote->Tasker->Autovoice->Google Home   The google home does a bonk everytime AutoVoice takes it over but not bothersome.   If on Android alone (without CQC in the mix) the path is Tasker -> Autovoice -> Google home.  You can specify a specific speaker or a speaker grouping to send the TTS to.

That is quite the data path Smile
Reply
#10
(02-01-2020, 07:20 PM)simplextech Wrote:
(02-01-2020, 07:18 PM)batwater Wrote:
(02-01-2020, 10:36 AM)simplextech Wrote:
(02-01-2020, 09:42 AM)batwater Wrote: Do you have any Sonos devices in the vicinity of a PC with a line in? If so you could set up TTS on said PC and output the audio to the Sonos. In the past I have used a bluetooth xmit / recv pair to send audio to a Sonos 5.  Not doing that now as I am using TTS via Google Home devices using Tasker, AutoRemote and AutoVoice on an old Android phone.


Wow... Tasker, AutoRemote, Autovoice to get a message to a Google Home?  Is this for inside the home from an event or for doing something from your phone remotely? 

I have a couple Google Mini's around but not in use.  In the past with HomeSeer I used them with a plugin for TTS and casting media to them.  I've thought about setting up Google Assistant Relay and see if I could integrate them with CQC if I couldn't get a working setup with Sonos.  

Here's the relay link if interested:
https://github.com/greghesp/assistant-relay

Yes, from within the home!  Actually I forgot EventGhost in the equation.  I have not re-architected for AutoRemote using MQTT as the messaging transport.  So what I have is:

CQC->EventGhost->AutoRemote->Tasker->Autovoice->Google Home   The google home does a bonk everytime AutoVoice takes it over but not bothersome.   If on Android alone (without CQC in the mix) the path is Tasker -> Autovoice -> Google home.  You can specify a specific speaker or a speaker grouping to send the TTS to.

That is quite the data path Smile

Indeed. I updated my post with more detail while you were posting your response. Quite a hack job to get from A to B and back
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Adding RF remote to CQC avtexan 2 2,161 03-30-2017, 02:46 AM
Last Post: Bugman
  RDP for remote UI using IV in iOS NightLight 18 8,369 01-17-2017, 04:44 PM
Last Post: daddyd
  Multiple IV clients on the same machine NightLight 4 2,050 01-03-2017, 05:52 PM
Last Post: NightLight
  Harmony Hub and touchscreen remote - $136 refurb at Newegg sic0048 0 1,504 03-22-2016, 03:39 PM
Last Post: sic0048
  CML Driver Development - Remote Box? Bugman 20 8,099 04-22-2011, 01:15 PM
Last Post: znelbok
  Recommendations for standalone interface clients dman000000 14 4,677 11-20-2010, 07:47 AM
Last Post: kayemsi
  Remote audio player Ron Haley 1 2,068 09-15-2010, 05:31 AM
Last Post: sic0048
  "Double Clicking" a file on a remote pc potts.mike 3 2,589 08-27-2010, 04:03 PM
Last Post: Dean Roddey
  iPad control through Remote Desktop Zanthic 9 5,259 06-12-2010, 10:06 AM
Last Post: Dean Roddey
  Command to change overlay on a remote IV? robolo 7 3,330 10-25-2009, 05:27 PM
Last Post: robolo

Forum Jump:


Users browsing this thread: 1 Guest(s)