private void MiUncertain_Click(object sender, EventArgs e)
        {
            ToolStripItem tsi = sender as ToolStripMenuItem;

            if (tsi != null)
            {
                WordInfo wi = tsi.Tag as WordInfo;
                if (wi != null)
                {
                    int      oldLen     = wi.Text.Length;
                    int      newLen     = tsi.Text.Length;
                    string   oldWord    = wi.Text;
                    string   newWord    = tsi.Text.PadRight(oldLen - newLen);
                    WordInfo wiToChange = wordLines.SelectMany(s => s.Value).Where(w => w.Id == wi.Id).SingleOrDefault();
                    wiToChange.Text = newWord;
                    RefreshText();
                }
            }
        }
Beispiel #2
0
        private void SetUpWithFile(string filePath)
        {
            RecognizerInfo info = null;

            foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers())
            {
                if (ri.Culture.TwoLetterISOLanguageName.Equals("en"))
                {
                    info = ri;
                    break;
                }
            }
            if (info == null)
            {
                return;
            }

            /*Set up audio*/
            audioStream = new WaveFileReader(filePath);
            TimeSpan audioStreamTotalTime = audioStream.TotalTime;

            // Create the selected recognizer.
            recognitionEngine = new SpeechRecognitionEngine(info);
            recognitionEngine.LoadGrammar(new DictationGrammar());
            recognitionEngine.SetInputToWaveFile(filePath);
            StringBuilder sb = new StringBuilder();

            recognitionEngine.SpeechRecognized += (s, args) =>
            {
                TimeSpan currentTime = new TimeSpan(recognitionEngine.RecognizerAudioPosition.Ticks);
                string   time        = String.Format("[{0:D2}:{1:D2}.{2:D2}]", currentTime.Minutes, currentTime.Seconds, currentTime.Milliseconds);

                /*Update progress label*/
                String positionString = String.Format("{0} / {1}", currentTime, audioStreamTotalTime);
                toolStripStatusLabelPosition.Text = positionString;
                double progress = (double)currentTime.Ticks / (double)audioStreamTotalTime.Ticks * 100.0;
                toolStripProgressBar1.Value = (int)progress;

                List <WordInfo> wordInfos = new List <WordInfo>();
                foreach (RecognizedWordUnit word in args.Result.Words)
                {
                    WordInfo wi;
                    string   confidenceStr = String.Format("{0:0}", word.Confidence * 100);
                    if (word.Confidence >= confidence)
                    {
                        wi = WordInfo.Create(word.Text, confidenceStr, word.LexicalForm);
                    }
                    else
                    {
                        string text = String.Format("[SKIPPED]", confidenceStr);
                        wi = WordInfo.Create(text, confidenceStr, word.LexicalForm);
                    }
                    wordInfos.Add(wi);
                }
                txtOutput.AddLine(currentTime, wordInfos);
                txtOutput.RefreshText();
            };
            recognitionEngine.RecognizeCompleted += RecognitionEngine_RecognizeCompleted;
            btnStart.Enabled = true;
            toolStripStatusLabelStatus.Text = "File loaded: " + filePath;
            lblConfValue.Text = String.Format("{0:P2}", confidence);
        }