Benutzer mit den meisten Antworten
SAPI SynthesizerState.Ready

Frage
-
Hallo zusammen,
ich möchte gerne erreichen, dass meine Sprachausgabe einen Text ansagt, wenn der eigentliche Text fertig gesprochen wurde.
Auf meiner Suche bin ich auf die SynthesizerState Funktion gestoßen und habe mir folgenden Code gebastelt. Der steht in einem Timer in der Hoffnung, dass bei der Überprüfung festgestellt wird, dass der Synthesizer nun fertig ist.
Beim Programmablauf bleibt das Programm allerdings bereits bei der If-Anweisung hängen.
If SAPI.SynthesizerState.Ready Then SAPI.Voice = SAPI.GetVoices().Item(Configuration.Cbo_Voice.SelectedIndex) SAPI.Volume = Configuration.Tb_Volume.Value SAPI.Rate = Configuration.Tb_SpeedRate.Value SAPI.Speak(EndOfDocument, SpeechLib.SpeechVoiceSpeakFlags.SVSFlagsAsync) End If
Ist denn der Aufruf "SAPI.SynthesizerState.Ready" korrekt? Davor hatte ich es mit "SAPI.SynthesizerState.Ready = True" versucht, aber auch da blieb die Anwendung hängen.
Weiß jemand wie es korrekt ist?
Liebe Grüße Stefan
- Verschoben Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 12. September 2019 13:59 Richtiges Forum (aus: Generelle Fragen zu MSDN Online Deutschland oder den MSDN Foren)
Antworten
-
Hallo Stefan,
was willst Du nur immer mit deinen Timern?
Das Ereignis EndStream wird automatisch aufgerufen, wenn der Speak Aufruf durch ist. Da brauchst Du keinen Timer.
Zudem weiß ich ehrlich nicht, was Du da verwendest. Ich habe die SpVoice Klasse aus der Microsoft Speec Object Library 5.4 verwendet. Evtl. solltest Du das auch mal machen und dann die Doku dazu lesen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Mittwoch, 11. September 2019 15:31
- Als Antwort markiert Sirius32ds Donnerstag, 12. September 2019 10:12
Alle Antworten
-
Hallo Stefan,
ich kann dir das an dem Beispiel zeigen, dass ich dir vor ein paar Wochen geschrieben hatte.
Dort ist das EndStream Event dasjenige, dass Du abgreifen müsstest.
Imports SpeechLib.SpeechVoiceSpeakFlags Public Class Form1 Private WithEvents SpeechLib As SpeechLib.SpVoice Private Property OutputDefaultText As Boolean = False Private Sub Form_Load() Handles Me.Load SpeechLib = New SpeechLib.SpVoice() End Sub Private Sub Form_Close() Handles Me.Closing SpeechLib = Nothing End Sub Private Sub StartOutput_Click(sender As Object, e As EventArgs) Handles StartOutput.Click SpeechLib.Speak( Input.Text, SVSFlagsAsync ) End Sub Private Sub SpeechLib_Word( ByVal StreamNumber As Long, ByVal StreamPosition As Object, ByVal CharacterPosition As Int32, ByVal Length As Int32 ) Handles SpeechLib.Word If Not OutputDefaultText Then Input.HideSelection = False Input.SelectionStart = CharacterPosition Input.SelectionLength = Length End If End Sub Private Sub SpeechLib_EndStream( StreamNumber As Integer, StreamPosition As Object ) Handles SpeechLib.EndStream If Not OutputDefaultText Then OutputDefaultText = True SpeechLib.Speak( "Das ist das Ende", SVSFlagsAsync ) Else OutputDefaultText = False End If End Sub End Class
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Stefan,
das habe ich jetzt mal in meinen Timer reingepackt und bekomme da wiederholt die Ansage sobald mein Text in der Textbox auftaucht aber noch nicht gesprochen wird.
Das trifft es also nicht zu 100% bzw. muss ich sehen, wie ich das an meine Anwendung anpasse. Ich glaubte mich zu erinnern, dass es auch so was wie Sapi.Completed gibt. Wäre das das gleiche?
Liebe Grüße Stefan
-
Hallo Stefan,
was willst Du nur immer mit deinen Timern?
Das Ereignis EndStream wird automatisch aufgerufen, wenn der Speak Aufruf durch ist. Da brauchst Du keinen Timer.
Zudem weiß ich ehrlich nicht, was Du da verwendest. Ich habe die SpVoice Klasse aus der Microsoft Speec Object Library 5.4 verwendet. Evtl. solltest Du das auch mal machen und dann die Doku dazu lesen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Mittwoch, 11. September 2019 15:31
- Als Antwort markiert Sirius32ds Donnerstag, 12. September 2019 10:12