private void StartStopRecognition(object sender, RoutedEventArgs e) { if (_currentState == AppState.Idle) { txtRecognizedText.Text = string.Empty; var recognitionEngine = new DetectionEngine(_codebook, _models); _signal = new MicrophoneSoundSignalReader(); var length = (_signal.SampleRate / 1000.0) * EngineParameters.Default.StepSizeMiliseconds; if (_aggregator != null) { _aggregator.SampleReady -= AggregatorSampleReady; } _aggregator = new SampleAggregator(Convert.ToInt32(length)); _aggregator.SampleReady += AggregatorSampleReady; _signal.Start(); Action action = () => { Thread.Sleep(3000); recognitionEngine.RecognizeAsync(_signal, OnMessageReceived, _aggregator); }; action.BeginInvoke(null, null); btnRecog.Content = "Stop Recognition"; _currentState = AppState.Recognition; } else { btnRecog.Content = "Start Recognition"; _signal.Close(); _currentState = AppState.Idle; _aggregator.SampleReady -= AggregatorSampleReady; _aggregator = null; } }
public TrainResult Train(Dictionary<string, IList<ISoundSignalReader>> signalsDictionary, SampleAggregator aggregator = null) { Parallel.ForEach(signalsDictionary, item => { BuildModel(item.Value, item.Key, aggregator); }); return new TrainResult { Catalog = _codeBook, Models = _models.Values.ToArray() }; }
private void AggregatorSampleReady(object sender, SampleAggregator.SamplePointEventArgs e) { renderer.AddValue(e.Point); }
public void AddValue(SampleAggregator.SamplePoint samplePoint) { _queue.Enqueue(samplePoint); var action = new Action(Refresh); Dispatcher.BeginInvoke(action, DispatcherPriority.Render); }