public override void Fire() { Init(); //be sure to leave this here if (words.Count > 0) { string word = words[0]; na.BeginEnum(); for (Neuron n = na.GetNextNeuron(); n != null; n = na.GetNextNeuron()) { if (n.Label == word) { n.SetValue(1); // n.CurrentCharge = 1; break; } else if (n.Label == "") { //the word has not been heard before, add it n.Label = word; n.CurrentCharge = 1; //connection to UKS ModuleUKSN nmUKS = (ModuleUKSN)FindModuleByType(typeof(ModuleUKSN)); if (nmUKS != null) { List <Thing> words = nmUKS.Labeled("Word").Children; Thing w = nmUKS.Valued(word, words); if (w == null) { string label = "w" + char.ToUpper(word[0]) + word.Substring(1); w = nmUKS.AddThing(label, new Thing[] { nmUKS.Labeled("Word") }, word); } Neuron n1 = nmUKS.GetNeuron(w); if (n1 != null) { n.AddSynapse(n1.Id, 1); } //TODO: add a synapse to the speakwords module as well } break; } } words.RemoveAt(0); } }
public override void Fire() { Init(); //be sure to leave this here if (synth == null) { return; } bool paused = true; for (int i = 1; i < na.NeuronCount; i++) { Neuron n = na.GetNeuronAt(i); if (n.Fired()) { if (n.Label.Length == 1) { phraseToSpeak += n.Label; paused = false; } if (n.Synapses.Count == 0) { //if a neuron fired and it has no connection, connect it to the knowledge store //connection to KB ModuleUKSN nmKB = (ModuleUKSN)FindModuleByType(typeof(ModuleUKSN)); if (nmKB != null) { string label = "pn" + n.Label; List <Thing> phonemes = nmKB.Labeled("Phoneme").Children; Thing pn = nmKB.Labeled(label, phonemes); if (pn == null) //this should always be null { pn = nmKB.AddThing(label, new Thing[] { nmKB.Labeled("Phoneme") }, pn); } Neuron n1 = nmKB.GetNeuron(pn); if (n1 != null) { n.AddSynapse(n1.Id, 1); n1.SetValue(1); } } } } } if (phonemesToFire != "") { char c = phonemesToFire[0]; bool fired = false; for (int i = 0; i < na.NeuronCount; i++) { Neuron n = na.GetNeuronAt(i); if (n.Label == c.ToString()) { n.SetValue(1); fired = true; break; } } if (!fired) { Utils.Noop(); } phonemesToFire = phonemesToFire.Substring(1); } if (paused && phraseToSpeak != "") { if (dlg != null) { ((ModuleSpeakPhonemesDlg)dlg).SetLabel(phraseToSpeak); } if (na.GetNeuronAt("Enable").Fired()) { ModuleSpeechIn msi = (ModuleSpeechIn)FindModuleByType(typeof(ModuleSpeechIn)); if (msi != null) { msi.PauseRecognition(); //if there is a recognizer active } //synth.SpeakAsync(phraseToSpeak + "."); //phraseToSpeak = ""; PromptBuilder pb1 = new PromptBuilder(); if (typedIn) { pb1.StartVoice("Microsoft David Desktop"); pb1.StartStyle(new PromptStyle(PromptRate.Medium)); } else { pb1.StartVoice("Microsoft Zira Desktop"); pb1.StartStyle(new PromptStyle(PromptRate.ExtraSlow)); } pb1.AppendTextWithPronunciation("not used", phraseToSpeak); pb1.EndStyle(); pb1.EndVoice(); string x = pb1.ToXml(); Debug.WriteLine(debugString(phraseToSpeak)); //synth.Speak(pb1); synth.SpeakAsync(pb1); } //string heard = GetPronunciationFromText("", phraseToSpeak); //it would be nice to hear what was said but it doesn't work with this engine phraseToSpeak = ""; typedIn = false; } }