hello
this is my sample speech recognition code
I have plan of extending the code such that the recognized wored would be the parameter for the switch case which has shell execuete command for different commands.
this is code
csharp
//code
using System;
using System.Speech;
using System.Speech.Recognition;
using System.Threading;
using System.Diagnostics;
using System.Globalization;
namespace SpeechTest
{
class Program
{
static void Main(string[] args)
{
EnumerateEngines();
args = CheckArguments(args);
CommandListener listener = new CommandListener();
listener.SetCommands(args);
listener.Run();
}
private static string[] CheckArguments(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("Setting up default words. Enter your own words via command line arguments");
args = new string[] { "notepad", "shutdown", "restart", "outlook" };
}
Console.Write("Now listening for...");
foreach (string word in args)
{
Console.Write(String.Format("'{0}', ", word));
}
Console.WriteLine("\r\n(Press a key to stop listening)");
return args;
}
private static void EnumerateEngines()
{
Console.WriteLine("The following engines are available");
foreach (RecognizerInfo config in
SpeechRecognitionEngine.InstalledRecognizers())
{
Console.WriteLine(config.Name + " " +
config.Description);
}
}
}
class CommandListener
{
SpeechRecognitionEngine speechRecogniser;
public CommandListener()
{
speechRecogniser = new SpeechRecognitionEngine();
speechRecogniser.SetInputToDefaultAudioDevice();
speechRecogniser.SpeechDetected += new
EventHandler<SpeechDetectedEventArgs>(speechRecogniser_SpeechDetected);
speechRecogniser.SpeechHypothesized += new
EventHandler<SpeechHypothesizedEventArgs>(speechRecogniser_SpeechHypothesized);
speechRecogniser.SpeechRecognitionRejected += new
EventHandler<SpeechRecognitionRejectedEventArgs>(speechRecogniser_SpeechRecognitionRejected);
speechRecogniser.SpeechRecognized += new
EventHandler<SpeechRecognizedEventArgs>(speechRecogniser_SpeechRecognized);
speechRecogniser.AudioStateChanged += new
EventHandler<AudioStateChangedEventArgs>(speechRecogniser_AudioStateChanged);
speechRecogniser.AudioSignalProblemOccurred += new
EventHandler<AudioSignalProblemOccurredEventArgs>(speechRecogniser_AudioSignalProblemOccurred);
}
#region Event Handlers
void speechRecogniser_AudioSignalProblemOccurred(object
sender, AudioSignalProblemOccurredEventArgs e)
{
NotifyEvent("Audio problem {0}",
e.AudioSignalProblem.ToString("G"));
}
void speechRecogniser_AudioStateChanged(object sender,
AudioStateChangedEventArgs e)
{
NotifyEvent("Audio state now {0}",
e.AudioState.ToString("G"));
}
void speechRecogniser_SpeechRecognized(object sender,
SpeechRecognizedEventArgs e)
{
NotifyEvent("Recognized '{0}' at {1} seconds",
e.Result.Text, e.Result.Audio.AudioPosition);
}
void speechRecogniser_SpeechRecognitionRejected(object sender,
SpeechRecognitionRejectedEventArgs e)
{
NotifyEvent("RecognitionRejected '{0}' at {1} seconds",
e.Result.Text, e.Result.Audio.AudioPosition);
}
void speechRecogniser_SpeechHypothesized(object sender,
SpeechHypothesizedEventArgs e)
{
NotifyEvent("Hypothesized '{0}' at seconds",
e.Result.Text);
}
void speechRecogniser_SpeechDetected(object sender,
SpeechDetectedEventArgs e)
{
NotifyEvent("Detected speech at {0} seconds",
e.AudioPosition.TotalSeconds);
}
#endregion
public void SetCommands(string[] commands)
{
GrammarBuilder grammarBuilder = new GrammarBuilder();
grammarBuilder.Culture =
speechRecogniser.RecognizerInfo.Culture;
grammarBuilder.Append(new Choices(commands));
Grammar grammar = new Grammar(grammarBuilder);
speechRecogniser.UnloadAllGrammars();
speechRecogniser.LoadGrammar(grammar);
speechRecogniser.RecognizeAsync(RecognizeMode.Multiple);
}
public void Run()
{
while (!Console.KeyAvailable)
{
Thread.Sleep(100);
}
speechRecogniser.Dispose();
}
private static void NotifyEvent(string format, params object[] args)
{
Console.WriteLine(string.Format(format, args));
}
}
}
what i want is to send the recognized word to switch case and get that particular command executed.
thankqq
Please use code tags =>
This post has been edited by PsychoCoder: 10 Apr, 2008 - 03:25 AM