using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Speech.Recognition;
using System.Threading;
namespace VoiceControlSystem
{
public class SpeachToText
{
#region Fields
private SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();
private ManualResetEvent _completed = null;
private bool speachRejectEnabled = false;
private GrammarBuilder gb;
private string configData = "";
public delegate void Response(string text);
public event Response response;
#endregion
#region Properties
public bool SpeechRejectEnabled
{
get { return speachRejectEnabled; }
set { speachRejectEnabled = value; }
}
#endregion
#region Constructors
public SpeachToText()
{
gb = new GrammarBuilder();
}
#endregion
#region Methods
public void Start()
{
//Register events
_recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized);
//_recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(_recognizer_LoadGrammarCompleted);
if (speachRejectEnabled)
{
_recognizer.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(_recognizer_SpeechRecognitionRejected);
}
try
{
_recognizer.SetInputToDefaultAudioDevice(); // set to the first mic detected
_recognizer.RecognizeAsync(RecognizeMode.Multiple);
}
catch (Exception err)
{
response(err.Message);
}
}//End WaitForRec
public void Stop()
{
//_completed.Set();
_recognizer.RecognizeAsyncStop();
_recognizer.Dispose();
GC.Collect();
}//End EndRec
public void AddWord(string word)
{
if (_recognizer != null)
{
_recognizer.RequestRecognizerUpdate();
_recognizer.LoadGrammar(new Grammar(new GrammarBuilder(word)) { Name = word + "Grammer" });
}
}//End AddWord
public void AddWords(List<String> words)
{
foreach (string word in words)
{
Grammar gr = new Grammar(new GrammarBuilder(word));
_recognizer.LoadGrammar(gr);
}
}//End addWords
public void AppendWord(string word)
{
gb.Append(word);
}
public void AppendChoice(string[] choices)
{
gb.Append(new Choices(choices));
}
public void AppenWildCard()
{
gb.AppendWildcard();
}
public void AppendDictation()
{
gb.AppendDictation();
}
public void ApplyGrammars()
{
_recognizer.RequestRecognizerUpdate();
_recognizer.LoadGrammar(new Grammar(gb));
}
public void AddDictation()
{
_recognizer.RequestRecognizerUpdate();
_recognizer.LoadGrammar(new DictationGrammar());
}
public void AddGrammar(Grammar grammar)
{
_recognizer.RequestRecognizerUpdate();
_recognizer.LoadGrammar(grammar);
}
public List<string> GetWords()
{
List<string> words = new List<string>();
foreach (Grammar gr in _recognizer.Grammars)
{
words.Add(gr.RuleName);
}
return words;
}//End GetWords
public void GetConfigData()
{
}
#endregion
#region Events
void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
response(e.Result.Text);
}
void _recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
response("Speach not recognized");
}
void _recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
{
}
#endregion
}//End Class
}//End namespace
if you liked the post please donate bits to : 15FywX3AFfjGdfZyLSBPqCafhfNd9TiqUb