C# Speach Recognition


SUBMITTED BY: Guest

DATE: Nov. 25, 2014, 10:57 a.m.

FORMAT: Text only

SIZE: 5.0 kB

HITS: 1020

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Speech.Recognition;
  6. using System.Threading;
  7. namespace VoiceControlSystem
  8. {
  9. public class SpeachToText
  10. {
  11. #region Fields
  12. private SpeechRecognitionEngine _recognizer = new SpeechRecognitionEngine();
  13. private ManualResetEvent _completed = null;
  14. private bool speachRejectEnabled = false;
  15. private GrammarBuilder gb;
  16. private string configData = "";
  17. public delegate void Response(string text);
  18. public event Response response;
  19. #endregion
  20. #region Properties
  21. public bool SpeechRejectEnabled
  22. {
  23. get { return speachRejectEnabled; }
  24. set { speachRejectEnabled = value; }
  25. }
  26. #endregion
  27. #region Constructors
  28. public SpeachToText()
  29. {
  30. gb = new GrammarBuilder();
  31. }
  32. #endregion
  33. #region Methods
  34. public void Start()
  35. {
  36. //Register events
  37. _recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(_recognizer_SpeechRecognized);
  38. //_recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(_recognizer_LoadGrammarCompleted);
  39. if (speachRejectEnabled)
  40. {
  41. _recognizer.SpeechRecognitionRejected += new EventHandler<SpeechRecognitionRejectedEventArgs>(_recognizer_SpeechRecognitionRejected);
  42. }
  43. try
  44. {
  45. _recognizer.SetInputToDefaultAudioDevice(); // set to the first mic detected
  46. _recognizer.RecognizeAsync(RecognizeMode.Multiple);
  47. }
  48. catch (Exception err)
  49. {
  50. response(err.Message);
  51. }
  52. }//End WaitForRec
  53. public void Stop()
  54. {
  55. //_completed.Set();
  56. _recognizer.RecognizeAsyncStop();
  57. _recognizer.Dispose();
  58. GC.Collect();
  59. }//End EndRec
  60. public void AddWord(string word)
  61. {
  62. if (_recognizer != null)
  63. {
  64. _recognizer.RequestRecognizerUpdate();
  65. _recognizer.LoadGrammar(new Grammar(new GrammarBuilder(word)) { Name = word + "Grammer" });
  66. }
  67. }//End AddWord
  68. public void AddWords(List<String> words)
  69. {
  70. foreach (string word in words)
  71. {
  72. Grammar gr = new Grammar(new GrammarBuilder(word));
  73. _recognizer.LoadGrammar(gr);
  74. }
  75. }//End addWords
  76. public void AppendWord(string word)
  77. {
  78. gb.Append(word);
  79. }
  80. public void AppendChoice(string[] choices)
  81. {
  82. gb.Append(new Choices(choices));
  83. }
  84. public void AppenWildCard()
  85. {
  86. gb.AppendWildcard();
  87. }
  88. public void AppendDictation()
  89. {
  90. gb.AppendDictation();
  91. }
  92. public void ApplyGrammars()
  93. {
  94. _recognizer.RequestRecognizerUpdate();
  95. _recognizer.LoadGrammar(new Grammar(gb));
  96. }
  97. public void AddDictation()
  98. {
  99. _recognizer.RequestRecognizerUpdate();
  100. _recognizer.LoadGrammar(new DictationGrammar());
  101. }
  102. public void AddGrammar(Grammar grammar)
  103. {
  104. _recognizer.RequestRecognizerUpdate();
  105. _recognizer.LoadGrammar(grammar);
  106. }
  107. public List<string> GetWords()
  108. {
  109. List<string> words = new List<string>();
  110. foreach (Grammar gr in _recognizer.Grammars)
  111. {
  112. words.Add(gr.RuleName);
  113. }
  114. return words;
  115. }//End GetWords
  116. public void GetConfigData()
  117. {
  118. }
  119. #endregion
  120. #region Events
  121. void _recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  122. {
  123. response(e.Result.Text);
  124. }
  125. void _recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
  126. {
  127. response("Speach not recognized");
  128. }
  129. void _recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
  130. {
  131. }
  132. #endregion
  133. }//End Class
  134. }//End namespace
  135. if you liked the post please donate bits to : 15FywX3AFfjGdfZyLSBPqCafhfNd9TiqUb

comments powered by Disqus