FoxVox Free voice control software for BMS
-
I’m no expert in this regard but I think it’s not so easy to use other speech recognition engines when they differ from what windows considers your OS language. I know that voice attack has an option to use alternate engines, but I have no idea if that would allow running the GUI in one language and the speech recognition in another.
Typical Microsoft brain damage if you ask me, sorry I cannot offer any further advice at the moment. I run win10pro in English, and one might argue that with English being the international aviation language anway, a well-versed Viper pilot should have no issue with this. I for one would rather not use voice recognition than having to command my AI folks around in German, this would sound really silly
When I was still on win7 which didn’t allow switching languages unless you went enterprise I half managed to train the voice recognition software to accept spoken english input, mostly by lots of training sessions and excluding the german words it “recognized” instead.
All the best,
Uwe
-
@hoover said in FoxVox Free voice control software for BMS:
I’m no expert in this regard but I think it’s not so easy to use other speech recognition engines when they differ from what windows considers your OS language. I know that voice attack has an option to use alternate engines, but I have no idea if that would allow running the GUI in one language and the speech recognition in another.
Typical Microsoft brain damage if you ask me, sorry I cannot offer any further advice at the moment. I run win10pro in English, and one might argue that with English being the international aviation language anway, a well-versed Viper pilot should have no issue with this. I for one would rather not use voice recognition than having to command my AI folks around in German, this would sound really silly
When I was still on win7 which didn’t allow switching languages unless you went enterprise I half managed to train the voice recognition software to accept spoken english input, mostly by lots of training sessions and excluding the german words it “recognized” instead.
All the best,
UweWe have seen that it is very complicated, even in my case I have the version of win10 SL, which only supports a single language and even so to change the language in the graphical interface it takes entering the register and other somewhat delicate issues.
The same here we want to say the orders in English, but we find this incumbent. We have even tried to train the detection engine but it does not work when it is from one language to another.
So we are still in combat.
Greetings.
-
@viper-0 I’m happy to be able to share something with a great community where there are a lot of others doing the same. I always felt that there would be a demand to support multiple languages but I never got around to testing it. Thanks for letting me know about your experience.
I will take a look at making culture recognition more robust and flexible so they can be assigned and match between the graphical interface and speech recognition modules. I also have to consider what happens with mixed languages also as that may be important, particularly with BMS. Keeping in mind that the tool is only a couple months old and I wanted to get a release out sooner rather than later, I couldn’t address everything up front but I’ll certainly take a look at this and keep you notified.
Thanks for the great feedback, and best wishes!
-
@foxster We really like to exhort all those who give a little bit of their life to support and strengthen this community of military aviation simulation and much more when we are offered such a high quality simulator made from the heart.
So as a representative of my community in my country and my name, we thank you for every minute of your time invested in this wonderful community.
Greetings from the Caribbean.
-
@viper-0 Here’s a screenshot of the new language recognition settings in the v1.2 Beta. The language setting is stored within each library file. You’ll get an error message if you set a language that is not installed whenever voice recognition is started. Hopefully this moves it in the right direction for our multi-national community!
Once it’s through Beta I’ll get it pushed out to everyone. Best Regards.
-
@foxster said in FoxVox Free voice control software for BMS:
@viper-0 Here’s a screenshot of the new language recognition settings in the v1.2 Beta. The language setting is stored within each library file. You’ll get an error message if you set a language that is not installed whenever voice recognition is started. Hopefully this moves it in the right direction for our multi-national community!
Once it’s through Beta I’ll get it pushed out to everyone. Best Regards.
Excellent, really very happy here for such good news.
Anxiously waiting for the beta to pass to get our hands on it.
Greetings, pilot.
-
@hoover / @VIPER-0 Thanks for trying this out. I’m experiencing an error as well - unable to use an installed language pack. The problem is that Windows doesn’t seem register the installed language pack in a way the System.Speech libraries expect to see it. I’ve attached a screenshot showing two languages installed on a computer with all options including SR but only the English language engine is registered on the machine (see the Registry key and Windows folder structure in the attached image). Apparently there has been a change in Windows 10 with the way language packs are installed and used.
I don’t know exactly what MS is doing with speech recognition, but I think things have become messy after Cortana. Since the installed language isn’t registered as an engine to the system, the Recognition Engine throws the exception and the user is unable to use that language. Further investigation will be required but until I can find a way to use the installed languages, all I can do is limit the language options select list to only display those that will work.
-
@foxster said in FoxVox Free voice control software for BMS:
@hoover / @VIPER-0 Thanks for trying this out. I’m experiencing an error as well - unable to use an installed language pack. The problem is that Windows doesn’t seem register the installed language pack in a way the System.Speech libraries expect to see it. I’ve attached a screenshot showing two languages installed on a computer with all options including SR but only the English language engine is registered on the machine (see the Registry key and Windows folder structure in the attached image). Apparently there has been a change in Windows 10 with the way language packs are installed and used.
I don’t know exactly what MS is doing with speech recognition, but I think things have become messy after Cortana. Since the installed language isn’t registered as an engine to the system, the Recognition Engine throws the exception and the user is unable to use that language. Further investigation will be required but until I can find a way to use the installed languages, all I can do is limit the language options select list to only display those that will work.
Immensely grateful for all the effort and dedication.
We are here testing the beta we will send you news after we meet and make the conclusions.
Greetings.
-
Downloaded and installed this tool today. Thank you very much for writing it and publishing it!
However, I ran into the following problem at startup:
===group
The system cannot find the file specified Inner Exception: Empty at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo) at System.Diagnostics.Process.Start(ProcessStartInfo startInfo) at FoxVox.Models.Voice.Recognizer.e1yoi3edaC0Ejy0xGw8(Object ) at FoxVox.Models.Voice.Recognizer.ToggleRecognition() at FoxVox.Models.Voice.Recognizer.StartRecognition() at FoxVox.MainWindow.<Window_Loaded>d__11.Vib36LqQGZMr8GDqh3Y(Object ) at FoxVox.MainWindow.<Window_Loaded>d__11.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
===
Windows Speec Recognition is enabled and I’ve also downloaded the speech recognition pack for English US.
Not sure what triggers this exception, but maybe you can tell from the stacktrace. -
@kungfoo Hmmmm, nope, you’ve uncovered a new one. What OS and .net versions are you running? First time install? Do you get this error when launching the app? Thanks, and sorry for any issues…I’ll do my best to find the culprit!
-
This is a first time install.
This is what is listed by this tool:
https://github.com/jmalarcon/DotNetVersions/releases/tag/v1.0.0Currently installed "classic" .NET Versions in the system: 2.0.50727.4927 Service Pack 2 3.0.30729.4926 Service Pack 2 3.5.30729.4926 Service Pack 1 4.0.0.0 4.8.04084
-
@kungfoo Win 10?
-
Yup. Culture is EN (US) and that language pack is also installed.
-
It’s probably obvious to everyone, but it took me a while to find the function where I can assign sounds to indicate voice recog. is active / inactive (I prefer push to talk over “always on”), so I thought I share my discovery here:
Under “push to talk” in the “cogwheel” section, there are two little speakers where you can assign sounds that indicate that VR is active and also when VR goes inactive.
Great addition foxster, thanks your hard work!
All the best,
Uwe
-
@foxster This is VERY cool, thank you for developing and sharing!
(Edit: I did not understand the pause/resume properly. They toggle voice recognition on/off entirely. I thought they would allow for ignoring parts of a phrase as the example below.)
I have watched the videos and jumped into the deep end first. I tried to make the tool handle a spoken phrase such as this one, which should lead to a keypress sequence of “T-T-5”:
This would be said verbatim:
“Kunsan Approach, Spade 1, Two-ship F-16s, North, 25 miles, Request runway for overhead approach”
Highlighting the operative words in brackets, everything else is irrelevant:
Kunsan [APPROACH], Spade 1, Two-ship F-16s North, 25 miles, [REQUEST] runway for [OVERHEAD APPROACH]
I could not manage to set that up with Pause and Resume keywords, so I tried a simpler phrase, verbatim :
“Kunsan Approach, Request overhead approach”
It recognizes my phrase as you can see from the screenshot, but problem is that I do not get my T-T-5 command. I have set up Pause and Resume keywords like this:
It works if I remove Pause+Resume words and changes the voice key for the voice command group to “Kunsan Approach”. But that makes it less fluent to state the command.
I might very well be approaching the Pause/Resume the wrong way. If not, would it be possible to add a list of ignore single words, eg. “Kunsan”, such that the first recognized operative word that is parsed is “Approach” ?
Please advice, cheers
-jb -
@jayb Your issue is it’s not locking onto the voice group because the phrase is probably configured to only start with ‘Approach’. To get onto a voice group properly, it must recognize the first phrase in the group, kind of like ‘Alexa, do this’. Needs to start with ‘Alexa’. In your case you should just allow Approach OR Kunsan to get you onto the group key. Then you can say ‘Kunsan’, ‘Approach’, or ‘Kunsan Approach’ together and all will work. The flexibility makes it easy to say it in various fashions so you’re not locked into the same exact speech - feels more natural, but it does need to be set up that way.
Here’s a screenshot
You could also just type in ‘Kunsan Approach’ as one word and it would require both to be said. I think the first way is more flexible/better results.
-
FYI to anyone interested, version 1.2 will be out shortly and it includes the ability to run any windows shell command (launch exe, run bat file, or open a file that has an associated app) on the output command. You can open a pdf or run a program with a voice command in addition to sending keystrokes. Also it will support switching to a different library if you’d ever want to do that. I’m just wrapping it up… should post sometime tomorrow.
-
@hoover Also, just in case you didn’t know, if you right-click the speakers you can delete the associated sound. I really need to get around to a manual or some built-in instructions, but it’s just one more thing to update that only a few would probably read anyway. Thanks for pointing out the tip @hoover!
-
@foxster I think I should go with “Kunsan Approach” as one word, since there is also Kunsan Tower and Kunsan Ground in comms later on.
The recognized phrase in the log window, is that what you get as input and then you dictionary your way through voice keys? If so then you could have ignore words as a feature too
Edit: I reread this and I do not mean to harass for new features. You do what you like with your tool which is already excellent. I am especially impressed with the UI, so modern, very neat
-
-
@jayb FoxVox supports ignore words already…just click on the circle to the left of it and it becomes a block word
Actually I should distinguish between ignore and block as both are supported. One thing I failed to mention was the way I use it. While in preflight I just add an alias to the tower command for the airport I’m flying out of. One of my Youtube videos shows how to do it, but it doesn’t mention that you need to push the buttons if Push-to-talk is assigned when creating temporary aliases.
No worries about any suggestions. The tool isn’t perfect. I don’t take recommendations as criticism.
Edit: Also to add one more detail, you can also simply map a PTT button to the group and leave off any voice keys. Then you can say anything you want as long as the PTT button is pressed. The PTT button alone is enough to activate the group. That way it works just like real life…you’re just talking on the radio at that point and if any command is recognized on that group it will be executed. The only thing to watch out for is if you map other groups to the same PTT button/combo - in that case it will not be able to identify which group to use and the first one will be selected by default - a great scenario for blocking words though which still work (i.e. if it hears ‘Tower’ it won’t engage ‘Ground’ or ‘Approach’). There’s a lot of flexibility and several ways to hopefully get the results you want.