I followed a very basic tutorial (forgot the link) and it all seems straightforward, but I don't seem to be getting the output I want. Here is my main form class:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Speech.Recognition; namespace OralNotes.Alpha { public partial class MainForm : Form { private SpeechRecognitionEngine recognitionEngine; public MainForm() { InitializeComponent(); recognitionEngine = new SpeechRecognitionEngine(); recognitionEngine.SetInputToDefaultAudioDevice(); recognitionEngine.SpeechRecognized += (s, args) => { foreach (RecognizedWordUnit word in args.Result.Words) { if (word.Confidence > 0.8f) txtNotes.Text += word.Text + " "; } txtNotes.Text += Environment.NewLine; }; recognitionEngine.LoadGrammar(new DictationGrammar()); } private void btnStart_Click(object sender, EventArgs e) { recognitionEngine.RecognizeAsync(); } private void btnStop_Click(object sender, EventArgs e) { recognitionEngine.RecognizeAsyncStop(); } } } And you probably don't need this, but here it is anyway:
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace OralNotes.Alpha { static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } } I click start and talk, and nothing happens.
UPDATE*
ok so this is working, if I adjust this line
if (word.Confidence > 0.8f) to a lower number I get a word or two in. Not transcribing sentences or anything, is there a way to make this have better recognition?