Author Topic: Set an output device for TTS and sound, rather than to default device  (Read 6975 times)

redion1992

  • Guest
I use VoiceAttack with iRacing, and use a headset for voice chat and important information, while any game audio goes to a separate set of speakers. However, I have the speakers as the default audio device, which means that the TTS output from my commands is sent there. I'd like to be able to set a device in VoiceAttack myself, and have all audio it produces go there, rather than to the speakers where it's somewhat lost in the engine noise.


EDIT by Pfeil: Individual TTS actions can be set to output to a given device, and the "Override Default Text-to-Speech Device" option can be used for all TTS actions that are set to use the default device.
« Last Edit: April 18, 2020, 09:12:30 AM by Pfeil »

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 2827
This is something that is in the works, but it is not on the top of the priority list at the moment.  I'd like to also be able to do what you are describing, so at some point it will be done.

redion1992

  • Guest
Cool, good to hear it's in the works, at least. For now, there's a workaround by basically reversing the output feeds, setting Headphones as default and having iRacing force engines over speakers rather than Speakers as default and forcing voice chat over headphones. It just doesn't scale so well to doing anything else on the computer :P

axonMagnus

  • Jr. Member
  • **
  • Posts: 62
Greetings sir am relatively new to programming but i came up with a solution none of them are stable but they sure bring in some very nice features to solve this challenge of yours! , i was just about to post about this feature to be implemented along with being able to ask voice attack to change the voice of all tts one of the things i have also accomplished too but rather crudely.

[1]

Quote

there is a program called "chevolume"  [not free] it lets your force an application to output audio to preferred audio devices or virtual cables! This is the simplest solution to the challenge of yours :).


[2]

Quote

There is software called "Balabolka" a text to speech software more extensive than voice attack it terms of controls , and with [CRT+SHIFT+F9] it reads  the text in your clip board or reads highlighted text :).

Now for the icing on the cake! balabolka also has 4 shortcuts you can use to switch between the different  text to speech voices!.

thanks to the gentleman that is "Gary" he helped me out a while back coz voice attack/balabolka  would sometimes crash when interfacing with each other making it very reliable!

Now for the catch! as i am reletively new to programming! , i didnt put a process in place to detect if i had sent balabolka to read out loud or status of the reading there for , if you sent consequtive commands of TTS it ends up jamming balabolka! meaning you have to open it up then press stop and in my case i put a keyboard short to stop it because it just jams in the TTS process! :)

i made an extensive overview of my voice attack setup , watching it you will better understand the benefits of this system untill its implemented :)

https://www.youtube.com/watch?v=jBm5J4CiFWA&t=1637s

Robertsmania

  • Newbie
  • *
  • Posts: 46
Re: Set an output device for TTS and sound, rather than to default device
« Reply #4 on: August 25, 2017, 11:25:31 AM »
I would also like to request this feature.

I stream iRacing in VR and have a complicated audio setup.  Having the output from Voice Attack go through the default windows device is not what I want.

I use Che-Volume to re-direct the audio from various applications, but for some reason it does not work consistently with Voice Attack.  Che-Volume is not ideal in general and no longer seems to be actively supported, but I've submitted a support request with them as well (but am not holding my breath).

I purchased VoiceAttack to activate the import profile features and install Digital Race Engineer before discovering that it was limited to only working with the default audio device.  I'll keep fiddling with Che-Volume a bit and digital audio cable to see if I can come up with a stable work around, but having your application directly support audio device selection would be much better.

Thanks!

Robertsmania

  • Newbie
  • *
  • Posts: 46
Re: Set an output device for TTS and sound, rather than to default device
« Reply #5 on: August 25, 2017, 04:12:12 PM »
I found that running Voice Attack as administrator is what was messing up Che Volume.  If I run both as administrator, then it does work and I can re-direct the audio. 

But I found the Speech Properties control panel applet where you can change the voice - and see that there are audio output options there.  If I use the Advanced button to send the voice to my Rift headphones it works for the preview on that dialog box - but Voice Attack still goes through the default audio.

I've tried the other Audio options in Voice Attack (Legacy  Audio and Integrated Components) but neither of those seem to respect the Speech Properties setting.

It would be great if there was a Voice Attack option to use the Speech Properties audio device - but I'm sure there are technical reasons why its not that simple?


Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 2827
Re: Set an output device for TTS and sound, rather than to default device
« Reply #6 on: August 25, 2017, 05:23:23 PM »
Unfortunately, I have found that (just like you've stated) it doesn't matter what the Windows default TTS output is set to... the TTS output will always go to the default output device.  Not sure what the next steps should be on that :(

Pfeil

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 4759
  • RTFM
Re: Set an output device for TTS and sound, rather than to default device
« Reply #7 on: August 25, 2017, 06:21:59 PM »
It's Microsoft's implementation imposing the limitation here. The SpeechSynthesizer class does not offer a method to output to any device directly aside from the default one.

The only way to output to any other device would be to render to memory first, then play the result using VoiceAttack's built-in audio playback capabilities.
The issue with this is that it's not real-time, which means none of the events that are usually raised by the SpeechSynthesizer object would fire while the audio is actually playing.

Gary

  • Administrator
  • Hero Member
  • *****
  • Posts: 2827
Re: Set an output device for TTS and sound, rather than to default device
« Reply #8 on: August 25, 2017, 06:43:33 PM »
I could probably pipe it through a stream and on out through the selected device, but that would require a significant undertaking just to get around the implementation o_O.