VoiceAttack Beta v1.5.7.77

198 views
Skip to first unread message

Gary

unread,
Oct 18, 2015, 9:20:19 PM10/18/15
to VoiceAttack
Beta time.  Just one more... hopefully.  This one has the fixes reported for this round.  If things are cool by the end of the coming week, this could be v1.5.8 (release) :)


The zipped version of the beta can be downloaded here for those with Windows installer issues : http://www.voiceattack.com/filesend.aspx?id=VoiceAttack_15777.zip
Link should work this time, lol.

Make sure to back up your profiles that you change regularly in case you need to roll back (VA is backward-compatible and not forward-compatible... lol).  To roll back, you can download the previous beta here : http://www.voiceattack.com/filesend.aspx?id=VoiceAttackInstaller__Beta_15776.msi

Full update notes are below.  Have a good evening, all :)

Gary


VoiceAttack Change Log - Beta Versions

v1.5.7.77

-  Improvements
   -  Added token, '{TXTCONCAT:var1:var2}'.  This
      will concatenate the text in variable 2 to the
      text in variable 1.

   -  'Reset defaults' from the options screen
      now has the option to delete registration
      info.

-  Bug Fixes

   -  Fixed DirectX mapping issues for UK layout.
   
   -  Fixed random sound actions from duplicated 
      commands playing each other's sounds.
   
   -  Command list now disregards square brackets
      when sorting.
     
   -  Fixed random sounds from a directory only
      picking up .wav files.
      
   -  Fixed, 'buttons' column not showing properly
      in profile screen.
      

v1.5.7.76

-  Improvements

   -  Updated plugin support for the new data types.
      This updates the interface for plugins going
      forward, however, VoiceAttack's plugin execution
      remains backward-compatible, so any plugins you
      are currently using should still continue to
      function.
      
      
   -  Changed verbiage relating to, 'Free Text Type'
      to, 'Quick Input'.  It's what it used to be 
      called and I doubt anybody will be confused by
      it, so, I put the name back.

   -  Added non-character key indicators to Quick 
      Input.  So, let's say you want to add
      a tab to your Quick Input action.  Just 
      enclose the key name (TAB) in square brackets 
      and the key will be pressed : [TAB]
      
      
      
      Your text would look something like this :
      
      Hello, there.[TAB]How are you?[ENTER]
      
      Note: The key indicators are not case-sensitive.
      
      The full list is below (in no particular order):
      
      ENTER        - presses the enter key
      TAB          - press the tab key
      ESC          - press the escape key
      ESCAPE       - works the same as esc
      BACK         - press the backspace button
      BACKSPACE    - works the same as back

      SHIFTDOWN    - holds the left shift key down
      SHIFTUP      - releases the left shift key
      RSHIFTDOWN   - right shift if you need it
      RSHIFTUP
      LSHIFTDOWN   - works the same as shiftdown
      LSHIFTUP     - works the same as shiftup
      
      ALTDOWN      - holds down the left alt key
      ALTUP        - releases the leftalt key
      RALTDOWN     - holds down the right alt key
      RALTUP       - releases the right alt key
      LALTDOWN     - works the same as altdown
      LALTUP       - works the same as alt up

      CTRLDOWN     - holds down the left ctrl key
      CTRLUP       - releases the left ctrl key
      RCTRLDOWN    - holds dowwn right ctrl key
      RCTRLUP      - releases right ctrl key
      LCTRLDOWN    - works the same as ctrldown
      LCTRLUP      - works the same as ctrlup

      WINDOWN      - holds down the left win key
      WINUP        - releases the left win key
      RWINDOWN     - holds down the right win key
      RWINUP       - releases the right win key
      LWINDOWN     - works the same as windown
      LWINUP       - works the same as winup
       
      NUM0         - numeric pad 0-9
      NUM1
      NUM2
      NUM3
      NUM4
      NUM5
      NUM6
      NUM7
      NUM8
      NUM9
      
      NUM*         - numeric pad *
      NUM+         - numeric pad +
      NUM-         - numeric pad -
      NUM.         - numeric pad . 
      NUM/         - numeric pad /
      NUMENTER     - numeric pad enter


      F1           - press F keys... F1-F24
      F2
      F3
      F4
      F5
      F6
      F7
      F8
      F9
      F10
      F11
      F12
      F13
      F14
      F15
      F16
      F17
      F18
      F19
      F20
      F21
      F22
      F23
      F24
      
      HOME         - press home key
      END          - press end key
      DEL          - press delete key
      DELETE       - works the same as del
      INS          - press insert key
      INSERT       - works the same as ins
      PAGEUP       - press page up
      PAGEDOWN     - press page down
      ARROWR       - arrow right
      ARROWL       - arrow left
      ARROWU       - arrow up
      ARROWD       - arrow down
      CAPSLOCK     - toggle capslock
      NUMLOCK      - toggle numlock
      SCRLOCK      - toggle scroll lock
      SCROLLLOCK   - works the same as scrlock
      PRINTSCREEN  - press printscreen button
      PAUSE        - press the pause/break button
      
-  Bug Fixes

   -  Fixed circular reference issue in some cases
      with execute command children that also execute
      commands.


v1.5.7.75

-  Improvements

   -  Added new token, '{TXTTITLE:variableName}'.
      Token is replaced with text variable title
      cased (VoiceAttack supported locales only).
      Example: 'war and peace' becomes 'War And 
      Peace'.  Yes... I know that's not *proper* title 
      case (at least in English), but it's as close 
      as the framework will allow without linguistic 
      rules.  Sorry, even Microsoft wont touch it ;).
      
   -  Commands executed by multiple joystick buttons 
      will no longer execute single-button commands.
      That is, as long as the first button down does
      not have a command associated with it.
      
      Example :
      A down + B down executes a command
      A down only executes a command
      B down only executes a command
      
      User presses A down and then B down.
      
      A down only will execute, since it doesn't know 
      that B down only is coming.  This is unavoidable.
      
      A down + B down executes.
      B down only does not execute.

-  Bug Fixes

   -   Fixed pause timing issue introduced in 
       1.5.7.74.
   
   -   Fixed command validation issues with dynamic
       commands introduced in 1.5.7.74.       
       
   -   Fixed {CMD_AFTER} parsing issue.


v1.5.7.74

