A storage helper that's used to persist values to files to be used across pages
示例#1
0
        /// <summary>
        /// Initialize the speaker information
        /// </summary>
        private async void initializeSpeaker()
        {
            IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
            string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME);

            if (_savedSpeakerId != null)
            {
                _speakerId = new Guid(_savedSpeakerId);
            }
            record.IsEnabled = false;
            if (_speakerId == Guid.Empty)
            {
                bool created = await createProfile();

                if (created)
                {
                    refreshPhrases();
                }
            }
            else
            {
                setStatus("Using profile Id: " + _speakerId.ToString());
                refreshPhrases();
                string enrollmentsStatus = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENTS);
                if ((enrollmentsStatus != null) && (enrollmentsStatus.Equals("Done")))
                {
                    resetBtn.IsEnabled = true;
                }
            }
        }
示例#2
0
        /// <summary>
        /// Creates a speaker profile
        /// </summary>
        /// <returns>A boolean indicating the success/failure of the process</returns>
        private async Task <bool> createProfile()
        {
            setStatus("Creating Profile...");
            try
            {
                Stopwatch             sw       = Stopwatch.StartNew();
                CreateProfileResponse response = await _serviceClient.CreateProfileAsync("en-us");

                sw.Stop();
                setStatus("Profile Created, Elapsed Time: " + sw.Elapsed);
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                _storageHelper.writeValue(MainWindow.SPEAKER_FILENAME, response.ProfileId.ToString());
                _speakerId = response.ProfileId;
                return(true);
            }
            catch (CreateProfileException exception)
            {
                setStatus("Cannot create profile: " + exception.Message);
                return(false);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
                return(false);
            }
        }
示例#3
0
        /// <summary>
        /// Enrolls the audio of the speaker
        /// </summary>
        /// <param name="audioStream">The audio stream</param>
        private async void enrollSpeaker(Stream audioStream)
        {
            try
            {
                Stopwatch  sw       = Stopwatch.StartNew();
                Enrollment response = await _serviceClient.EnrollAsync(audioStream, _speakerId);

                sw.Stop();
                _remainingEnrollments = response.RemainingEnrollments;
                setStatus("Enrollment Done, Elapsed Time: " + sw.Elapsed);
                verPhraseText.Text = response.Phrase;
                setStatus("Your phrase: " + response.Phrase);
                setUserPhrase(response.Phrase);
                remEnrollText.Text = response.RemainingEnrollments.ToString();
                if (response.RemainingEnrollments == 0)
                {
                    MessageBox.Show("You have now completed the minimum number of enrollments. You may perform verification or add more enrollments", "Speaker enrolled");
                }
                resetBtn.IsEnabled = true;
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, "Done");
            }
            catch (EnrollmentException exception)
            {
                setStatus("Cannot enroll speaker: " + exception.Message);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
            }
        }
        /// <summary>
        /// Remove current speaker Id
        /// </summary>
        /// <param name="sender">Sender object responsible for event</param>
        /// <param name="e">A set of arguments sent to the listener</param>
        private async void resetBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                setStatus("Resetting profile: " + _speakerId);
                await _serviceClient.ResetEnrollmentsAsync(_speakerId);

                setStatus("Profile reset");
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                resetBtn.IsEnabled = false;

                Profile profile = await _serviceClient.GetProfileAsync(_speakerId);

                setDisplayText(profile.RemainingEnrollmentsCount.ToString(), "");

                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, profile.RemainingEnrollmentsCount.ToString());
                _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, "");
                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENT_STATUS, "Empty");
            }
            catch (ResetEnrollmentsException exp)
            {
                setStatus("Cannot reset Profile: " + exp.Message);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
            }
        }
        /// <summary>
        /// Initialization constructor for the verify speaker page
        /// </summary>
        public VerifySpeakerPage()
        {
            InitializeComponent();
            try
            {
                _subscriptionKey = ((MainWindow)Application.Current.MainWindow).SubscriptionKey;
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME);
                if (_savedSpeakerId != null)
                {
                    _speakerId = new Guid(_savedSpeakerId);
                }

                if (_speakerId == Guid.Empty)
                {
                    ((MainWindow)Application.Current.MainWindow).Log("You need to create a profile and complete enrollments first before verification");
                    recordBtn.IsEnabled     = false;
                    stopRecordBtn.IsEnabled = false;
                }
                else
                {
                    initializeRecorder();
                    _serviceClient = new SpeakerVerificationServiceClient(_subscriptionKey);
                    string userPhrase = _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME);
                    userPhraseTxt.Text      = userPhrase;
                    stopRecordBtn.IsEnabled = false;
                }
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
                recordBtn.IsEnabled     = false;
                stopRecordBtn.IsEnabled = false;
            }
        }
        /// <summary>
        /// Creates a speaker profile
        /// </summary>
        /// <returns>A boolean indicating the success/failure of the process</returns>
        private async Task <bool> createProfile()
        {
            setStatus("Creating Profile...");
            try
            {
                Stopwatch             sw       = Stopwatch.StartNew();
                CreateProfileResponse response = await _serviceClient.CreateProfileAsync("en-us");

                sw.Stop();
                setStatus("Profile Created, Elapsed Time: " + sw.Elapsed);
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                _storageHelper.writeValue(MainWindow.SPEAKER_FILENAME, response.ProfileId.ToString());
                _speakerId = response.ProfileId;

                Profile profile = await _serviceClient.GetProfileAsync(_speakerId);

                setDisplayText(profile.RemainingEnrollmentsCount.ToString(), "");

                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, profile.RemainingEnrollmentsCount.ToString());
                _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, "");
                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENT_STATUS, "Empty");

                return(true);
            }
            catch (CreateProfileException exception)
            {
                setStatus("Cannot create profile: " + exception.Message);
                return(false);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
                return(false);
            }
        }
