Jump to content
Mpstark

Articulate: Squad Voice Command Utility for Arma 3

Recommended Posts

btw. i really like this (and some other voice control mods)

Share this post


Link to post
Share on other sites

I've been playing around with this for the better part of the morning - if you use AI squads a lot (or even a little) it is definitely work having a look at.

Really responsive, no great problems with voice recognition, and its nice to not have to pause for long periods between words.

Great job guys, really love this , and looking forward to seeing where you take it.

Share this post


Link to post
Share on other sites

just started playing through the adapt campaign and realized Articulate is a must-have tool for stealthy missions.

Share this post


Link to post
Share on other sites

I just got articulate but i cannot figure out how to work it. How do i get arma 3 to start using articulate, because it does not work when i just open up arma and start playing with articulate online. Help PLZ.

Share this post


Link to post
Share on other sites

This works surprisingly well, even with my really weird and mixed accent.

I just wish the AI wasn't so bad, nevertheless, it's pretty neat!

I'll try to find a list of commands and their synonyms...

Share this post


Link to post
Share on other sites

finally a voice command for arma!! No need to use expensive external programs for that :o

Share this post


Link to post
Share on other sites

Feedback

- Did the installer work?

Perfectly

- Did the voice recognition work for you?

Intermittently

- What kind of accuracy did you get?

When it worked, it knew what I wanted. Often, nothing would happen.

- Do you have any sort of accent that could have affected the results?

Buffalo NY generally accepted as a "normal" accent.

- Did you try training the speech recognition?

Yes.

- Are there default phrases that do not make any sense for some commands?

No.

- Are there any phrases that you think should be put in by default for a command?

Not that I'm thinking of right now.

- What are some macros (multiple commands tied to a single spoken phrase) that you think would be cool?

Ordering units into specific vehicle positions and ordering sync-shots.

- What settings/options would you like there to be?

Support for additional mouse buttons as a hotkey. (eg Mouse 4)

Overall, need a better response. Accuracy was fine, but I often had to repeat myself many, many times to get anything to happen at all. Also, GUI is wonky on a 1080p resolution.

Share this post


Link to post
Share on other sites

Is this still getting developed? I used this with the united we stand mini campaign and found it reallly good to use and alot better than VAC. Any update on dev progress at all?

Share this post


Link to post
Share on other sites

i hope so, this was really great project ...

Share this post


Link to post
Share on other sites