-  Improvements

   -   Updated image buttons with accessible
       names for screen readers (so they won't
       be indicated as just, 'button').
       
   -   Removed 'Stop repeating if window focus lost'
       checkbox and replaced it with, 'Stop command 
       if target window focus is lost' checkbox which
       is available whether you are looping or not.
       
       What this does is stop the command if you
       lose focus of the window that had the focus
       when the command was executed.  The underlying
       value that is used is carried over to the new
       checkbox making it backward-compatible with
       what was in place before.
       
       This feature now also has an option, 'Resume
       command if focus regained'.  This attempts to
       resume the command if you click back into the
       originally focused window ;)
       
   -   Added some dynamic ability to commands.
       What this does is allow for quick, dynamic 
       commands that can contain potentially optional
       parts.  To indicate a dynamic portion of your
       spoken command, simply enclose the section in
       square brackets : [  ].  Each dynamic element
       within the brackets must be separated with a 
       semicolon.
       
       Here is an example : 
       [Greetings;Hello]computer
       
       To execute the command, you can now say :
       
       Greetings computer
       Hello computer
       
       
       Note that multipart commands are also still 
       separated with a semicolon (as demonstrated by
       adding, 'Hi' to the end) :
       
       [Greetings;Hello]computer;Hi
       
       With this example, to execute the command,
       you can say : 

       Greetings computer
       Hello computer
       Hi
       
       The dynamic sections don't have to just be at
       the beginning.  They can be anywhere in the
       command.  Also, as a side-effect, if you put
       a semicolon on at the end of the selections,
       it makes the section optional :

       [Greetings;Hello]computer[how are you;]
       
       You can say the following to execute the 
       command :
       
       Greetings computer how are you
       Hello computer how are you
       Greetings computer
       Hello computer
       
       Note that there is a semicolon after 'how are you'
       to indicate that the entire section is optional.
       
       Something to consider when using this feature is
       that you can create a lot of permutations from
       very few words.  Use with care :)
       
       Dynamic sections also have the ability to indicate
       a numeric range.  This is indicated by putting in
       two numbers separated by an ellipsis (..).
       
       eject car [1..100] will allow you to say, 
       'eject car 1',
       'eject car 2',
       'eject car 3', etc.
       
       Using this in conjunction with the new 
       {TXTNUM:variableName} token (see below), 
       you can come up with some intersting solutions.
       
   
   -   Spoken command box now expands horizontally 
       with the command window.
           
   -   I put back the ability to quickly add text to
       be typed out serially.  The new action is called, 
       'Quick Input'.  This was taken out a long time 
       back (it was called, 'Quick Input') in favor of 
       the recorder feature, since more and more folks 
       with non-English keyboards were using VoiceAttack.  
       'Quick Input' should allow for the currently-
       supported list of locales to use the feature.
       
       The reason I put it back is because a lot of
       folks find the recorder cumbersome for simple
       stuff.  Also, there are some games that do not
       allow the use of the clipboard paste (which is
       what I would recommend for fast text diplay).
       
       The feature simply allows you to type in text
       in the box and have it typed back.  For the
       supported locales, it also should be able to
       do the right-alt/deadkey stuff.  You will be
       able to specify the timing of the key presses
       (as always, DirectX games have a polling mechanism
       and are not event-driven when it comes to keyboard
       activity).  You will be able to specify either
       DirectX or Standard input.  Note that the
       text box also accepts tokens that will be
       replaced out at runtime.
       
       NOTE : This is a first pass.  There will be
       tokens available later for {ENTER}, 
       {SHIFTDOWN}. {SHIFTUP}, etc.
   
   -   Added option, 'Single TTS Instance' to help
       with certain TTS packages (Cereproc) that have 
       an instance cap.  Select this option if
       you are using TTS and it keeps cutting out.
       
   -   Moved command screen right-click context menu
       'New Action' contents up one level (there
       is no longer a, 'New Action' menu item).
       
   -   Reordered, 'Other' context menus into more
       logical groups.
   
   -   Added, 'Set Boolean Value' command action.
       Boolean values can be set to true, false, toggle 
       or not set.  When toggling, a false value becomes
       true, a true value becomes false and a not set
       value remains not set.  I added this to simplify
       the use and readability of macros (using 0 and 1
       for true/false turns a lot of folks off).
       
       *******Plugin update will come later.
       
   -   Added, 'Set Integer Value' command action.  This
       uses larger integers so you can have more space to
       work.  This differs slightly from the small integer
       (previoulsy called, 'conditions'), as you have the
       ability to compute a value.  You can add/subtract/
       multiply/divide (integer division) / modulus 
       (remainder) against an explicit value or against
       a variable or text token.  If the text token is not
       able to be converted to an int, the computed result
       will be, 'Not Set'.  When computing a value, there
       is also an option to initialize the variables to zero
       if they are, 'Not Set'.  This will save an initialization
       step (might be handy if you are incrementing, for 
       example).
       
       *******Plugin update will come later.
       
   -   Added new tokens {INT:variable name} and 
       {INTFORMAT:variable name} to provide a way to
       access the new integer varibles through text
       features.
   
   -   Updated text comparison in 'Begin conditional 
       block' to allow either a variable name or a text
       token as the source of comparison.  The previous
       function of the token being used to get the
       variable name has been replaced by this.
   
   -   Updated 'Begin Condition' screen to include
       boolean comparisons.  This required the layout
       of the screen to change from radio button selection
       to tab selection.
       
   -   IMPORTANT: To avoid confusion going forward, 
       Conditions are now going to be called, 
       'Small Integer'.  The, '{COND}' token is still 
       available for backward-compatibility.  New tokens 
       '{SMALL:variable name}' and 
       '{SMALLFORMAT:variable name}' have been added 
        (and refer to the same variables).
       
   -   Added Disable/Enable action to right-click menu
       of command action list.  This will allow you
       to selectively disable items.  There are no
       restrictions on this yet, and I have not tested
       how this will affect everything (like jumps,
       condition statements, etc).  I found it handy
       for testing and thought you might, too ;)
       
   -   Added, 'Set Decimal Value' command action.  This is
       basically all the functionality of Integers above,
       with some additional calculation methods thrown in
       (just kept adding whatever methods I could find...
       they were a no-brainer to add, so, I might as well
       add them).  You can also round the set decimal 
       value to up to 10 places.
       
       *******Plugin update will come later. 
           
   -   Added new token {DEC:variable name} to provide 
       access the new decimal varibles through text
       features.
       
   -   Added, 'clear favorites' menu item to command
       screen right-click menus.
       
   -   Added, 'Clear Saved Values from Profile' action.
       This will allow you to selectively remove all 
       values of selected data types that are saved to 
       the profile.  This does not clear resident values
       (just the saved ones).
       
   -   Some time a while back (v1.5.7.70), I added three 
       tokens and did not document them :  {CAPSLOCKON}, 
       {NUMLOCKON}, {SCROLLLOCKON}.  These will have a 
       value of "1" if the lock is on and a value of "0" 
       if the lock is off.
       
   -   Added new token {TXTNUM:variableName}.  This will
       attempt to remove all characters except numeric
       (0-9, ., -).  So, text that looks like, 'turn -180.2'
       will be replaced with, '-180.2'.  Note that the value
       is still text (from a token), but can be converted 
       if needed.
       
   -   Added new token {TXTALPHA:variableName}.  This will
       attempt to remove all numeric characters from the text
       variable.
       
   -   Added four new mouse position tokens : {MOUSESCREENX},
       {MOUSESCREENY}, {MOUSEWINDOWX}, and {MOUSEWINDOWY}.
       This is a text value representation of the position
       of the mouse, either in relation to the screen or the
       active window.
       
   -   Added new action, 'Stop Sounds' which will stop all
       currently playing sound files.
       
   -   Added new action, 'Stop Text-To-Speech' which will 
       stop all text to speech that is, 'speaking'.
       
   -   Added 'm4a' and 'aac' as acceptable sound file types.
   
   -   Added, 'Trim', 'Upper Case', 'Lower Case' and 'Replace'
       as options to Set a Text Variable action.
       
   -   Added, 'Execute' on right-click menu of profile list...
       Might help out a little when testing.  Note that it
       will show the entire command string for multipart
       
   -   Updated documentation to explain tokens a little
       better.

