Voice Commander

Plugins Voice Commander

TLDR;
  1. Load "AAM Voice Commander.cs" Plugin
  2. Yell at Buttons

Do you often find yourself in scenes filled with buttons, and you wish you could just use your voice to control everything?

Well, now you can!

1677651642600.png


Voice Commander is a plugin that inspects a scene for all buttons, adding their text as keywords into a speech recognition system, then invokes their action(s) when you say their keywords. The scene doesn't need to be made with this in mind; it just needs to use buttons with text that you can reasonably say. All you have to do is add the plugin, and it'll take care of everything else for you.

Instructions
Load the "Voice Commander Demo" scene and follow along with the in-scene instructions to experience Voice Commander's abilities by navigating through a few sub menus using only your voice.

To utilize Voice Commander in other scenes, simply add the "AAM Voice Commander.cs" plugin to a session, scene, or object. I like to add it as to my session plugin default presets, so it's always active for all scenes, and I can easily toggle it off as needed for any scenes that implement their own speech recognition.

The plugin will immediately inspect the entire scene for any buttons and register their keywords. The plugin will also reinspect the scene for buttons any time it invokes a button, after a scene loads, and at any time if you speak the phrase "Refresh Keywords". You may also optionally enable periodic refreshing or manually trigger a refresh, such as via an action of another button or logic brick.

You can toggle a few logging options in the plugin's UI.
  • Log Keyword Refreshing
    • Logs the full list of keywords every time it refreshes. This can be handy if you're unsure what all it found and which buttons you can control by Voice Commander.
  • Log Keyword Recognition
    • Logs any keywords it recognizes you saying, along with reporting its confidence level.
Words of Warning
  • Note that Unity's speech recognition system only listens to the system default microphone!
  • This plugin works best on scenes with uniquely named buttons that use short and easily spoken snippets of text.
    • If a scene has multiple buttons with the same text visible at the same time, only one of them will be invoked, as there's no reasonable way for the code to know which button with that text you intend to invoke.
    • If a button has a lot of text, special characters, or is otherwise too complex, the speech recognition system may not be able to recognize that.
  • If this plugin is active while another speech recognition plugin is also active, they may conflict.
    • Multiple keyword recognizers are supported, but only one will respond to a specific keyword.
  • If a refresh occurs while you are speaking, that won't be recognized, and you'll need to say it again after the refresh completes.
    • As of version 3, this type of interruption will be avoided as long as the available keywords didn't just change. It now only rebuilds and restarts the recognizer when it actually detects differences in the set of available keywords.
Special Thanks
MacGruber's https://hub.virtamate.com/resources/speechrecognition.6865/ was a major inspiration for this plugin.
Author
AlienAxeMan
Downloads
35,317
Views
35,317
Dependencies
2
Packages
1
Total Size
0.1 MB
Version
4.0
First release
Last update
Rating
4.45 star(s) 11 ratings

More resources from AlienAxeMan

Latest updates

  1. Fixed Re-Enabling

    I fixed a bug where if you disabled and then re-enabled the plugin, it would stop listening...
  2. Optimized keyword refreshing

    I optimized the keyword refreshing, primarily so as to avoid rebuilding and restarting the...
  3. Added External Trigger Exposure, Periodic Refresh Options, and a New Demo Scene

    Upon request I added a manual refresh triggering option: "Refresh Keywords Now" I added a...

Latest reviews

This is great when it works! I have noticed that without fail loading an appearance preset will make the plugin stop working and no amount of reloading fixes it. I have to quit vam and open it again.

Even in the demo Smile scene, you can try it. Opening the scene and saying Smile works. Then loading an appearance preset on the girl will make saying Smile not work at all even when switching to another scene.
Upvote 0
I didn't know there was such an amazing plugin.
I used it in the scene I created this time.
thank you.
Upvote 0
This plugin is by far much easier to use than the method I have been, VoiceAttack passing key presses to a keybinds which in turn activates triggers.

Only down side is I'm having the same issue as some above, it stops working after a very short time and for no reason I can make sense of.
Upvote 0
Works like magic !
Thank you so much for this exllent work !
Upvote 0
This has the potential to be an absolute game changer, but it's not consistently working for me. Seems to work at first, and then stop working. I'll try to give more detail. For sxs4's scenes, that have dozens of numerical buttons, it could be fantastic.
AlienAxeMan
AlienAxeMan
Please pass along any details you discover for any cases it stops working. I've had a few such reports, but not enough details to reproduce it or attempt a fix. I have yet to run into this locally either, and I don't have any good theories yet as to what's happening. I use it all the time for my own and many downloaded scenes, and I've been quite happy with how it's working for me. I just wish I could fix whatever is going on to make it less reliable for a few others.

I found an issue with a previous version where it was improperly handling the disable and re-enable events, but I put in a fix for that with an update, and it is working for me consistently since then. So, keep an eye out if you're doing any disable/enable or reloading of the plugin or anything like that, as something there may yet be the cause for some scenario where it stops working.
Upvote 0
Pretty nice solution for when selecting buttons become an issue with embody
Upvote 0
Nice idea/work
Upvote 0
Amazing, tho.. sometimes it's not working. I Don't know why, maybe because i'm adding new buttons or something else..
AlienAxeMan
AlienAxeMan
I haven't been able to reproduce any issues where it's not working. If you have any details that would help me reproduce that, I'd be happy to investigate and try to address those.
Upvote 0
I give 3 stars for now. becouse it dosnt work at all. my default mic tryed whit usb mic and the Oculus mic. both as standard default mic in windows and Oculus home. and in VAM. Vam is picking up my voice and reqognize it in head audio panel. but the Smile word dosnt change a thing. nothing is happing. tryed also in other scenes. still no respond. ...........................................
AlienAxeMan
AlienAxeMan
I'm sorry it's not working for you. I'm not sure what the issue is there. I just tried it again in a fresh VAM install with only that resource downloaded, and it's still working fine for me. Are you able to get Speech Recognition working with any other resources, such as MacGruber's https://hub.virtamate.com/resources/speechrecognition.6865/ ? Did you click to allow the plugin to run? Did you change any settings in the plugin's UI? Did you load the plugin into more than one place? I'd love to help resolve this, but I could use some more details about your situation.
Upvote 0
Wonderful plugin. I'm experimenting with this in a scene of mine and I'm surprised at how well it works given how little you have to do to get it working.

Would it be possible to make it that the "Refresh Keywords" function can be called through a trigger? In scenes with lots of buttons that appear/disappear based on conditions, you can end up saying Refresh Keywords a LOT. Having a trigger that can be called by buttons or other means would go a long way to making it even better for scene creation.
AlienAxeMan
AlienAxeMan
I'll look into that, as that seems fairly simple. I've also considered just having it auto-refresh every five seconds or so, along with a few other options, as I can't think of any great way to hook up a more direct listener for when a button is enabled/disabled/created/etc.
Upvote 0
Back
Top Bottom