private void startRecordingButton_Click(object sender, EventArgs e)
 {
     if (wavRecorder == null)
     {
         wavRecorder                 = new WAVRecorder();
         wavRecorder.SampleRate      = 16000;
         wavRecorder.StorageDuration = 10;
     }
     if (!wavRecorder.IsRecording)
     {
         recognizeButton.Enabled = false;
         recordingButton.Text    = "Stop recording";
         wavRecorder.Start();
     }
     else
     {
         wavRecorder.Stop();
         byte[] recordedBytes = wavRecorder.GetAllRecordedBytes();
         if (recordedBytes != null)
         {
             if (recordedBytes.Length > 0)
             {
                 WAVSound sound = new WAVSound("", wavRecorder.SampleRate, wavRecorder.NumberOfChannels, wavRecorder.NumberOfBitsPerSample);
                 sound.AppendSamplesAsBytes(recordedBytes);
                 sound.SetMaximumNonClippingVolume();
                 soundVisualizer.SetSound(sound);
             }
         }
         recordingButton.Text    = "Start recording";
         recognizeButton.Enabled = true;
     }
 }
        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;
                }
            }
        }