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:
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?
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