FoxVox Free voice control software for BMS
-
oh wait … looks like there is a System.Speech.Recognition component to .NET Framework? (I mistakenly thought it was all Microsoft.Speech…)
(The original theory behind “System." vs "Microsoft.” distinction was that the former would comprise the universal/portable runtime and base-class libraries … while the latter would be for Windows/Office/whatever proprietary stuff. But that distinction was drawn in the earliest days, when the only portable runtime envisioned was Silverlight. And even so, I recall it became muddy and inconsistent, pretty quick. One probably shouldn’t assume anything either way, based on the the namespace or assembly names. Pretty sure Mono implements a lot of stuff in Microsoft.Win32.* namespace, for example.)
-
mono does not, but you can use winetricks to install native SAPI5. I’ve been working with that to try get a System.Speech method working (in vatSys, an air traffic control client for Vatsim).
As regards the keypress stuff, I’m not entirely sure sorry.
-
FoxVox pre-release update for those following:
It’s been a busy week since the release to initial beta testers. Here’s what’s happening:
New features:
- Added on-the-fly command alias creation. You can now create a voice command to add aliases that aren’t hard coded into the library. This is useful for changing a command like “AWACS request picture” to “Sentry request picture” for a more realistic feel. It can also make commands faster/easier for mission-specific operations.
- Added a customizeable language dictionary for better recognition support, particularly for listing possible aliases. It works like the assisting phrases on individual commands but global in scope and easier to manage.
Latest developments:
- Thanks to airtex2019 and his recent code contribution, getting joystick/mouse input into the software looks promising for the very near future rather than later. This means having voice and joystick mapping all in one. This also would include a requested Push-to-Talk feature. I’ll know more about this as things develop.
I haven’t received any feedback from beta testers on producing a good quality BMS voice command library yet. Maybe I need some more help. Let me know if you’re interested in assisting the project in creating a good voice command file.
Still looking for the right home to host the released app but I’ve got some things in the works. We’ll see. Current target release date is September 17.
-
Current target release date is September 17.
It is against BMS dev culture and forum etiquette to promise release dates for anything … everything will release “in 3 or 4 weeks”.
-
It is against BMS dev culture and forum etiquette to promise release dates for anything … everything will release “in 3 or 4 weeks”.
:amen:
-
Welcome aboard Foxster … always great to have more hobbyist-developers in the community!
FoxVox looks really nice. What’s it built with?
Pros / Cons vs VoiceAttack, apart from license cost?
GitHub is probably the default medium for releasing software these days. There’s a mini-ecosystem of BMS tools there, probably Alternative Launcher is the most popular.
But for things that can’t / don’t want to be open-source, just throwing a zip file onto Google Drive or Dropbox … or an AWS Cloudfront / S3 bucket, is also somewhat common.
There is another piece of software that works well also. It is free and can be used to set up functions like in VoiceAttack. https://www.voicemacro.net/
-
Great, However there was already a freeware Voice key interaction Program called Voicemacro which is very feature packed (edit failed to see the comment above mine so only just reiterated)
-
That’s fantastic news foxster, also many thanks to airtex for his contribution (and of course all the busy testers here :))
“push to talk” or “listen while pushing” rather is a feature I personally cannot do without (I have it mapped to pinky / comms switch forward at the moment) and it’ll make your tool a serious contender in the voice recognition department in my book. I really like its ease of use and the clean interface design.
Thanks for all your hard work & keep it up, it’s much appreciated!
Uwe
-
I think there’s room for a BMS-specific app … things like PTT functionality, and also builtin list of synonyms (“Chalice”, “Sentry”, “Cyborg” etc) or maybe just prefixes to ignore.
Maybe use BMS callback-names/descriptions for the mappings, and parse the current keyfile to know which key sequences to emit, at run-time.
-
Wait – hoover, are you saying it does run ok on Wine?
-
Well done for your work,
As indicated by Airtex2019 a software which takes into account the names of the BMS commands will be a big plus. -
Wait – hoover, are you saying it does run ok on Wine?
Sorry, I’m still running BMS on win10 for “production”. Migrating my setup over to Linux is a bit of a side project
-
As indicated by Airtex2019 a software which takes into account the names of the BMS commands will be a big plus.
Probably a lot of work for very little gain, now that I think about it. Many of the tower/approach/carrier comms don’t even have callbacks defined. eg. the radio menu for “call the ball” is always going to be some key sequence like [T,T,T,T,T,T,4]
Maybe the “T” can change (probably not common) but the number of reps and the id number of the menu item, won’t.
So, just shipping a good default library config with all of these radio menus prepopulated, with default key bindings, is probably 90% of the battle.
-
↑ Thank being said, it is entirely possible that the number of reps and id number of a given command could change or move around, so best to build in a means to patch/update to reflect new radio command menu changes in future releases. When I started VoiceAttack profile(s) for BMS, several current radio menu commands did not exist, and had to be added in later but luckily easily having planned ahead.
(forgive me if I’m stating the obvious here, just tossing out my thoughts having done this for awhile now)
In my personal experience, folks really appreciate it when they don’t need to go back to your source and download/manually update software, so any time you spend building in a patch updater for minor or not-so-minor changes is well worth it!! In fact, if you want most of your users to be using your latest builds, you should build in some sort of update notification system at the very least - it’s a funny thing, but you have no idea how many users will keep up with an older version for simple reasons such as lack of coming back to the source or simply not knowing there is an update/better version.Also, BMS Updates happen ‘out of the blue’, so be ready to drop what you’re doing and patch up your software, and hopefully using an easy system you designed previously in anticipation (like, make it easy to update without having to visit many different pages of code or edit many functions), maybe use a table in one location, for example. If this can exist outside the compiled program, such as a flat config file and/or as part of a patch update system, you can handle changes in BMS without having to rebuild your software, instead just editing a few items in a config/table and pushing a patch out to users next time they load your software. Saves you a lot of time, especially when life is a bit too busy to drop everything and dive back into code.
Best wishes and good luck with your project!!!
(edit: Windows Speech Recognition pro tip #42 - “homophones”)
-
It is against BMS dev culture and forum etiquette to promise release dates for anything … everything will release “in 3 or 4 weeks”.
I am Sooooo Sorry, not just to BMS but programmers everywhere! please let me rephrase that. Anticipated release is TBD in the near future. Shouldn’t be more than a couple of weeks. No dates…you didn’t see that. (hope I don’t get banned :eek:)
-
Nice work Foxster.
3-4 weeks everybody understands here, it means it’s ready when it’s ready.
All the best with vour very interesting take on voice control, keep us all updated please. -
After another busy weekend, aliases and push-to-talk functionality is up and working. Here’s a couple short vids that show the new features. Still polishing for the release, but getting there…
-
I have added the download link to the initial thread post, but I forgot - here is a link to download a starter library for BMS. I’ll leave it up for a while. I know it could use some tweaking but better than starting from scratch :D. The commands are all BMS default except maybe for the arrow keys - I needed radar slewing mapped to a hat input but it was ‘sticking’ whenever alt key was used (I think it’s a joy2key problem). Be sure to verify ICP DCS up/seq/down/rtn. I switched them up, but otherwise everything’s BMS default. You can always configure FoxVox any way it works best for you. Enjoy the weekend and happy flying!
https://drive.google.com/drive/folders/1hDaB0ctCedqv67wDet4vMoFuzvUz2Ro0?usp=sharing
Main app:
https://foxster.itch.io/foxvox -
*** In answer to a question ***
To map a joystick button for push-to-talk go to Settings (Cog wheel to the right of the library name just underneath the toolbar) > Push-to-Talk. When the input capture window comes up, just press all buttons that you want to use. They should show up in the capture window, then click OK. FYI, the joystick capture will only pull in buttons currently, not analog inputs or HAT elements. I could in the future if there was any demand for it but it seems odd.
As for adding “Three” voice command for Element, select the ‘Element’ command group on the left, click the + (add new command) button at the top, then add a new voice key with “Three” as the required command. This will require that you say “Element Three” in order to execute it.
-
I just tried mapping the “push to talk combo” in the latest version but it seems foxvox fails to pick up any button on my HOTAS Warthog (2 separate DX devices, no TARGET). It sees the buttons on my g25 shifter (connected via Leo bodnar adapter) but that’s about it, nothing else is recognized. Here’s my device list if it helps:
And here’s my devicesorting.txt file from BMS:
{0402044F-0000-0000-0000-504944564944} "Joystick - HOTAS Warthog" {0404044F-0000-0000-0000-504944564944} "Throttle - HOTAS Warthog" {10A01DD2-0000-0000-0000-504944564944} "Logitech® G25 Shifter" {B351044F-0000-0000-0000-504944564944} "F16 MFD 1" {B352044F-0000-0000-0000-504944564944} "F16 MFD 2" {B65E044F-0000-0000-0000-504944564944} "Thrustmaster T500 RS Racing wheel"
The combo I would like to use is Warthog Stick pinky & warthog throttle COMMS switch forward, I hope that’s possible.
All the best & thanks for your support!
Uwe