示例#7
0
 /// <summary>
 /// Creates an Instance of the storage helper
 /// </summary>
 /// <returns></returns>
 public static IsolatedStorageHelper getInstance()
 {
     if (s_helper == null)
     {
         s_helper = new IsolatedStorageHelper();
     }
     return(s_helper);
 }
        /// <summary>
        /// Initialize the speaker information
        /// </summary>
        private async void initializeSpeaker()
        {
            IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
            string _savedSpeakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME);

            if (_savedSpeakerId != null)
            {
                _speakerId = new Guid(_savedSpeakerId);
            }
            record.IsEnabled = false;
            if (_speakerId == Guid.Empty)
            {
                bool created = await createProfile();

                if (created)
                {
                    refreshPhrases();
                }
                resetBtn.IsEnabled = false;
            }
            else
            {
                setStatus("Using profile Id: " + _speakerId.ToString());
                refreshPhrases();

                string remEnrollments = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENTS);
                int    _remainingEnrollments;
                if (!Int32.TryParse(remEnrollments, out _remainingEnrollments))
                {
                    Profile profile = await _serviceClient.GetProfileAsync(_speakerId);

                    _remainingEnrollments = profile.RemainingEnrollmentsCount;
                    _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, _remainingEnrollments.ToString());
                }
                string enrollmentStatus = _storageHelper.readValue(MainWindow.SPEAKER_ENROLLMENT_STATUS);
                if (enrollmentStatus != null && !enrollmentStatus.Equals("Empty"))
                {
                    resetBtn.IsEnabled = true;
                }

                setDisplayText(_remainingEnrollments.ToString(), _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME));
            }
        }
        /// <summary>
        /// Initialization constructor for the verify speaker page
        /// </summary>
        public VerifySpeakerPage()
        {
            InitializeComponent();
            _subscriptionKey = ((MainWindow)Application.Current.MainWindow).SubscriptionKey;
            IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();

            _speakerId = _storageHelper.readValue(MainWindow.SPEAKER_FILENAME);
            if (_speakerId == null)
            {
                ((MainWindow)Application.Current.MainWindow).Log("You need to create a profile and complete enrollments first before verification");
                recordBtn.IsEnabled     = false;
                stopRecordBtn.IsEnabled = false;
            }
            else
            {
                initializeRecorder();
                _serviceClient = new SpeechVerificationServiceClient(_subscriptionKey);
                string userPhrase = _storageHelper.readValue(MainWindow.SPEAKER_PHRASE_FILENAME);
                userPhraseTxt.Text      = userPhrase;
                stopRecordBtn.IsEnabled = false;
            }
        }
示例#10
0
        /// <summary>
        /// Remove current speaker Id
        /// </summary>
        /// <param name="sender">Sender object responsible for event</param>
        /// <param name="e">A set of arguments sent to the listener</param>
        private async void resetBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                setStatus("Resetting profile: " + _speakerId);
                await _serviceClient.ResetEnrollmentsAsync(_speakerId);

                setStatus("Profile reset");
                IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();
                _storageHelper.writeValue(MainWindow.SPEAKER_ENROLLMENTS, "Empty");
                resetBtn.IsEnabled = false;
                remEnrollText.Text = "";
                verPhraseText.Text = "";
            }
            catch (ResetEnrollmentsException exp)
            {
                setStatus("Cannot reset Profile: " + exp.Message);
            }
            catch (Exception gexp)
            {
                setStatus("Error: " + gexp.Message);
            }
        }
示例#11
0
        /// <summary>
        /// Persists the verification phrase of the speaker
        /// </summary>
        /// <param name="phrase">The user phrase</param>
        private void setUserPhrase(string phrase)
        {
            IsolatedStorageHelper _storageHelper = IsolatedStorageHelper.getInstance();

            _storageHelper.writeValue(MainWindow.SPEAKER_PHRASE_FILENAME, phrase);
        }
 /// <summary>
 /// Creates an Instance of the storage helper
 /// </summary>
 /// <returns></returns>
 public static IsolatedStorageHelper getInstance()
 {
     if (s_helper == null)
         s_helper = new IsolatedStorageHelper();
     return s_helper;
 }