Announcement

Collapse
No announcement yet.

Thread mit TTS

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Thread mit TTS

    Hallo an alle, ich arbeite an einem einfachen Programm dass die Sprachausgabe nutzt. Jetzt wollte ich das alles in ne Klasse schachteln. Gesagt getan so siehts aus und es funktioniert nicht. Was fehlt? Er sagt nichts.
    Wenn ich quoue.Clear() weglasse spricht er allerdings perfekt, nur dass er dann alles was schonmal gesagt wurde wiederhohlt. Der Sinn der Klasse wäre übrigens zB Fehlermeldungen zu sprechen und wenn mal mehrere hintereinander anfallen diese in ne Warteschleife (quoue [Ja ich weis man schreib queue spielt aber jetzt mal keine rolle ] ) zu legen und hintereinander aufzusagen. Ich bin jetzt lange inaktiv gewesen in VB.net und vllt übersehe ich was (seit 3 tagen...) . Bin für jeden Rat dankbar, hoffe ihr könnt mir helfen, danke fürs lesen und schönes WE noch
    Code:
    Public Class voice
        Public WithEvents vox As New SpVoice
        Public RateOfSpeech As Integer = 0
        Public quoue As New List(Of String)
        Public doneq As New List(Of String)
        Protected WithEvents bw As New BackgroundWorker
    
        Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bw.DoWork
    
            Dim bw2 As BackgroundWorker = CType(sender, BackgroundWorker)
    
            Dim speaklist As List(Of String) = DirectCast(e.Argument, List(Of String))
            Dim list2 As New List(Of String)
            list2 = speaklist
            For Each item In list2
                vox.Speak(item, SpeechVoiceSpeakFlags.SVSFDefault)
            Next
    
        End Sub
    
        Public Sub load_up()
            Dim Token As ISpeechObjectToken
            Dim Voicelst As New List(Of ISpeechObjectToken)
            For Each Token In vox.GetVoices
                Voicelst.Add(Token)
            Next
            'Dim str As String = Environment.UserName.ToString()
            vox.Voice = Voicelst(1)
            vox.Rate = RateOfSpeech
        End Sub
    
    
        Public Sub say(ByVal sentence As String)
            quoue.Add(sentence)
            If Not bw.IsBusy = True Then
                doneq.Clear()
                doneq = quoue
                bw.RunWorkerAsync(doneq)
                quoue.Clear()
            Else
    
            End If
    
        End Sub
    End Class

  • #2
    Wenn du deine Sprachmeldung in einer Warteschlangen möchtest solltest du auch eine Queue benutzen und nicht einfach eine List(Of String) die du Queue nennst.

    Comment


    • #3
      Edit: Ok sry es funktioniert perfekt, danke Ralf von queue wusste ich gar nichts.. peinlich
      Zuletzt editiert von Martix; 04.07.2010, 08:17.

      Comment

      Working...
      X