Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Sintesi Vocale
Forum - C# / VB.NET - [VB.NET] Sintesi Vocale

Avatar
oretovalley (Normal User)
Pro


Messaggi: 109
Iscritto: 12/04/2009

Segnala al moderatore
Postato alle 13:44
Giovedì, 10/12/2009
Questo topic è stato chiuso dal moderatore

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:

Codice sorgente - presumibilmente VB.NET

  1. Imports System.Speech
  2. Imports System.Speech.Recognition
  3. Imports System.Speech.Synthesis
  4.  
  5. Public Class Form1
  6.  
  7.     Dim Synt As New SpeechSynthesizer
  8.  
  9.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  10.  
  11.             Synt.SelectVoice("ScanSoft Silvia_Dri40_16kHz")
  12.  
  13.             'Imposta l'output sulle casse del computer
  14.             'In questo passaggio è obbligatorio usare un thread.
  15.             'La ragione non è ben chiara, ma se non si fa in questo
  16.             'modo, risulta sempre un errore di tipo ArgumentException
  17.             Dim T As Threading.Thread
  18.             'Imposta il nuovo thread: il suo compito principale sarà
  19.             'di eseguire il metodo Synt.SetOutputToDefaultAudioDevice
  20.             T = New Threading.Thread(AddressOf _
  21.                 Synt.SetOutputToDefaultAudioDevice)
  22.             'Inizia il nuovo thread
  23.             T.Start()
  24.             'Aspetta che abbia finito per continuare
  25.             T.Join()
  26.  
  27.         Synt.Speak("Ciao")
  28.             Synt.Dispose()
  29.     End Sub
  30. 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?

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 15:23
Giovedì, 10/12/2009
Ciao!
Togli synt.Dispose()! E' normale che se tu lo distruggi poi non puoi riutilizzarlo!

Ultima modifica effettuata da manvb.net il 10/12/2009 alle 15:24


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM
Avatar
oretovalley (Normal User)
Pro


Messaggi: 109
Iscritto: 12/04/2009

Segnala al moderatore
Postato alle 15:42
Giovedì, 10/12/2009
Grazie Mille :)

PM
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 20:30
Giovedì, 10/12/2009
Di niente!


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
PM