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); }
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); } } }
/// <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; }
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); }
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); }
public EvolutionaryAlgorithm(IsolatedWordRecognizer recognizer, List <IsolatedWordRecognizer> clones) { this.recognizer = recognizer; this.clones = clones; NUMBER_OF_INDIVIDUALS = clones.Count; }
public void SetRecognizer(IsolatedWordRecognizer recognizer) { this.recognizer = recognizer; }