Working really well for me, once I went through the training for the Windows voice recognition (didn't work at all before that, as you would probably expect).

Not only does it make things much easier to control, it makes such a great difference to the immersion in the game. If only the AI was a bit better at doing what you told them!

BIS should really be picking this up and adding it into the game - please keep developing it, especially now that you must be finished with University!

Share this post


Link to post
Share on other sites

I'd be so happy if this project would be continued developing, since VAC is somewhat slow at times but has all the features that I currently miss in Articulate especially setting my own commands.

Share this post


Link to post
Share on other sites

I am using the latest source and am wondering how on earth to add a map button, I have tried a few things in the Subject.cs because that's where I assume the main area would be?

I can add it to the command section thus saying "squad map" and the program selects the squad then opens the map but I just want it to open the map without the "squad" at the start lol.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Speech.Recognition;
using System.Speech.Recognition.SrgsGrammar;
using System.Diagnostics;

namespace Articulate
{
   class Subject : CommandChunk
   {
       public Subject()
       {
           GenerateRuleList();
           GenerateKeyLookup();
       }

       private void GenerateRuleList()
       {
           RuleList = new List<SrgsRule>();

           // SQUAD SELECTION
           SrgsItem one = GetNewNode(new string[] {"one"}, "ONE");
           SrgsItem two = GetNewNode(new string[] { "two" }, "TWO");
           SrgsItem three = GetNewNode(new string[] { "three" }, "THREE");
           SrgsItem four = GetNewNode(new string[] { "four" }, "FOUR");
           SrgsItem five = GetNewNode(new string[] { "five" }, "FIVE");
           SrgsItem six = GetNewNode(new string[] { "six" }, "SIX");
           SrgsItem seven = GetNewNode(new string[] { "seven" }, "SEVEN");
           SrgsItem eight = GetNewNode(new string[] { "eight" }, "EIGHT");
           SrgsItem nine = GetNewNode(new string[] { "nine" }, "NINE");
           SrgsItem ten = GetNewNode(new string[] { "ten" }, "TEN");

           SrgsOneOf squadNumbersChoice = new SrgsOneOf(one, two, three, four, five, six, seven, eight, nine, ten);
           SrgsItem squadNumbersConcatChoice = new SrgsItem(squadNumbersChoice, new SrgsItem(0, 1, "and"));
           squadNumbersConcatChoice.SetRepeat(1, 10);
           SrgsRule squadNumbers = new SrgsRule("squadNumbers");
           squadNumbers.Add(squadNumbersConcatChoice);
           RuleList.Add(squadNumbers);
           SrgsRule squadMembers = new SrgsRule("squadSelections");
           squadMembers.Add(new SrgsRuleRef(squadNumbers));
           squadMembers.Add(new SrgsSemanticInterpretationTag("out=rules.squadNumbers;"));
           RuleList.Add(squadMembers);

           // TEAM
           SrgsItem red = GetNewNode(new string[] { "red" }, "RED");
           SrgsItem yellow = GetNewNode(new string[] { "yellow" }, "YELLOW");
           SrgsItem white = GetNewNode(new string[] { "white" }, "WHITE");
           SrgsItem blue = GetNewNode(new string[] { "blue" }, "BLUE");
           SrgsItem green = GetNewNode(new string[] { "green" }, "GREEN");

           SrgsOneOf teamColorsChoice = new SrgsOneOf(blue, green, white, yellow, red);
           SrgsRule teamColors = new SrgsRule("teamColors");
           teamColors.Add(teamColorsChoice);
           RuleList.Add(teamColors);

           SrgsRule teams = new SrgsRule("teams");
           teams.Add(new SrgsItem("team"));
           teams.Add(new SrgsRuleRef(teamColors));
           teams.Add(new SrgsSemanticInterpretationTag("out=rules.teamColors;"));
           RuleList.Add(teams);

           // ALL
           SrgsItem allItems = GetNewNode(new string[] { "all", "everyone", "team", "squad" }, "ALL");
           SrgsRule all = new SrgsRule("all");
           all.Add(allItems);
           RuleList.Add(all);

           // MAP
           SrgsItem maps = GetNewNode(new string[] { "map", "mab", "map", "mab" }, "MAP");
           SrgsRule map = new SrgsRule("map");
           map.Add(maps);
           RuleList.Add(map);

           // ALL TOGETHER NOW
           SrgsOneOf subjectChoice = new SrgsOneOf();
           subjectChoice.Add(new SrgsItem(new SrgsRuleRef(teams)));
           subjectChoice.Add(new SrgsItem(new SrgsRuleRef(squadMembers)));
           subjectChoice.Add(new SrgsItem(new SrgsRuleRef(all)));
           subjectChoice.Add(new SrgsItem(new SrgsRuleRef(map)));

           SrgsRule subject = new SrgsRule("subject");
           subject.Add(subjectChoice);

           RootRule = subject;
           RuleList.Add(subject);
       }

       private void GenerateKeyLookup()
       {
           KeyLookup = new Dictionary<string, List<OutputBase>>();

           var one = DirectInputEmulator.KeyPress(DirectInputKeys.F1);
		var two = DirectInputEmulator.KeyPress(DirectInputKeys.F2);
		var three = DirectInputEmulator.KeyPress(DirectInputKeys.F3);
		var four = DirectInputEmulator.KeyPress(DirectInputKeys.F4);
		var five = DirectInputEmulator.KeyPress(DirectInputKeys.F5);
		var six = DirectInputEmulator.KeyPress(DirectInputKeys.F6);
		var seven = DirectInputEmulator.KeyPress(DirectInputKeys.F7);
		var eight = DirectInputEmulator.KeyPress(DirectInputKeys.F8);
		var nine = DirectInputEmulator.KeyPress(DirectInputKeys.F9);
		var ten = DirectInputEmulator.KeyPress(DirectInputKeys.F10);

		var red = DirectInputEmulator.KeyPress(DirectInputKeys.Shift, DirectInputKeys.F1);
		var green = DirectInputEmulator.KeyPress(DirectInputKeys.Shift, DirectInputKeys.F2);
		var blue = DirectInputEmulator.KeyPress(DirectInputKeys.Shift, DirectInputKeys.F3);
		var yellow = DirectInputEmulator.KeyPress(DirectInputKeys.Shift, DirectInputKeys.F4);
		var white = DirectInputEmulator.KeyPress(DirectInputKeys.Shift, DirectInputKeys.F5);

		var everyone = new List<OutputBase>();
		everyone.Add(DirectInputEmulator.KeyPress(DirectInputKeys.Tilde));

           var maps = new List<OutputBase>();
           maps.Add(DirectInputEmulator.KeyPress(DirectInputKeys.M));

           // SQUAD SELECTION
		KeyLookup.Add("ONE", new List<OutputBase>() { one });
		KeyLookup.Add("TWO", new List<OutputBase>() { two });
		KeyLookup.Add("THREE", new List<OutputBase>() { three });
		KeyLookup.Add("FOUR", new List<OutputBase>() { four });
		KeyLookup.Add("FIVE", new List<OutputBase>() { five });
		KeyLookup.Add("SIX", new List<OutputBase>() { six });
		KeyLookup.Add("SEVEN", new List<OutputBase>() { seven });
		KeyLookup.Add("EIGHT", new List<OutputBase>() { eight });
		KeyLookup.Add("NINE", new List<OutputBase>() { nine });
		KeyLookup.Add("TEN", new List<OutputBase>() { ten });

           // TEAM SELECTION
           KeyLookup.Add("RED", new List<OutputBase>() { red });
           KeyLookup.Add("BLUE", new List<OutputBase>() { blue });
           KeyLookup.Add("YELLOW", new List<OutputBase>() { yellow });
           KeyLookup.Add("WHITE", new List<OutputBase>() { white });
		KeyLookup.Add("GREEN", new List<OutputBase>() { green });

           // ALL
           KeyLookup.Add("ALL", everyone);
           KeyLookup.Add("MAP", maps);
       }
   }
}

Share this post


Link to post
Share on other sites

Am I really the only other person, apart from the original team, that is still looking at this to add extra things?

Share this post


Link to post
Share on other sites

I wish

the original team

would be

still looking at this to add extra things

in general. [...]

It seems like the devs of this mod lost the interest and doesn't bother to put a simple message out here so yeah, kinda lost... Unfortunately.

However, if you find a way to include custom commands reliably, please enlighten us. :)

