Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
10/12/09 12:44
oretovalley
Ciao a tutti, stavo provando la sintesi vocale in VB.NET sono riuscito a installare il pacchetto Silvia in lingua italiana.

Ho creato un form con un bottone con questo codice:

Imports System.Speech
Imports System.Speech.Recognition
Imports System.Speech.Synthesis

Public Class Form1

    Dim Synt As New SpeechSynthesizer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Synt.SelectVoice("ScanSoft Silvia_Dri40_16kHz")

            'Imposta l'output sulle casse del computer
            'In questo passaggio è obbligatorio usare un thread.
            'La ragione non è ben chiara, ma se non si fa in questo
            'modo, risulta sempre un errore di tipo ArgumentException
            Dim T As Threading.Thread
            'Imposta il nuovo thread: il suo compito principale sarà
            'di eseguire il metodo Synt.SetOutputToDefaultAudioDevice
            T = New Threading.Thread(AddressOf _
                Synt.SetOutputToDefaultAudioDevice)
            'Inizia il nuovo thread
            T.Start()
            'Aspetta che abbia finito per continuare
            T.Join()

        Synt.Speak("Ciao")
            Synt.Dispose()
    End Sub
End Class



adesso c'è un problema al primo click del button tutto funziona perfettamente al secondo click non funziona più ma mi viene restituito un errore:

Cannot access a disposed object.
Object name: 'SpeechSynthesizer'.

nell'istruzione: Synt.SelectVoice("ScanSoft Silvia_Dri40_16kHz";)

come posso fare?
aaa
10/12/09 14:23
manvb.net
Ciao!
Togli synt.Dispose()! E' normale che se tu lo distruggi poi non puoi riutilizzarlo!
Ultima modifica effettuata da manvb.net 10/12/09 14:24
aaa
10/12/09 14:42
oretovalley
Grazie Mille :)
aaa
10/12/09 19:30
manvb.net
Di niente!
aaa