Example #1
0
        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");
            }
        }
Example #2
0
 protected void RaiseNewPersonalityLoaded(Personality personality)
 {
     NewPersonalityLoadedHandler temp = NewPersonalityLoaded;
     if (temp != null)
     {
         temp(personality);
     }
 }
Example #3
0
        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);
            }
        }
Example #4
0
        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();
            }
        }