Well I think I've got it! This is pretty outstanding so I'm going to be brief just to share the bare bones functionality. Hopefully I'll have more time next week to better expand upon this in the Inline Functions thread.
In a nutshell you have to leverage the Microsoft Speech API (SAPI) 5.4 (or maybe newer versions work as well?). You'll need to reference Interop.SpeechLib.dll (attached), and using a C# inline function you can add and remove words from the user lexicon (dictionary).
Here is the base code from Visual Studio to remove a word:
using System;
using SpeechLib;
SpLexicon lex = new SpLexicon();
int langid = new System.Globalization.CultureInfo("en-US").LCID;
lex.RemovePronunciation("poticharoo", langid, SpeechPartOfSpeech.SPSNoun, "p ow t iy ch ax r uw");
Here is the base code to add a word:
using System;
using SpeechLib;
SpLexicon lex = new SpLexicon();
int langid = new System.Globalization.CultureInfo("en-US").LCID;
lex.AddPronunciation("poticharoo", langid, SpeechPartOfSpeech.SPSNoun, "p ow t iy ch ax r uw");
The odd string of characters at the end of the function are the symbolic phones that the system interprets. I've compiled some information about this and attached it as well.
I've only done a bit of testing but trying to get Windows Speech Recognition (not VoiceAttack) to recognize "poticharoo" by default has terrible results. VoiceAttack also does not know what to do with it (expected, since VA leverages WSR).
However by simply using the above code to add the word it becomes recognized by both applications. Note that I did not provide any recordings of me saying "poticharoo," this is all handled just through this C# code. After adding the word you can open the WSR dictionary and it should be listed. To top it off, VoiceAttack TTS also pronounces the word correctly once you add it this way!
Give it a try! More details (and probably some reviewing with Gary) to follow