Пример #1
0
        private double evaluate(int iIndividual)
        {
            recognizer.WeightList = population[iIndividual];
            IsolatedWordRecognizer iRecognizer = clones[iIndividual];
            double          fitness            = 0;
            List <WAVSound> testKnown          = new List <WAVSound>(KNOWN_SOUNDS_PER_TEST);
            List <WAVSound> testUnknown        = new List <WAVSound>(UNKNOWN_SOUNDS_PER_TEST);

            for (int i = 0; i < SAMPLE_SIZE; i++)
            {
                testKnown.Clear();
                testUnknown.Clear();
                populateRandomKnown(testKnown);
                populateRandomUnknown(testUnknown);

                foreach (WAVSound sound in testKnown)
                {
                    fitness += evaluateKnown(sound, iRecognizer);
                }

                foreach (WAVSound sound in testUnknown)
                {
                    fitness += evaluateUnknown(sound, iRecognizer);
                }
            }

            return(fitness / SAMPLE_SIZE);
        }
Пример #2
0
        private void loadToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "XML files (*.xml)|*.xml";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                recognizer = (IsolatedWordRecognizer)ObjectXmlSerializer.ObtainSerializedObject(openFileDialog.FileName, typeof(IsolatedWordRecognizer));
                recognizer.AvailableSoundsChanged += new EventHandler(HandleAvailableSoundsChanged);
                ShowParameters();
                ToggleParametersEditable(false);
                speechRecognizerEditingToolStrip.Visible = true;
                saveToolStripMenuItem.Enabled            = true;
                featurePlotPanel.Clear();
                HandleAvailableSoundsChanged(this, EventArgs.Empty); // A bit ugly, but OK...

                clones.Clear();
                //NUMBER OF INDIVIDUALS
                for (int i = 0; i < 100; i++)
                {
                    IsolatedWordRecognizer clone = (IsolatedWordRecognizer)ObjectXmlSerializer.ObtainSerializedObject(openFileDialog.FileName, typeof(IsolatedWordRecognizer));
                    clones.Add(clone);
                }
            }
        }
Пример #3
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 newToolStripMenuItem_Click(object sender, EventArgs e)
 {
     recognizer = new IsolatedWordRecognizer();
     recognizer.AvailableSoundsChanged += new EventHandler(HandleAvailableSoundsChanged);
     recognizer.Name = "IWR1";
     SetParameters();
     ToggleParametersEditable(false);
     featurePlotPanel.Clear();
     HandleAvailableSoundsChanged(this, EventArgs.Empty); // A bit ugly, but OK.
     speechRecognizerEditingToolStrip.Visible = true;
     saveToolStripMenuItem.Enabled            = true;
 }
Пример #5
0
        private double evaluateKnown(WAVSound knownSound, IsolatedWordRecognizer recognizer)
        {
            double fitness;
            Tuple <string, double, bool> result = recognize(knownSound, recognizer);

            if (result.Item3 && knownSound.Name == result.Item1)
            {
                fitness = -Math.Log10(result.Item2);
            }
            else
            {
                fitness = -(Math.Pow(10, 3 * result.Item2) - 1) * 20; //Didn't recognize or recognized wrong sound
            }
            //Console.WriteLine("    " + knownSound.Name + ": RESULT = " + result.Item1 + ", d = " + result.Item2 + ", R = " + (result.Item3 && knownSound.Name.Equals(result.Item1)));
            return(fitness);
        }
Пример #6
0
        private double evaluateUnknown(WAVSound unknownSound, IsolatedWordRecognizer recognizer)
        {
            double fitness;

            Tuple <string, double, bool> result = recognize(unknownSound, recognizer);

            if (!result.Item3)
            {
                fitness = Math.Pow(10, 3 * result.Item2) - 1; //Doesnt recgonize unknown sound - good!
            }
            else
            {
                fitness = Math.Log10(result.Item2) * 20; //Recgonized unknown sound as known.
            }
            //Console.WriteLine("    " + unknownSound.Name + ": RESULT = " + result.Item1 + ", d = " + result.Item2 + ", R = " + (result.Item3 && unknownSound.Name.Equals(result.Item1)));
            return(fitness);
        }
        private void Initialize()
        {
            recognizer = new IsolatedWordRecognizer();
            ShowParameters();
            recognizer = null;
            featurePlotPanel.SetFrameSize(50, 20, 20, 20);
            featurePlotPanel.VerticalAxisVisible                = true;
            featurePlotPanel.AxisColor                          = Color.Black;
            featurePlotPanel.HorizontalAxisVisible              = true;
            featurePlotPanel.MajorHorizontalTickMarksVisible    = true;
            featurePlotPanel.MajorHorizontalTickMarkSpacing     = 0.1;
            featurePlotPanel.HorizontalAxisMarkingsVisible      = true;
            featurePlotPanel.HorizontalAxisMarkingsFormatString = "0.00";
            featurePlotPanel.MajorVerticalTickMarksVisible      = true;
            featurePlotPanel.MajorVerticalTickMarkSpacing       = 0.5;
            featurePlotPanel.VerticalAxisMarkingsFormatString   = "0.00";
            featurePlotPanel.GridVisible                        = true;
            featurePlotPanel.GridColor                          = Color.Silver;
            featurePlotPanel.HorizontalAxisLabel                = "time";
            featurePlotPanel.SetHorizontalPlotRange(0.0, 1.0);
            featurePlotPanel.SetVerticalPlotRange(-2.001, 2);
            featurePlotPanel.SetHorizontalAxisPosition(0);
            featurePlotPanel.SetVerticalAxisPosition(0);

            featureComparisonPlotPanel.SetFrameSize(50, 20, 20, 20);
            featureComparisonPlotPanel.VerticalAxisVisible                = true;
            featureComparisonPlotPanel.AxisColor                          = Color.Black;
            featureComparisonPlotPanel.HorizontalAxisVisible              = true;
            featureComparisonPlotPanel.MajorHorizontalTickMarksVisible    = true;
            featureComparisonPlotPanel.MajorHorizontalTickMarkSpacing     = 0.1;
            featureComparisonPlotPanel.HorizontalAxisMarkingsVisible      = true;
            featureComparisonPlotPanel.HorizontalAxisMarkingsFormatString = "0.00";
            featureComparisonPlotPanel.MajorVerticalTickMarksVisible      = true;
            featureComparisonPlotPanel.MajorVerticalTickMarkSpacing       = 0.5;
            featureComparisonPlotPanel.VerticalAxisMarkingsFormatString   = "0.00";
            featureComparisonPlotPanel.GridVisible                        = true;
            featureComparisonPlotPanel.GridColor                          = Color.Silver;
            featureComparisonPlotPanel.HorizontalAxisLabel                = "time";
            featureComparisonPlotPanel.SetHorizontalPlotRange(0.0, 1.0);
            featureComparisonPlotPanel.SetVerticalPlotRange(-2.001, 2);
            featureComparisonPlotPanel.SetHorizontalAxisPosition(0);
            featureComparisonPlotPanel.SetVerticalAxisPosition(0);
        }
Пример #8
0
 public EvolutionaryAlgorithm(IsolatedWordRecognizer recognizer, List <IsolatedWordRecognizer> clones)
 {
     this.recognizer       = recognizer;
     this.clones           = clones;
     NUMBER_OF_INDIVIDUALS = clones.Count;
 }
Пример #9
0
 public void SetRecognizer(IsolatedWordRecognizer recognizer)
 {
     this.recognizer = recognizer;
 }