internal static IDetailProvider GetDetailProvider(DetectionEngine detectionEngine) { var providers = new Dictionary <DetectionEngine, Func <IDetailProvider> >() { { DetectionEngine.WindowsDefender, () => new WindowsDefenderDetailProvider() } }; return(providers.TryGetValue(detectionEngine, out var factory) ? factory() : null); }
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; } }
private void Train() { Dictionary<string, IList<ISoundSignalReader>> learningWordSignals = new Dictionary<string, IList<ISoundSignalReader>>(); List<string> learningDirectories = new List<string>(); foreach (var folder in ConfigurationSettings.LearningsFolders) { learningDirectories.AddRange(Directory.GetDirectories(folder)); } foreach (var directory in learningDirectories.Where(item => !item.Contains("catalog"))) { var word = new DirectoryInfo(directory).Name; learningWordSignals.Add(word, new List<ISoundSignalReader>()); var wavFiles = Directory.GetFiles(directory).Select(item => new FileInfo(item)).Where(fItem => fItem.Extension.Contains("wav")); foreach (var file in wavFiles) { learningWordSignals[word].Add(new WavSoundSignalReader(file.FullName)); } } var catalogSignals = new List<ISoundSignalReader>(); catalogSignals.AddRange(learningWordSignals.SelectMany(item => item.Value)); var codeBook = CodeBookFactory.FromWaves(catalogSignals, EngineParameters.Default); var recognitionEngine = new DetectionEngine(codeBook); var result = recognitionEngine.Train(learningWordSignals); //result.Hmm.Save("HMModels.dat"); _models = result.Models; _codebook = result.Catalog; result.Save("SavedData", "model"); }