-  Bug Fixes
   -   Updated DirectX mapping for some keys to be the proper
       mapping o_O.  
       
   -   Fixed some DirectX extended key issues.     
   
   -   Fixed joystick disable not working in some cases.
       Well... any case other than the global listening...lol.
   
   -   Fixed previous beta issue of dictation events not firing
       when default speech engine is not selected.  Doh!
        
v1.5.7.73

-  Bug Fixes

   -   Fixed import/export issue introduced in 
       1.5.7.72.
       
       
v1.5.7.72

-  Improvements
   
   -   Added tokens {TXTUPPER:} and {TXTLOWER:} to
       return the indicated text value as all upper
       case or all lower case.
       
   -   Added token {TXTTRIM:} that returns the 
       indicated text value without whitespace 
       (without needing to use {EXP:}).
       
   -   Added token {TXTREPLACE:tokenName:from:to}
       to allow you to replace portions of a token value
       with something else.  Example:
       Token, 'myToken' value set to, 'This is a test'.
       {TXTREPLACE:myToken:test:monkey} resolves to
       'This is a monkey'.
       
   -   Set Text Value now has a new option to set the value
       to, 'not set'.
       
   -   Set Text Value now has an experimental get value
       from URI.  This can either be a web address or a 
       file path.  Right now it has a timeout of 30 seconds.
       That will probably need to be soft-set, but we'll see.
       Again... experimental.
       
   -   Set Text Value can now be saved and retrieved with
       the profile (persisted to disk), accessible even 
       between sessions.
       
   -   Set Conditional Value can now be saved and retrieved with
       the profile (persisted to disk), accessible even 
       between sessions.
       
   -   Mouse set position now accepts negative numbers for multi-
       monitor setups where the main screen is not left-most...  
       I've been asleep at the wheel, apparently.

   -   For fun, added, '-opacity' command line parameter.
       -opacity 75 sets the value to 75% opacity.

v1.5.7.71

-  Improvements

   -   Added, 'cut' to command list.  Don't know
       why that's been mising all this time o_O.
       
   -   Play random sounds interface now supports
       multiple file edit - change the attributes
       of one or more files at once (volume,
       wait, complete).  You can also add more
       than one file at a time as well.
       
   -   'Play random sounds' now has the option to
       play from a specified directory.  Just point
       to the directory that you want to play out
       of and VoiceAttack creates a random pool
       out of all supported sound files in that
       directory.  This is useful if you have a 
       set of responses that you constantly update.
       Just put the sound files in the directory
       and there is no need to add it to the
       random list.
       Note that you can also put shortcuts (.lnk)
       to your sound files in these directories 
       and they will be used to locate the target 
       file.  Useful if you want to duplicate sounds for 
       different reasons and not want to copy the
       the whole thing.
       
    -  Importing commands will now display a 
       confirmation box if any of the actions
       in the commands are launch
       application or kill process.
    
    -  Importing a profile will now display a 
       confirmation box if any of the actions
       in the commands are launch
       application or kill process. 
       
       
-  Bug Fixes
   -   CTRL + V pasting in command action list
       without copying anything no longer crashes
       the application.
       
   -   Copy selected as text no longer crashes
       app.


v1.5.7.70

-  Improvements
   -   Right-click menu in command action list
       now contains all the actions, including
       favorites (also mouse... missing for
       all these years... lol).
       
   -   Begin Conditional Block numeric condition
       value names as well as text compare
       value names can now accept tokens
       to indicate the variable name.
       
   -   Added, 'undo' and 'redo' to the command
       action list (CTRL + Z, CTRL + Y).
   
   -   Added support for duplicating multiple
       command actions (used to be just one
       at a time).
       
   -   Updated command list to not display
       dialog box when there are no options to
       set in the action (Start VA Listening,
       Stop Processing, Condition Else, etc).
   
   -   Added token, '{DICTATIONON}' to indicate
       if dictation is on or not.  If on, the
       value will be "1".  Otherwise it will
       be "0".
       
   -   Added, '{DATETICKS}' token to express
       the current date as ticks.
       
   -   Added new time tokens : {TIMEHOUR},
       {TIMEHOUR24}, {TIMEAMPM} (shows am/pm
       designation), {TIMEMINUTE}, {TIMESECOND}.
       
-  Bug Fixes
   -   Fixed issue with empty action sequences
       not stopping properly when included in a
       loop that repeats indefinitely.

       
v1.5.7.69

-  Improvements
   -   Added 'favorites' feature to command
       action items.  Up at the top of each
       command action on the, 'other stuff'
       screen, you'll see a little star.  If
       you click it, it will add the action to
       favorites.  The, 'Favorites' menu item
       will show up at the top of the, 'Other'
       menu.  It will only show up if there
       are actually favorites.  The favorites
       are ordered in the order that they are
       added.  If you ctrl+click the star, you
       can clear all favorites.
       
   -   Adding a 'Begin a conditional block'
       action will now automatically add an
       'end conditional block'.  Since the
       end block is required, this is probably
       for the best ;)
       
