5

I have some simple code from the System.Speech.Recognition that works fine:

using (var recognizer = new SpeechRecognitionEngine(new CultureInfo("en-US")))
{
    recognizer.LoadGrammar(new DictationGrammar());
    recognizer.SpeechRecognized += recognizer_SpeechRecognized;
    recognizer.SetInputToDefaultAudioDevice();
    recognizer.RecognizeAsync(RecognizeMode.Multiple);
}

private void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
    textBox1.Text = "Recognized text: " + e.Result.Text;
}

When using Windows 7, and I do the speech training at "Control Panel" -> "Speech Recognition" -> "Train your computer to better understand you".

Does my program automatically utilize any training that has been done? Are the training benefits based by user or by machine? Can these speech "profiles" be moved (easily)?

Community
  • 1
  • 1
bulltorious
  • 7,769
  • 4
  • 49
  • 78

3 Answers3

2

Yes, training (particularly for dictation) is useful. Accuracy can improve by 20-50% with training. (This is especially true if the user has an accent.)

The training benefits are per user.

Microsoft has a tool that copies speech profiles, but it's built for an older version of the SR engine (XP-era), and as far as I know, nobody at Microsoft is willing to either update it or vouch for it on newer SR engines. If you want to try it, Bing for "Speech Profile Manager", and it will pop right up.

Eric Brown
  • 13,774
  • 7
  • 30
  • 71
1

Yes, it appears that though it may not be necessary to train it, it can be done: this site, and this site.

Deep in the Code
  • 572
  • 1
  • 6
  • 20
  • 2
    Thanks David, I know it doesn't need to be trained to work as the code functions. I am basically wondering if it is worth telling people to train their Windows 7, as it will make the above code work better? And if this is true, is that benefit based on the logged in user or by machine. – bulltorious Mar 06 '13 at 22:22
  • In most cases, no. If almost everything is being recognized, training would only increase performance marginally. – Deep in the Code Mar 06 '13 at 22:23
0

I think when you are using the Dictation grammar, training would be helpful. If you are using a more limited application grammar, training would be less valuable.

Keep in mind, one of the key differences between the Windows client speech recognition APIs (System.Speech) and the server speech recognition APIs (Microsoft.speech) is that the server APIs are intended to be multiuser and cannot be trained (think about voice automated phone systems, you can't train for every caller). This SO question may be helpful if you are curious - What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?

Community
  • 1
  • 1
Michael Levy
  • 13,097
  • 15
  • 66
  • 100