private IEnumerable<string> Initialize() { yield return "Loading MP3 player plugin..."; IMp3PlayerPlugin mp3PlayerPlugin = LoadMp3PlayerPlugin(); if (mp3PlayerPlugin == null) { yield return "The MP3 player plugin specified in the configuration file, " + Properties.Settings.Default.Mp3PlayerPlugin + ", could not be found."; yield return "Try reinstalling Voodoo Voice."; yield break; } yield return "Initializing Speech Recognition..."; CommandRecognizer recognizer = null; try { recognizer = new CommandRecognizer(); } catch (Exception) { } if (recognizer == null) { yield return "Speech recognition could not be initialized. Try reinstalling Voodoo Voice."; yield break; } yield return "Initializing Speech Synthesis..."; Talker talker = new Talker(); yield return "Initializing " + mp3PlayerPlugin.Name + "..."; IMp3Player mp3Player = mp3PlayerPlugin.LoadMp3Player(); if (mp3Player == null) { foreach (string line in mp3PlayerPlugin.Mp3PlayerUnavailableMessage) { yield return line; } yield break; } yield return "Initializing Voodoo Voice Personality Manager..."; m_personalityManager = new PersonalityManager(recognizer, talker, mp3Player); m_personalityManager.PlaylistLoadProgressChanged += new EventHandler<PlaylistProgressEventArgs>(PlaylistLoadPercentCompleted); RaisePersonalityManagerCreated(m_personalityManager); yield return "Loading personality..."; try { m_personality = m_personalityManager.LoadPersonality(Properties.Settings.Default.Personality); } catch (FileNotFoundException) { // Specified personality not found, so attempt to load the default personality instead. m_personality = m_personalityManager.LoadPersonality("DefaultPersonality.psn3"); } }
protected void RaiseNewPersonalityLoaded(Personality personality) { NewPersonalityLoadedHandler temp = NewPersonalityLoaded; if (temp != null) { temp(personality); } }
public Personality LoadPersonality(string filename) { do { m_stopAddingPlaylistEvent.Set(); } while (!Monitor.TryEnter(m_stopAddingPlaylistEvent, 100)); try { do { m_stopAddingPlaylistListEvent.Set(); } while (!Monitor.TryEnter(m_stopAddingPlaylistListEvent, 100)); try { EventLog.Instance.AddEvent(EventType.Information, "VoodooVoice.Personality", "Loading personality from: " + filename); StreamReader reader = new StreamReader(filename); Personality personality = (Personality)m_serializer.Deserialize(reader); if (personality != null) { if (m_activePersonality != null) { UnloadPersonality(); } m_activePersonality = personality; m_activePersonality.Manager = this; m_activePersonality.SourceFile = filename; EventLog.Instance.AddEvent(EventType.Information, "VoodooVoice.Personality", "Successfully loaded personality: " + m_activePersonality.Name); EventLog.Instance.AddEvent(EventType.Information, "PersonalityManager", "Adding basic voice commands..."); // Add all commands to the recognizer and Commit it m_activePersonality.AddToCommandRecognizer(); Recognizer.Commit(); // Notify anyone who cares that a new personality is loaded RaiseNewPersonalityLoaded(m_activePersonality); // Activate the first mode if (m_activePersonality.Modes.Count > 0) { m_activePersonality.Modes[0].Activate(); } // Add percentages to recognizer for (int i = 0; i <= 100; ++i) { Recognizer.AddNumberToList("percent", i); } EventLog.Instance.AddEvent(EventType.Information, "PersonalityManager", "Non-playlist voice commands are now ready to be used!"); AddPlaylistsToRecognizer(Mp3Player, new EventArgs()); AddCurrentPlaylistToRecognizer(Mp3Player, new EventArgs()); EventLog.Instance.AddEvent(EventType.Information, "PersonalityManager", "The playlist has been loaded and all voice commands are now available."); } m_personalities.Add(m_activePersonality); return m_activePersonality; } finally { Monitor.Exit(m_stopAddingPlaylistListEvent); } } finally { Monitor.Exit(m_stopAddingPlaylistEvent); } }
private void NewPersonalityLoaded(Personality personality) { if (InvokeRequired) { Invoke(new PersonalityManager.NewPersonalityLoadedHandler(NewPersonalityLoaded), personality); return; } m_personality = personality; m_personality.ActiveModesChanged += new Personality.ActiveModesChangedHandler(ActiveModesChanged); foreach (PersonalityMode mode in m_personality.Modes) { TreeNode modeNode = commandTree.Nodes.Add(mode.Name); modeNode.ImageIndex = 0; modeNode.SelectedImageIndex = 0; foreach (PersonalityCommand command in mode.Commands) { TreeNode commandNode = modeNode.Nodes.Add(command.Phrase); commandNode.ImageIndex = 1; commandNode.SelectedImageIndex = 1; AddActions(command, commandNode); } modeNode.Expand(); } }