-  Bug Fixes

   -   Betas have been released as 'any cpu' and
       not, 'x86'.  This has been fixed.

v1.5.7.68

-  Improvements
   -   Added some date tokens (pretty self-
       explanatory) :
       {DATE}, {DATEMONTH},{DATEMONTHNUMERIC},
       {DATEDAYOFWEEK}, {DATEDAY}, {DATEYEAR}
   
   -   Added 'Suppress pauses between key
       presses' option to recorder screen.
       This gives an option to allow pauses
       between the key up of one key and
       the key down of the next.
       
   -   Added text compare to 'Begin Condition
       Block'.  So, 'Begin Condition Block'
       is now called, 'Begin Conditional
       Block'.  In this action you now have
       the option to either compare values
       of conditions (numeric) or compare
       values of text variables.  Both types
       of comparisons work the same, howevever,
       the, 'Text' field will accept tokens.
    
       
v1.5.7.67

-  Bug Fixes

   -   Fixed some issues with extended keys.
   
   -   Fixed issue with nested commands not
       executing if disabled.
   

v1.5.7.66

-  Improvements
   -   Added new command line parameter,
       '-toggledark' as a test.  Puts
       the main screen in, 'dark mode'.
       Calling this from the command 
       line always affects the running
       process, so, you can have a 
       shortcut on your desktop that
       just changes the running instance's
       color mode.
   
   -   Added log status bar in compact
       mode that shows the last log
       entry.
   
   -   Polished up the log color icons.
       'Now with more roundness!'.
       Dark mode now has squares.
       
-  Bug Fixes

   -   Fixed some issues with extended keys.

v1.5.7.65

-  Bug Fixes

   -   Fixed registration screen not allowing
       registration... lol.  At some point I 
       was in the middle of creating a better
       error message & never finished the
       process.  All better now ;)

v1.5.7.64

-  Improvements

   -   Added 'Play a Random Sound' action.
       Finally... a user interface to handle
       random sound files (you can still
       do random stuff with conditions if
       you want to).  This interface will
       let you choose the same options for
       each individual sound just as you 
       can for single sounds.  Also, there
       is the option for, 'suppress repeat',
       which will allow for a random list
       to seem a little more, 'random' by
       only playing each sound once.  Note
       that it's, 'suppress repeat', as it
       does not completely eliminate the
       possibility of a repeat (a repeat
       can happen once the cycle is reset,
       of course).
   
   -   Added token, '{CONDFORMAT:condition}'.
       This simply formats the condition 
       with commas for use in TTS.  This was
       the default behavior of, '{COND:condition}',
       but it has been made apparent that 
       calculating anything over 999 results in
       an error.
       
   -   Increased the size of the 'Set text value
       to Windows clipboard' text box (now 
       multi-line and can contain more than 64
       characters (doh!)).
       
   -   Added, '{ACTIVEWINDOWTITLE}' token that 
       returns the active window's title.
       NOTE: THIS REPLACES '{WINDOWTEXT}' token.
       
   -   Added, '{ACTIVEWINDOWPROCESSNAME}' token 
       that returns the active window's 
       process name (what you would see in Task
       Manager).
       
   -   Added, '{ACTIVEWINDOPROCESSID}' token 
       that returns the active window's process
       id (most will never use this... just 
       included because it was nothing to do so).       
       
   -   Added, '{ACTIVEWINDOWWIDTH}' token that
       returns the active window's width.
       
   -   Added, '{ACTIVEWINDOWHEIGHT}' token that
       returns the active window's height.

   -   Added, '{ACTIVEWINDOWTOP}' token that
       returns the active window's top (Y-
       coordinate).
       
   -   Added, '{ACTIVEWINDOWLEFT}' token that
       returns the active window's left (X-
       coordinate.

   -   Added, '{ACTIVEWINDOWRIGHT}' token that
       returns the active window's right
       (left + width).

   -   Added, '{ACTIVEWINDOWBOTTOM}' token that
       returns the active window's bottom
       (top + height).
     
-  Bug Fixes
   -   Removed formatting from '{COND:condition}'
       token (see above).
   
   -   Fixed process target problem introduced
       in last beta.

v1.5.7.63