Share this post


Link to post
Share on other sites

Well it's easy enough to add things if you want to include saying "squad" first, such as "squad map" selects squad then opens the map BUT if like me you want to say something like "squad map, go to" because the "go to" part which I added does not work like that so it's a case of saying "squad map" "squad" "squad move to".

Basically it means saying "squad" more times than you should need to. Otherwise opening the map I have added just you need to say "squad map". I just added the next bit of code to the CommandPool.cs after the command for nextwaypoint

            // Move to (10)
           Command moveTo = new Command("MOVETO", new string[] { "move to", "move", "move there" }, new [] { DirectInputEmulator.KeyPress(DirectInputKeys.Space) }, subjectRef);
           commandObjects.Add("MOVETO", moveTo);
           commandSet.Add(moveTo.Item);

           // Map (11)
           Command map = new Command("MAP", new string[] { "map" }, new[] { DirectInputEmulator.KeyPress(DirectInputKeys.M) }, subjectRef);
           commandObjects.Add("MAP", map);
           commandSet.Add(map.Item);

Saying "Squad move to" does what it says.

Edited by WHITELIONX

Share this post


Link to post
Share on other sites

I just seem to get a load of bugs.

For me it keeps minimising Arma to the desktop and also makes my player randomly fire his gun at the ground.

I did the training plus the advanced stuff.

Also I can't seem to switch off the bleeps in the Speech Recognition software. It bleeps at me every time it doesn't understand. I unchecked Play Audible Feedback in the options but it still does it. I googled it and apparantly you can't switch this off. Do you guys getting continual bleeps in your earpeice?

Thanks.

---------- Post added at 20:05 ---------- Previous post was at 19:55 ----------

The command that makes my player fire his gun is 'All regroup'. Sometimes he suddenly swings around and fires at a random angle, other times he just looks down his sight. :confused:

Is this software still supported? I might have to download VAC after all.

Share this post


Link to post
Share on other sites

You're actually better off with getting the actual source, you can edit it to your liking then.

Edited by WHITELIONX

Share this post


Link to post
Share on other sites

I know this thread is a bit dead, but has anyone had any luck with Articulate and the AGM Mod? Articulate works great, but when I add AGM into the mix I can only get units to be selected, they do not follow any commands..

Thanks!

Sten

Share this post


Link to post
Share on other sites

it does seem dead.i am just downloading this now.How simple is it to set up?

Share this post


Link to post
Share on other sites

I have voice attack so which is better to use online VAC,articulate, glovepie or voiceattack? Cause i would like to use a speech command on different game not just arma3 i might use it on itacing and assetto corsa aswell.

Thanks

Share this post


Link to post
Share on other sites

I followed the development of Articulate very closely but when the development stopped I reverted to VAC. I find VAC very reliable and not too complicated. I have tried to install GlovePie but I couldn't get it to work. This shouldn't stop you from trying, though. VAC and GlovePie are most popular voice utilities in the ArmA community and you'll find many profiles you can try out. I don't play racing games but I sometimes post in a multigaming forum and from what I read there Voice Attack seems to be popular among racers. If you want to use a voice utility online make sure you operate it with a different push-to-talk button than Teamspeak.

Share this post


Link to post
Share on other sites

The commands for me are spelled out in the articulate program, but they don't do anything in game. Anyone else have this issue?

Share this post


Link to post
Share on other sites

excellent job at-least we don't have to pay for this one we get the choice of donating unlike vac where you have too. might donate to this in the future :)

Share this post


Link to post
Share on other sites

When I say "Team", it selects the team, but when I say "open fire" or "copy my stance" nothing happens or else it deselects the team, have i installed this incorrectly or am I missing something?

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×