Jump to content

Using Windows Speech Recognition and Autoit together


Sori
 Share

Recommended Posts

Firstly, I didn't see a forum section that was well suited for this article, so I decided to place it in the help section, since that would be the most read section. Feel free to move this article to the appropriate section.

If you're here at the forums, you understand that Autoit is a very powerful tool for controlling Windows.

You may also be aware of a tool that is included with Windows 7 called, "Windows Speech Recognition" which allows you to use voice commands to run tasks, like... Opening the start menu, or running a program.

What you may not be aware of is, "Windows Speech Recognition Macros" or "WSR Macros" for short.

This is a free program put out by Microsoft that lets you create your own voice commands. You would essentially... create a trigger word or phrase, then you have the option of what you want WSR to do when it hears that phrase.

While that sounds amazing, in practice it's very limited. This is where Autoit comes into play.

Using WSR Macros, you can set a voice command to run a program. Any program.

This allows for a very large array of amazing things that you can do using Autoit.

For example. I use PotPlayer for watching videos. If I say, "Pause" WSR has no clue what I'm talking about. But, creating a simple and very short program in Autoit.

Opt("WinTitleMatchMode", 2)

If WinActive("PotPlayer") <> 0 Then
    Send("{Space}")
EndIf

Now I can tell WSR to run "Pause.exe" if I say, pause. (compiled from the au3)

Using this simple combination of programs, you can create any string of trigger words to do anything your imagination can think of.

 

Helpful Tips:

Using more than 1 word for the trigger will help WSR distinguish between if you are just talking or if you're giving a command. This will also help if you are transcribing, as not to run a command when your intention is to transcribe the word.

Because language is artistic, there can be several ways to complete the same action.

"Open my music folder"
"Let's listen to some music"
"Open my music"
To prevent a ton of file clutter, instead of selecting "New Speech Macro..." for every way you say things, select "Explore Speech Macros..." Then go to the original macro file (WSRMac extension) and alter the contents a bit.

Like this...

(Not incapsulated to maintain color for easier reading)

-----

<?xml version="1.0" encoding="UTF-16"?>
<speechMacros>
   <command>
         <listenFor>
Open my music folder</listenFor>
         <run
command="C:Music" params=""/>
   </command>
   <command>
         <listenFor>
Let's listen to some music</listenFor>
         <run command="C:Music" params=""/>
   </command>
   <command>
         <listenFor>
Open my music</listenFor>
         <run command="C:Music" params=""/>
   </command>

<Signature> 

encrypted coding, very long, useless to the purpose

-----

Notice... You don't need a seperate file, just add another command to the same file. If you really wanted to tidy up, you could actually merge all your different voice commands into 1 giant (and very confusing) file.

Edited by Sori

If you need help with your stuff, feel free to get me on my Skype.

I often get bored and enjoy helping with projects.

Link to comment
Share on other sites

Helpful Tip:

To save space on Autoit clutter you can use the parameters option.

For instance:

Pressing the arrow keys on the keyboard. Instead of having 4 different autoit programs, you can have 1 take the parameters into account, and send the appropriate command.

Example:

 

WSR

-----

<command>
    <listenFor>
Up</listenFor>
    <run
command="C:UsersSorimachiDocumentsSpeech MacrosArrow Keys.au3" params="1"/>
  </command>
  <command>
    <listenFor>
Down</listenFor>
    <run command="C:UsersSorimachiDocumentsSpeech MacrosArrow Keys.au3" params="2"/>
  </command>
  <command>
    <listenFor>
Left</listenFor>
    <run command="C:UsersSorimachiDocumentsSpeech MacrosArrow Keys.au3" params="3"/>
  </command>
  <command>
    <listenFor>
Right</listenFor>
    <run command="C:UsersSorimachiDocumentsSpeech MacrosArrow Keys.au3" params="4"/>
  </command>

-----

Autoit

$command = $CmdLine[1]

If $command = "1" Then
    UpArrow()
ElseIf $command = "2" Then
    DownArrow()
ElseIf $command = "3" Then
    LeftArrow()
ElseIf $command = "4" Then
    RightArrow()
EndIf

Func UpArrow()
    Send("{UP}")
EndFunc   ;==>UpArrow

Func DownArrow()
    Send("{DOWN}")
EndFunc   ;==>DownArrow

Func LeftArrow()
    Send("{LEFT}")
EndFunc   ;==>LeftArrow

Func RightArrow()
    Send("{RIGHT}")
EndFunc   ;==>RightArrow

If you need help with your stuff, feel free to get me on my Skype.

I often get bored and enjoy helping with projects.

Link to comment
Share on other sites

You're very welcome. I'm glad that I was able to reach out to at least one person to help them.

If you need any assistance with integration, or some advice in how to do a certain thing with voice commands, feel free to ask.

If you need help with your stuff, feel free to get me on my Skype.

I often get bored and enjoy helping with projects.

Link to comment
Share on other sites

  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...