-  Improvements
   -   Added new action set, 'Perform a window
       function'.  This will allow you to target
       a particular window and display 
       (normal, minimize, maximize, etc), close,
       move, resize or change its title text.
       You can specify how much time to wait for
       the window before VA gives up.
       Changing the title allows you to name 
       windows how you would like to search for
       them, especially if you have multiple 
       instances that you want to keep track of.
   
   -   Comments can now be blank so you can add
       some spaces between blocks in your 
       commands (aesthetics).
       
   -   Added some additional filter buttons to the
       bottom of the profile edit screen to aid
       with the HUGE profiles out there.  There
       are six filter buttons : hide commands with
       disabled, 'when i say' attribute, hide 
       commands with disabled, 'when i press
       button' attribute, hide commands with
       disabled, 'when i press keys' attribute,
       hide prefix commands, hide suffix commands,
       hide full commands.  They just toggle on
       and off.
       
   -   Sending keys/mouse clicks to windows with
       popup dialog boxes should be good to go now
       (not sure why I didn't see this four years
       ago o_O).
       
   -   Added two new tokens, '{CMD_BEFORE}' and
       '{CMD_AFTER}'.  When a wildcard is used in
       a spoken phrase, these can be used to get
       everything else in the spoken phrase.  
       {CMD_BEFORE} is anything before the wildcard
       phrase.  {CMD_AFTER} is anything after the
       wildcard phrase.  For example, if using,
       '*rocket*' as  your wildcard phrase and you
       say, 'i am going for a ride in my rocket ship'
       {CMD_BEFORE} will contain, 'i am going for a 
       ride in my' and {CMD_AFTER} will contain 
       'ship'.
       
   -   Added new token, '{TXTLEN:valueName}'.  This
       will return the length of the text variable's
       value.
   
   -   Added 'Convert Text/Token' to 'Set a Condition 
       Value' action.  If the text/token can be 
       converted to an int16 value, the value 
       will be used, otherwise, the value will be,
       'Not Set'.
       
   -   Experimental...  New token, '{EXP:expression}'.
       This is used for some simple math and also
       as a stopgap for the text comparison user 
       interface.
       
       Everything after the colon is evaluated, so
       if you use '{EXP: ((5 +  5) - 2) * 10}' the 
       result will be '80'.  The expression token
       also accepts tokens.  So, if you have a text
       value myText1 and it is set to '100' and a
       condition value myCond1 that is 200, you can
       have an expression of, 
       '{EXP:({TXT:myText1} + {COND:myCond1}) * 2}'
       that results in '600'.  Might be biting off
       a little bit too much here, but I'd like this
       to succeed :) Note that the result values can 
       be decimal values when dividing.
       
       Accepted arithmetic operators :
       +, -, * (multiplication), / (division),
       % (modulus).
       
       Accepted comparison operators :
       =, <, >, <= (less than or equal), >= (greater 
       than or equal), <> (not equal).  These can
       be used for numbers as well as text (text
       comparisons have to do with alphabetical order
       and not length).
       You may also use, 'And', 'Or', 'Not':
       {EXP: ('cat' = 'dog') And Not (20 = 30) } 
       {EXP: ('cat' = 'dog') Or (20 = 30) }
       {EXP: Not ('cat' = 'dog') }
       
       You can use, 'LIKE' as part of text comparison
       expressions.  The text that you are comparing to
       needs to have asterisks in the places that they
       need to be (wildcards).  Asterisks around the text
       indicate, 'contains'.  Asterisks at the end
       indicate, 'starts with' and asterisks at the 
       beginning indicate, 'ends with'.  No asterisks
       indicate exact match.  Text comparisons are
       not case sensitive.
       
       Note that the text parts need to be between 
       single quotes (this includes tokens) :
       {EXP: 'dump cargo' LIKE '*cargo*'} results in
       '1'.  If your text contains single quotes, they
       need to be doubled up to use in expressions:
       {EXP:'catcher''s mitt' = 'pitcher''s mitt'} 
       
       You can concatenate text by using, '+' :
       {EXP: 'welcome' + ' ' + 'captain' } evaluates 
       to 'welcome captain'.
       
       You can use, 'TRIM', 'SUBSTRING', 'LEN' and, 
       'IIF' (immediate, 'if')).

       TRIM removes any blank spaces around text :
       {EXP: TRIM('  my trimmed text    ') } evaluates 
       to 'my trimmed text'

       SUBSTRING(start position, length) gets just 
       the portion of the text you are wanting:
       {EXP: SUBSTRING('let the good times roll', 9, 4) } 
       evaluates to, 'good'. Note that the start is 
       1-based (not zero-based).

       LEN gives the length of the text:
       {EXP: LEN('let the good times roll') } evaluates 
       to 23.

       IIF(expression, true part, false part) allows 
       you to evaluate an expression and get one of 
       two values depending on the result:
       {EXP: IIF('cat' = 'dog', 10, 20) } evaluates 
       to, '20'
       {EXP: IIF('cat' <> 'dog', 10, 20) } evaluates 
       to, '10'
       
       myCondition1 is 100 and myCondition2 is 200 :
       {EXP: IIF({COND:myCondition1} > {COND:myCondition2}, 
       'Blue', 'Green') } evaluates to, 'Green'.
       
       If your expression results in 'True' or 
       'False' the result will be replaced with '1' 
       for true and '0' for false (for use in conditions).
       {EXP:5 < 6} will result in '1'.
       
       Note:  If you try to stuff a decimal value 
       into a condition, the condition will be, 
       'Not Set'.  Also, if the value goes out of range
       of the condition, the condition will be, 'Not
       Set'.
       
   -   Exposed -command command line argument to execute
       a named command.  If a VoiceAttack process is 
       already running, the running process will execute
       the command.  Note that double quotes are needed
       if your command name has spaces in it.  Command
       names are not case-sensitive.
       -command test  (runs command, 'test')
       -command "my test"  (runs command, 'my test')
       If the command does not exist in the current
       profile, the log will show you the error of  your
       ways ;)
       
   -   Killing an individual command now kills the
       playing sounds for that command.
       
   -   Killing an individual command now kills the
       playing TTS for that command.
       
-  Bug fixes
   
   -   Optimized composite command (prefix/suffix) 
       loading.
   
   -   Fixed processor pegging with jumps.
   
   -   Fixed type-to-find not working with 
       grouped commands in profile edit screen.
       
   -   Fixed various wildcard-introduced issues.
   
   -   Fixed disposed speech object exception.
   
v1.5.7.62

