none
Ein unerwarteter Effekt bei Anwendung von SpeechSynthesizer RRS feed

  • Frage

  • Hallo,

    ich verwende den SpeechSynthesizer 4.0 in meinem VB.net-Programm.
    Soweit klappt alles, bis auf einen unerwarteten Effekt:
    Ich lese aus einer RichTextBox und immer in der ersten Zeile kommt die Sprecherin bei 4. und 5. Wort des Texts ins "Stolpern". Text wird "verschluckt". Danach wird der gesamte Text ohne Problem vorgelesen.

    Dim syn As New SpeechSynthesizer
    With syn
      .Rate = 0        ' Geschwindigkeit: -10 bis +10
      .Volume = 100    ' Lautstärke: 0 bis 100
      .SpeakAsync(myText.Text)
    End With
    

    Kann man das lösen?

    Grüße-


    Dietrich

    Montag, 14. März 2016 23:10

Alle Antworten

  • Hallo Dietrich,

    Da SpeakAsync die Steuerung zurückgibt, würdest Du einen Codeauszug nach SpeakAsync veröffentlichen? Tritt dieses Problem bei Speak auf?

    Gruß,
    Dimitar


    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 16. März 2016 06:40
    Administrator
  • Hallo Dimitar,
    zunächst Dank für die Antwort!
    Ja, ich habe denselben Effekt, wenn ich Speak nehme...
    Aber hier der gewünschte Code:

    	Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) _
    		Handles ToolStripButton4.Click
    		With ToolStripButton4
    			If .Text = "vorlesen" Then
    				.Text = "stoppen"
    				.Image = My.Resources.sound
    				.ToolTipText = "stoppen des Vorlesens"
    				'vorlesen
    				syn = New SpeechSynthesizer
    				With syn
    					' Stimme festlegen
    					.SelectVoice(ToolStripComboBox1.SelectedItem.ToString)
    					.Rate = 0        ' Geschwindigkeit: -10 bis +10
    					.Volume = 100    ' Lautstärke: 0 bis 100
    					' Text sprechen
    					.SpeakAsync(myText.Text)
    				End With
    			Else
    				.Text = "vorlesen"
    				.Image = My.Resources.sound_none
    				.ToolTipText = "Vorlesen des gesamten Texts"
    				.SpeakAsyncCancelAll()
    			End If
    		End With
    	End Sub
    

    Während des Lesens wird keinerlei andere Aktion im Programm ausgeführt.

    Jedoch fällt auf, das der Effekt nur bei einer bestimmten Struktur des Texts auftritt. Ich versuche mal zu erklären:
    1. Der Text hat gewissermaßen eine kurze Zeile als Überschrift in der Art
    xxxx xxx xxxxxxxxx xxxxxxxx
    xxxxxx xxx xx xxxxxxx xxxxx .... es folgen mehrere Zeilen Fließtext.
    oder in der gleichen Art nur ohne 'Überschrift', wenn der lange Fließtext sofort gelesen wird.
    In diesen beiden Fällen tritt der Effekt auf.

    2. Der Text hat als kurze Überschrift nur ein einziges Wort - dann tritt der Effekt nicht auf, der Text wird ohne zu stocken gelesen.

    Grüße-


    Dietrich

    Mittwoch, 16. März 2016 08:11
  • Hallo,

    vielleicht muss ich wirklich noch ergänzen:

    Windows 10, 64Bit, VisualStudio2013 Exoress, SpeechSynthesizer 4.0

    Grüße-


    Dietrich

    Donnerstag, 17. März 2016 12:15
  • Hallo,

    noch ein Gedanke:
    Liegt es bei SpeechSynthesizer vielleicht daran, dass ein Text mit Pufferung eingelesen wird, die Sprachausgabe aber beginnt, bevor die Pufferung abgeschlossen ist?

    Grüße-


    Dietrich

    Freitag, 18. März 2016 07:51