Пример #1
0
        /// <summary>
        /// Returns the winner
        /// Item1: Sound name
        /// Item2: Deviation
        /// Item3: Recognized
        /// </summary>
        /// <param name="sound"></param>
        /// <returns></returns>
        private Tuple <string, double, bool> recognize(WAVSound sound, IsolatedWordRecognizer recognizer)
        {
            RecognitionResult recognitionResult = recognizer.RecognizeSingle(sound);

            Tuple <string, double> best = recognitionResult.DeviationList[0];
            bool recognized             = best.Item2 < recognizer.RecognitionThreshold;

            //Console.WriteLine("min = " + recognitionResult.DeviationList[0].Item2 +
            //    ", max = " + recognitionResult.DeviationList[recognitionResult.DeviationList.Count-1].Item2);

            return(Tuple.Create(best.Item1, best.Item2, recognized));
        }
        private void recognizeButton_Click(object sender, EventArgs e)
        {
            WAVSound copiedTestSound = soundVisualizer.Sound.Copy();

            if (setMaximumNonclippingVolumeToolStripMenuItem.Checked)
            {
                copiedTestSound.SetMaximumNonClippingVolume();
                soundVisualizer.SetSound(copiedTestSound);
            }
            recognitionResult = recognizer.RecognizeSingle(copiedTestSound);
            // 20170114
            if (recognitionResult == null)
            {
                recognitionResultTextBox.Text = "No sound data!";
                return;
            }
            // end 20170114
            deviationListBox.Items.Clear();
            for (int ii = 0; ii < recognitionResult.DeviationList.Count; ii++)
            {
                deviationListBox.Items.Add(recognitionResult.DeviationList[ii].Item1.PadRight(16) + " " +
                                           recognitionResult.DeviationList[ii].Item2.ToString("0.0000"));
            }
            if (recognitionResult.DeviationList.Count > 0)
            {
                if (recognitionResult.DeviationList[0].Item2 < recognizer.RecognitionThreshold)
                {
                    recognitionResultTextBox.Text = recognitionResult.DeviationList[0].Item1;
                }
                else
                {
                    recognitionResultTextBox.Text = "UNKNOWN";
                }
                featureComparisonComboBox.Items.Clear();
                if (recognizer.AverageSoundFeatureSetList.Count > 0)
                {
                    for (int ii = 0; ii < recognizer.AverageSoundFeatureSetList[0].FeatureList.Count; ii++)
                    {
                        featureComparisonComboBox.Items.Add(recognizer.AverageSoundFeatureSetList[0].FeatureList[ii].Name);
                    }
                    featureComparisonComboBox.SelectedIndex = 0;
                }
            }
        }