-  Improvements
   -   Reworked the, 'Other' button on the command
       screen.  The long dropdown list has grown
       too large, and since more stuff is on the
       way, something needed to be done.
       Now command actions for, 'Other
       Stuff' can be accessed through flyout menus
       rather than just through one big dropdown
       list.  The full dropdown list is still 
       available once you make your selection,
       or, if you press CTRL at the same time you
       click the, 'other' button, you can see the
       list as it was.  Pretty straightforward...
       need feedback on this one, really.
       
   -   Added 'condition else' action that allows control
       of your macro to jump to this point if a condition
       is not met. Been needing this for a long time.
       
   -   Added command markers.  This indicates a point
       in the command action list that can be jumped to
       with the new, 'Jump' action.  Markers can be named
       whatever you want, but must be uniquely named
       within the command (if markers happen to be named
       the same in a prefix/suffix situation, the first
       marker will be jumped to).
       
   -   Added, 'Jump' action to commands.  You can now
       specify to jump back to the start of the command,
       to the end of the command or to a jump marker.
       To jump to a marker, you just specify the name
       of the marker you created in the combo box.
       When the command execution reaches the jump point
       and a marker is indicated, the execution continues
       where the marker is located (can be located anywhere
       in the command).  Markers can also be used in prefix/
       suffix situations (for instance a jump in a suffix
       should find the marker in a prefix, jumping to the start
       of a command from a suffix will go to the top of the prefix,
       etc).  Note that when using a jump to exit the command, 
       this does not terminate the command.  Any running subcommands 
       will still continue to process.  Might make that an
       option later.
       
   -   Command wildcards that denote, 'contains' (asterisks on
       both ends of the command) will allow for multiple expressions
       to be contained in one spoken phrase.  So, if you
       have a command named, '*rocket*' and one named '*ship*'
       you can say, 'rocket ship' and both commands will be
       executed (pretty much simultaneously... you can always
       uncheck, 'this command allows others to run at the same
       time' to process in line.  There is an attempt to process
       the commands in the order that they are spoken as well.
       The order of processing is, 'ends with', then 'starts 
       with' then, 'contains'.
       
-  Bug Fixes
   -   Right-click on open area of profile list when
       in grouped mode no longer crashes.
       
   -   Spoken commands containing wildcards will now
       be constrained as unique in both the command
       and in the profile.
       
   -   Fixed bug with delete of commands not allowing
       subsequent deletes without selecting another
       command.
       
   -   Fixed a threading issue when using the clipboard
       feature.  
       
   -   Fixed issue where prefixes would sometimes end up
       as full commands.

v1.5.7.6

-  Improvements

   -   Experimenting with putting wildcards around 
       full commands.  That is, allowing command 
       phrases that will execute if they are 
       contained in the spoken phrase (or are
       at the beginning or end of a spoken phrase).
       I know I've been reluctant to include this
       over the years, but I think I've found a way
       to make it not very intrusive.  Just put
       asterisks on both ends of your spoken phrase :
       '*power to shields*' to indicate, 'contains'.
       Put an asterisk at the end to indicate, 
       'starts with' : 'power to shields*'.  Put an
       asterisk at the beginning to indicate, 'ends
       with' : '*power to shields'.  So, if you
       accidentally say something like, 'Power to 
       shields, please', your command will be found
       and executed.  Use with care... lol.
       I haven't worked out all the details yet on
       how this will impact other screens, but I 
       thought I needed to get the simple stuff out
       there to see if it's even going to fly.
       Note that this is for full commands only, and
       not for prefixes/suffixes just yet.
       
   -   Added, 'Wait until the launched application
       exits before continuing' option to the 'Run
       an Application' action.  Selecting this option
       will cause the running command to pause until
       the launched application closes.
       
   -   Added slight delay to list filter on profile
       screen.
       
v1.5.7.5

-  Improvements

   -   Added window targets at the command and profile
       level, still defaulting to the global level that
       is on the main screen.
       To use this, simply either drop down the
       list to select a target by name, or place an 
       asterisk (*) at the beginning to denote, 'ends
       with', at the end to denote, 'starts with' or
       on both ends to denote, 'contains'.  This is
       for windows that have names that change.
       This works with the linked profiles as well, so
       you can have a profile called, 'Winamp' that
       interacts only with Winamp by setting the 
       process target to '*winamp*'.  VoiceAttack will
       find the Winamp app and set it as the target,
       while your other commands (key press and mouse
       actions) continue to be sent to wherever you
       like.  Prefixes and suffixes can have window
       targets as well, however, if both a prefix and
       a suffix have a target set, the prefix target
       will be used (may be wrong about the choice...
       we'll see how this irons out... might need to
       be the suffix... not thinking clearly... lol).
       The dropdown list can contain window names
       (or parts of window names... with asterisks)
       or the entire process name (asterisks not
       incorporated yet).  The list will show current
       window names plus any currently-used targets
       from other commands to make input easier.  You
       also have the option to turn the target on
       or off by checking or unchecking the 'enable
       process target' box.  If you are targeting a 
       particular process at a higher level, there's
       also the option to override and use the active
       window.  Hope this makes sense... A lot of 
       you have been asking for this for a while ;)
       
   -   Updated 'Send commands to' functionality on the
       main screen to be more in line with the process
       targets at the profile and command levels.
       Before, all you had as options were, 'Active
       Window' or some other window title.  You can
       now use asterisks around the window titles.
       The list also maintains the last ten most-
       recently-used items.  You will note that the
       process list is not refreshed on every drop
       down now.  There is an item in the list 
       called, 'Refresh this list' which will update
       the list with the latest open window titles
       and most recently used items.  There is no
       user interface to set the mru max number.
       You can set this value by going into the
       user.config settings, though.
       
   -   Added, 'Screen Coordinates' and, 'Application
       Coordinates' to the mouse action screen.  This
       will allow you to choose a position of the mouse
       cursor as it relates to the entire screen or
       to the application that is in the foreground.
       If the coordinates are out of bounds,
       the cursor is moved to the boundary.
       (The mouse location capture utility has been
       updated to respect either screen or 
       application coordinates).
       
   -   Added simple, 'Category Grouping' to profile
       edit screen to cut down on some clutter.
       Button to enable/disable is at the bottom
       of the profile screen.  Clicking the group
       header will expand/collapse the group.  You
       can also hit enter when the header is selected
       to expand/collapse.  If you hold down CTRL at
       the same time you expand or collapse, you can
       expand or collapse all.  Renaming categories
       is now easy to do en masse... just right click
       on the category group and select, 'Rename
       Category'.
       
   -   Added a list filter box at the bottom of the
       profile screen to filter down commands.  Pretty
       straightforward. If you just start typing in 
       the box, the command list will be filtered where 
       any field contains the typed text.  Of course,
       this does not affect the underlying data.
       
   -   Added, 'Add a Comment to Action List' action
       to, 'Other stuff'.  Just add some text and
       the comment will show up in italics with
       a slightly lighter color in the command 
       action list.  This action doesn't do anything
       other than show you your own notes in the
       command action list.
    
    -  Added option, 'Reject Pending Speech' option
       to options screen.  This is the UI verion of 
       the -bypassPendingSpeech command line argument.
       When you turn off, 'listening' in VoiceAttack, 
       you can choose how to handle what happens if
       you are speaking at the same time.  When this 
       option is not checked and you turn off, 
       'listening', VoiceAttack will let you finish 
       the phrase you already started before it stops 
       processing your commands.  Checking this box 
       will stop command processing immediately, 
       including the phrase you are speaking.
       
    -  For fun, if you add a .wav file called, 
       'sys_on.wav' and/or a file called, 'sys_off.wav'
       to the same directory that VoiceAttack.exe
       is located, VoiceAttack will use those files
       for its on/off sound effect (listening on/off,
       joysticks on/off, etc). (Of course, you 
       noticed this must be a valid .wav file... if 
       an error is encountered, the sounds are 
       reverted back to the default sounds).  This
       was almost no code, so I just left it in ;)
       
       Also, if you add a file called,
       'header.png' to the VoiceAttack.exe folder, 
       the header bar on most windows will use that 
       image as the background, tiled.  Not sure how 
       this will look for you, but I tried it with
       an image with 500 pixels and and image with 
       5 pixels and it seems alright.  Your milage
       may vary, of course. Make sure your image
       jives with the icon colors and header text... 
       or you wont be able to see them (again... 
       you noticed this must be a valid .png file,
       however, I tried renaming a .jpg file to
       header.png and it worked... lol).  If an
       error is encountered, it just reverts to the
       original black.
    
       
-  Bug Fixes

   -   Fixed some font issues on several screens.
   
   -   Fixed, 'ends with' and 'starts with' criteria for 
       auto profile switching.
       
   -   Fixed issue with calling command by name in a 
       linked profile not working properly.
       
   -   Fixed bug in kill process that would prevent some
       apps from being terminated.
       
   -   Fixed dictation recovery issue.
   
   -   Fixed command action list font color when items
       are selected (yay... no more dark fonts on dark
       backgrounds).

