Laden...

[Speech und Textausgabe]- kommt man irgendwie an die Duration ran ?

Erstellt von Chronos vor 15 Jahren Letzter Beitrag vor 15 Jahren 943 Views
C
Chronos Themenstarter:in
132 Beiträge seit 2008
vor 15 Jahren
[Speech und Textausgabe]- kommt man irgendwie an die Duration ran ?

Hi, ich würde gerne in meine Anwendung eine Sprachausgabe einbauen. Prinzipiell funktioniert es soweit. Was ich jetzt aber brauche wäre die duration der Ansage. Weis vielleicht jemand wie man da ran kommen kann ?

HIntergrund ist folgender...
Ich habe ein Dialogfenster in dem ein Text zu sehen ist. Vor dem öffnen des Fensters (Messagebox.Show()) fänkt der PC an zu quasseln. Jetzt soll aber vor dem sprechen ermittelt werden wielange gesprochen wird. Wenn die Ansage zuende ist soll das Fenster wieder geschlossen werden. Und genau da hängt bei mir die Syncro.

Könnt ihr mir vielleicht nen Tipp geben ?

Thx
Chronos

B
196 Beiträge seit 2007
vor 15 Jahren

Um zu sagen wie du da rankommst wäre es hilfreich zu wissen in welcher Form das ganze Vorliegt (Datentyp der gespeicherten Ansage? Womit spielst du es ab? usw).

your fragile folded wings
are just tired from the pure blue sky
you dont have to force your smiles for anyone
its okay to smile...for yourself

C
Chronos Themenstarter:in
132 Beiträge seit 2008
vor 15 Jahren

Ach so ja, hier der Code:



class NotifySpeech
    {
        private System.Speech.Synthesis.SpeechSynthesizer speech;
        private string messageToSpeech;

        public NotifySpeech()
        {
            speech = new System.Speech.Synthesis.SpeechSynthesizer();
            speech.SpeakStarted += new EventHandler<System.Speech.Synthesis.SpeakStartedEventArgs>(speech_SpeakStarted);
            speech.SpeakCompleted += new EventHandler<System.Speech.Synthesis.SpeakCompletedEventArgs>(speech_SpeakCompleted);
            speech.StateChanged += new EventHandler<System.Speech.Synthesis.StateChangedEventArgs>(speech_StateChanged);
        }

        public string Message
        {
            get
            {
                return messageToSpeech;
            }
            set
            {
                messageToSpeech = value;
            }
        }

        public void speakAsync()
        {
            
            speech.SpeakAsync(messageToSpeech);
        }

        void speech_StateChanged(object sender, System.Speech.Synthesis.StateChangedEventArgs e)
        {
        }

        void speech_SpeakCompleted(object sender, System.Speech.Synthesis.SpeakCompletedEventArgs e)
        {
        }

        void speech_SpeakStarted(object sender, System.Speech.Synthesis.SpeakStartedEventArgs e)
        {
        }

        public void stopSpeaking()
        {
            if (speech != null)
            {
                speech.Pause();
                speech.Dispose();
            }
        }



C
Chronos Themenstarter:in
132 Beiträge seit 2008
vor 15 Jahren

Vielleicht auch hier nochmal der Aufruf


public override void show()
        {
            object[] dButtons = new object[1];
            dButtons[0] = Monitor.Resources.OKButton;

            NotifySpeech speech = new NotifySpeech();
            speech.Message = notMessage;
            speech.speakAsync();

            MediaCenterEnvironment.Dialog(
                notMessage,
                notCaption,
                dButtons,
                notDuration,
                true,
                notImagePath,
                delegate(DialogResult dialogResult)
                {
                    NotificationResult(dialogResult);
                }
            );
            File.Delete(notImagePath);
        }

Wichtig wäre es mir wie gesagt die Zeit herauszufinden die nötig ist um notMessage zu sprechen damit ich bei beendigung den Dialog schließen kann (notDuration ist zu ersetzten mit der Sprachdauer)