v1.5.7.4

-  Improvements

   -   Added a mass update feature to the Edit Pause
       screen.  Note that its on the Edit screen.  You
       can mass update pauses at the command level and
       at the profile level.  How this works is that any
       command action that has a duration that matches the
       original duration will be changed to match the
       updated duration.  So, lets you have a bunch of pauses
       that are 0.1 second in your profile that you want to
       change to them to 0.2 seconds.  You edit one 
       of them and change it to 0.2 seconds.  If you choose
       the mass update option to alter the profile, all the
       pauses that are 0.1 second will be changed to 0.2 
       seconds (no other ones will be touched).  Some folks
       use a standard pause time for certain things.  This
       will help to avoid changing all pauses to a single
       value. 
       You can undo a mass change from the command level
       by pressing Cancel on the Command Edit screen.
       To undo a profile-level update, you will need to
       hit Cancel on the Profile Edit screen.

   -   Added a mass update feature to the Edit Keypress 
       screen.  Again, note that its on the Edit screen.  
       You can mass update key presses at the command level
       and at the profile level.  When you select the,
       'Mass Update' option and select the scope (either
       command or profile) any keys that match the original
       keys will be changed to the updated value.  This
       will also include the duration (if there is one)
       and the input mode.  Note that the mass update 
       option becomes disabled if you try to change the
       action type (from key down to key up, for example).
       You can undo a mass change from the command level
       by pressing Cancel on the Command Edit screen.
       To undo a profile-level update, you will need to
       hit Cancel on the Profile Edit screen.

v1.5.7.3

-  Improvements

    -   Added ability to resize the command screen.  This
        required the removal of the advanced/basic view
        button (+/-) in the top-right corner.  Not sure
        if that will even be missed.  Command screen
        can be resized by dragging the bottom-right corner.
        Still need to work on flicker/painting, but it
        seems to be ok so far.
        
    -   Added support for FLAC audio files.  Make sure the
        FLAC codec is installed by going here :
        
    -   Added new action, 'Set text value to Windows clipboard'.
        This is a very basic implementation, and only doing text 
        values for now.  The value can, however, contain tokens.  
        To clear the clipboard, just leave the box blank (no 
        spaces... not trimming in case literal spaces are wanted).  
        Note that there is no, 'paste from clipboard'.  There
        are API calls to paste clipboard data which require finding
        active controls and such to do the work, however, it's 
        just as easy to do a CTRL + V key press (works in just
        about every case).
    
    -   Added new token, '{CLIP}' which will be replaced
        with whatever is in the clipboard (as long as the
        value in the clipboard is text, otherwise, the token
        will be replaced with a blank).
        
    -   Added, 'Window Style' to application launch action.
        Standard choices are, Normal (default), Minimized, Maximized
        and Hidden.  Note that these only work if your target app
        supports them.
        
    -   Deep beta testing dictation.  This feature may or may not
        be included.  Three new actions are now included:  Start and
        stop dictation and clear dictation buffer.  All of these
        are considered, 'advanced' since there is no other supportin
        user interface, and anything in the dictation buffer must be 
        accessed via token.  The start and stop dictation actions have 
        the option to clear what is in the dictation buffer.  The clear 
        dictation action has the option to just remove the last thing that 
        was said.  As mentioned, there is a dictation buffer that gets filled 
        with each phrase you speak.  There is the usual pause that indicates 
        the end of your statement, and whatever was said will be added to the 
        buffer.  Nothing special here... you'll have to add your own 
        punctuation as you normally do with the Windows speech engine.  
        Multiple entries in the buffer are just appended to one another when
        you access the values from the {DICTATION} token.  Recognized
        commands will be omitted from the dictation buffer if you speak 
        them on their own (that is what I am testing now... the ability 
        to be able to keep dictation going and still say, 'power to shields' 
        and then resume dictation).  Since they are blocks, you can incorporate 
        them in your own commands with whatever spoken value you want 
        ('open quote', 'quote', 'begin dictation'... or all of those... lol).  
        You can incorporate your own stop and start sounds and initialize 
        whatever variables you want to or even call a plugin.  
        New users to VA will probably hate this approach, but I apologize. 
        The ugly side of this is now you will experience the joy of what is 
        the dictation ability of the Windows speech engine.  It is not Dragon.  
        Not even close.  You will say things clearly and it will miss a lot.  
        Try to speak like a robot and it seems to work a little better... o_O
        You've been warned :)  My hope is that as the Windows speech engine
        improves, this will be more useful.
        
        There is a new option in the Profile Options screen called, 
        'Execute a command each time a dictation phrase is recognized'.  
        Enabling this will invoke the specified command every time a dictation
        phrase is spoken.  This could be used for plugins, playing a sound or 
        for whatever you want (mostly for plugins).
        
    -   New replacement tokens: {DICTATION} and 
        {DICTATION:PERIOD:CAPITAL:LATEST:UPPERCASE:LOWERCASE:NEWLINE:SPACEX}
        
        The {DICTATION} token is quite simple.  It is replaced with a simple
        dump of whatever is in the dictation buffer.  So, if you said, 
        'This is a test of the emergency broadcast system' and then later said
        'this is only a test', the result would be 'This is a test of the emergency
        broadcast system this is only a test'.
        
        The other token is an attempt to offer some touchup to whatever is in the 
        buffer.  The speech recognition engine may do all kinds of heinous things
        to your text (as you will see ;))
        
        You can use any or all of the options listed, separated by a colon.
        So, if you simply wanted to add a period to the end of each spoken dictation
        phrase and ensure that the first character is always capitalized, you would
        use {DICTATION:PERIOD:CAPITAL}.  The above example would be rendered as :
        'This is a test of the emergency broadcast system. This is only a test.'.
        If you wanted to also make it so that a line feed is placed between lines,
        you can use {DICTATION:PERIOD:CAPITAL:NEWLINE}.  You will then get
        'This is a test of the emergency broadcast system.
         This is only a test.'.
        
        The options are:
        PERIOD - As said, puts a period in for you at the end of each line.
        CAPITAL - Capitalizes the first character of every line.
        LATEST - Only display the last thing you said.  In the example, you would
        get 'this is only a test'.
        UPPERCASE - Converts all characters to upper case :
        'THIS IS A TEST OF THE EMERGENCY BROADCAST SYSTEM THIS IS ONLY A TEST'
        LOWERCASE - Converts all characters to lower case :
        'this is a test of the emergency broadcast system this is only a test'
        NEWLINE - Makes sure each phrase is on its own line (note that it wont
        show up this way if you write to the log... the log doesn't care about
        new lines).
        SPACEX - Replace the, 'X' with any number, and that many extra spaces
        will be placed at the end of each phrase.  The default is one space.
        So, if you use {DICTATION:SPACE4}, the rendered output will be
        'this is a test of the emergency broadcast system    this is only a test'.
        
        You can put the options in any order.
        
    -   Added new option, 'Recognition prefix exclusions'.  This is a semicolon-
        delimited list of values (the default is, 'if;but;the').  Sometimes
        when we speak commands there are ambient noises.  You might breathe or
        make a, 'pop' noise.  These noises are sometimes interpreted as words.
        For instance, if you have a command called, 'power to shields', you 
        might see it come up as, 'Unrecognized: if power to shields'.  This is
        because the speech engine interpreted the, 'if' from some kind of noise
        it picked up (mostly breathing).  For a long time, VoiceAttack has filtered
        out some words ('if' and 'but').  This doesn't work well with non-English
        speakers and they are hard-coded (of course).  This option lets you pick
        what words to use.  Hope this makes sense...
        
    -   Added option to check for updates on startup... if that's a real 'feature'...
        lol.  Only gives you a message box if there is actually an update.
        
    -   Added some basic automatic profile switching.  You can turn this option on
        and off, 'globally' in the main options screen ('Enable Automatic Profile 
        Switching') and enable per profile in the Profile Options screen 
        ('Enable profile switching for the following windows').  To keep things
        as simple as possible, there is a text box on the Profile Options page 
        that allows you to input the name of the window of the application that 
        you want to look for.  The input for this box is semicolon-delimited so 
        you can associate your profile with more than one application.  Since 
        window titles vary depending on what you are doing, you can also add
        asterisks (*) as kind of a basic wildcard.  If you put the asterisk
        at the end of the title, the search becomes, 'starts with'.  If you 
        put the asterisk at the beginning, the search becomes, 'ends with'.
        If you put an asterisk on each end, the search becomes, 'contains'.
        No asterisks means a direct comparison (of course).  So, lets say
        you want your profile to automatically change when you switch over
        to either your desktop or Notepad.  The desktop window name (oddly
        enough) is Program Manager (I know that's weird... there's some help
        about this down below).  Notepad's window title will change depending
        on the document you are editing.  Your input would look like this:
        'Program Manager;*Notepad*' (without the quotes).  That means it will
        look for a window titled, 'Program Manager' as well as any window 
        that has a title that contains, 'Notepad' (although, I think searching
        for Notepad may only require '*Notepad' (end with)).  Hope this makes
        sense :)
        
        To help with finding out window titles, a new option has been added to
        the VoiceAttack Load Options screen.  To get to this screen, simply
        start VoiceAttack while holding down CTRL + Shift.  Select the option
        titled, 'Show window titles (requires 'Enable Automatic Profile Switching'
        to be checked in the Options screen).'  This will show the window titles
        in the log so you can see what VoiceAttack sees.  This will only run
        for the current session of VoiceAttack.
        
        I wrote like 75% of this back in the summer, and I just left it there
        since I really couldn't see it as a higher priority than other things
        on the schedule.  Then my kid was asking about it.  I think I understand
        now... lol.  Overall, it was hare-brain easy to implement, so, here
        ya go :)
        
    -   Added, 'orange' as a Write to Log icon color... just for fun.
        
-  Bug fixes
    -   First stab at quelling app exit exceptions.
    
    -   Fixed the numpad enter issue that's been around FOREVER.  In DirectX mode,
        you can select either the alpha keyboard enter (Enter) or the numpad enter
        (Num Enter).  The way you need to select the numpad enter key is through 
        the Extended Key Chooser screen (the icon is a small keyboard on the right
        side of the 'Edit/Add a keypress screen).  The reason is because normal 
        Windows forms do not distinguish between the two enter keys.
    
    

v1.5.7.2

-  Improvements
     -  Added sound and tts volume offset sliders to the
        options screen.  Think of these as master volume
        controls for all your sounds/tts.


v1.5.7.1

-  Improvements
     -  Added, 'Disable profile initialization commands' to
        Load Options screen (ctrl + shift on VA startup).
        Also added proper documentation for this screen
        in help file.
        
-  Bug Fixes

     -  Fixed export/import issue with profiles that
        contain values in 'Execute a command each time
        a phrase is unrecognized' or 'Execute a command
        each time this profile is loaded'.

Koz Myk

unread,
Oct 26, 2015, 11:13:18 PM10/26/15
to VoiceAttack
Haha ! Sod's Law of course dictates that I discover your TTS fix just after I uninstall Cereproc Cait. ;^)

I used to get by with the odd crash during editing and no problems in operation.
Then recently, during operational use, the Speech would back up then all come out in one great rush.
So I reluctantly uninstalled.
What a palaver that was!
The ability to access the Win 8 voices in Win 7 was gone.
I don't know if that was the Cereproc install or because of some MS Win update.

Had to redo the Win 8 voice fix in registry.

I'll have to give the new Single TTS feature a try now ... once I muster the mental energy  8^)
Well done Gary for finding a fix.


David Galbraith

unread,
Oct 27, 2015, 8:20:48 AM10/27/15
to VoiceAttack
Love the idea of using VA to dictate text. Too bad Windows speech recognition is complete garbage. Can't dictate even simple sentences correctly even though I've spent hours "training" windows speech recognition. Currently using Wifi Mouse to dictate speech from my phone as my phone's speech recognition is a hundred times more accurate. Maybe consider making an android version of VA? :)

Gary

unread,
Oct 28, 2015, 1:17:25 AM10/28/15
to VoiceAttack
Going to ask a weird favor, David.  Have you tried what's indicated in this thread?


It involves tweaking the registry.  This will be added as an option in a later version of VA, but for now, it's a manual process.  Very curious of your results if you decide to try this.

Gary

Koz Myk

unread,
Oct 29, 2015, 5:34:24 AM10/29/15
to VoiceAttack
Happy to report that my Cereproc Caitlin, once more reinstalled, is working fine in 1.5.7.78 with that Single TTS Instance option.
There's even an advantage for commands linked alongside Joystick button presses; repeated presses just resets the Speech instead of overlaying it 8^)
UK Hazel is nice n'all but I much prefer flying an Irish space ship...
Reply all
Reply to author
Forward
0 new messages