Newsgroup: it.comp.lang.visual-basic
Titolo: Far parlare il pc...miei esperimenti!

Allora stamani m'è saltato un po di cose e c'ho un po di tempo!
 
Installazioni da fare
SPEECH SDK ver 11.0
http://www.microsoft.com/en-us/download/details.aspx?id=27226
 
 
nella produzione poi ci vuole SOLO il runtime
http://www.microsoft.com/en-us/download/details.aspx?id=27225
 
 
La voce italiana ...LUCIA
http://www.microsoft.com/en-us/download/details.aspx?id=27224
 
 
GUARDATE BENE dove installa (in che cartella)....vi risparmierete 
incazzature nel ritrovare i path!
 
SEQUENZA
Prima l'sdk
POI
la voce lucia
 
 
Nella cartella dell'SDK c'è 2 cose indispensabili...LA DLL da 
referenziare...e il CHM del manuale!
 
 
Aprite un progetto (nel mio caso vs2010 windorm net 4.0 ma non credo 
sia un problema farlo anche con l'express)....riferimenti progetto-> 
sfoglia trovate la cartella Assembly (nel mio pc C:\Program 
Files\Microsoft SDKs\Speech\v11.0\Assembly) e referenziate 
Microsoft.Speech.dll
 
OK il più è fatto
 
 
Una form una textbox un bottone
La struttura di base è
Imports Microsoft.Speech
Public Class Form1
 
    Private Sub btnParla_Click(sender As System.Object, e As 
System.EventArgs) Handles btnParla.Click
 
    End Sub
End Class
 
 
 
 
IL PROBLEMA CHE SI PONE ADESSO: come cazzo si chiama lucia per il 
dotNet?
E' un problema ...probabilmente l'ingegnere capo progetto era un 
fanatico di linux perchè qui siamo nel mondo *nix: nomi complicatissimi 
e da scrivere esattisssisisisimissimevolmente!!!
Per dire...SCORDATEVI di fare un "windowsiano":
    .SelectVoice("Lucia")...
Vi riderà in faccia con un bell'errore!!!!
 
 
Ed allora va fregato facendoci dire da lui come trovare il nome della 
voce....manuale alla mano va scritto...
dentro il button
        Dim PARLAMI As New Microsoft.Speech.Synthesis.SpeechSynthesizer
 
            Console.WriteLine("Installed voices -")
        For Each voice As Microsoft.Speech.Synthesis.InstalledVoice In 
PARLAMI.GetInstalledVoices
            Dim info As Microsoft.Speech.Synthesis.VoiceInfo = 
voice.VoiceInfo
            Dim AudioFormats As String = ""
            For Each fmt As 
Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo In 
info.SupportedAudioFormats
                AudioFormats = (AudioFormats + String.Format("{0}" & 
vbLf, fmt.EncodingFormat.ToString))
            Next
            Console.WriteLine((" Name:          " + info.Name))
            Console.WriteLine((" Culture:       " + 
info.Culture.ToString))
            Console.WriteLine((" Age:           " + info.Age.ToString))
            Console.WriteLine((" Gender:        " + 
info.Gender.ToString))
            Console.WriteLine((" Description:   " + info.Description))
            Console.WriteLine((" ID:            " + info.Id))
            Console.WriteLine((" Enabled:       " + 
voice.Enabled.ToString))
            If (info.SupportedAudioFormats.Count <> 0) Then
                Console.WriteLine((" Audio formats: " + AudioFormats))
            Else
                Console.WriteLine(" No supported audio formats found")
            End If
            Dim AdditionalInfo As String = ""
            For Each key As String In info.AdditionalInfo.Keys
                AdditionalInfo = (AdditionalInfo + String.Format("  
{0}: {1}" & vbLf, key, info.AdditionalInfo(key)))
            Next
            Console.WriteLine((" Additional Info - " + AdditionalInfo))
            Console.WriteLine()
 
STOP
Allo STOP vedrete apparire tutte le info sulle voci installate nel 
vostro pc!!!
Lo potete fare una volta sola o lasciarlo....
l'interessante è che NEL MIO PC c'è solo LUCIA installata...ma lucia 
per il dot net è (Lo vedete in NAME)
udite..udite...
Microsoft Server Speech Text to Speech Voice (it-IT, Lucia)
tutto da riscrivere esattamente così!!!
 
 
Adesso lo possiamo far parlare
 
        Try
            With PARLAMI
                .SetOutputToDefaultAudioDevice()
                .SelectVoice("Microsoft Server Speech Text to Speech 
Voice (it-IT, Lucia)")
                .Rate = Microsoft.Speech.Synthesis.PromptRate.Medium
                .Volume = 75
                .Speak(txtFrase.Text)
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
 
scriviamo una frase nel textbox (io c'ho scritto subito un bel 
vaffanculo Monti!) e clicchiamo sul bottone!
 
ATTENZIONE
SetOutputToDefaultAudioDevice() senza questo nel mio pc Lucia rimaneva 
muta....ma se volete redizionare su uno stream o su un file e non far 
sentire nulla...è possibile!
 
LICENZE? Boh! non so se si può redistribuire..penso di si....è comunque 
tutta roba scaricabile pubblicamente dal sito microsoft ufficiale !!! A 
scanso di equivoci leggetevi l'EULA!!!
 
DA FARE
la cosa inversa
IO parlare PC scrivere! :)
il motore di speech recognition sembra esserci....il tempo è 
tiranno...ci riguarderò più in qua!!!
 
PER I PIGRI
codice completo
Imports Microsoft.Speech
Public Class Form1
 
    Private Sub btnParla_Click(sender As System.Object, e As 
System.EventArgs) Handles btnParla.Click
        Dim PARLAMI As New Microsoft.Speech.Synthesis.SpeechSynthesizer
 
            Console.WriteLine("Installed voices -")
        For Each voice As Microsoft.Speech.Synthesis.InstalledVoice In 
PARLAMI.GetInstalledVoices
            Dim info As Microsoft.Speech.Synthesis.VoiceInfo = 
voice.VoiceInfo
            Dim AudioFormats As String = ""
            For Each fmt As 
Microsoft.Speech.AudioFormat.SpeechAudioFormatInfo In 
info.SupportedAudioFormats
                AudioFormats = (AudioFormats + String.Format("{0}" & 
vbLf, fmt.EncodingFormat.ToString))
            Next
            Console.WriteLine((" Name:          " + info.Name))
            Console.WriteLine((" Culture:       " + 
info.Culture.ToString))
            Console.WriteLine((" Age:           " + info.Age.ToString))
            Console.WriteLine((" Gender:        " + 
info.Gender.ToString))
            Console.WriteLine((" Description:   " + info.Description))
            Console.WriteLine((" ID:            " + info.Id))
            Console.WriteLine((" Enabled:       " + 
voice.Enabled.ToString))
            If (info.SupportedAudioFormats.Count <> 0) Then
                Console.WriteLine((" Audio formats: " + AudioFormats))
            Else
                Console.WriteLine(" No supported audio formats found")
            End If
            Dim AdditionalInfo As String = ""
            For Each key As String In info.AdditionalInfo.Keys
                AdditionalInfo = (AdditionalInfo + String.Format("  
{0}: {1}" & vbLf, key, info.AdditionalInfo(key)))
            Next
            Console.WriteLine((" Additional Info - " + AdditionalInfo))
            Console.WriteLine()
 
 
 
 
 
        Next
 
        Try
            With PARLAMI
                .SetOutputToDefaultAudioDevice()
                .SelectVoice("Microsoft Server Speech Text to Speech 
Voice (it-IT, Lucia)")
                .Rate = Microsoft.Speech.Synthesis.PromptRate.Medium
 
                .Volume = 75
                .Speak(txtFrase.Text)
            End With
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Class
 
-- 
----- Italliaaaaa 3227! -----
Quando vedi la tua verità fiorire sulle labbra del tuo nemico, devi 
gioire, perché questo è il segno della vittoria.
(Giorgio Almirante)
 
 

 Allora stamani m'è saltato un po di cose e c'ho un po di tempo!
da un mini test sembra funzionare anche il riconoscimento testo....
ma è leeeeeeeeennnnntttooooooo....
anche qui scaricare il file giusto e
Dim WithEvents RICONOSCI As New 
Microsoft.Speech.Recognition.SpeechRecognitionEngine("SR_MS_it-IT_TELE_11.0")
 
-- 
----- Italliaaaaa 3227! -----
Ti prego, ti prego, non ci uccidere. Ti prego baby, lo sai che ti amo. 
Non avrei mai voluto lasciarti, non è stata colpa mia. Davvero, sono 
sincero. Quel giorno finì la benzina. Si bucò un pneumatico. Non avevo 
i soldi per il taxi! Il mio smoking non era arrivato in tempo dalla 
tintoria! Era venuto a trovarmi da lontano un amico che non vedevo da 
anni! Qualcuno mi rubò la macchina! Ci fu un terremoto! Una tremenda 
inondazione! Un'invasione di cavallette!
John Belushi [da "Blues Brothers"]
 
 

 Microsoft.Speech.Recognition.SpeechRecognitionEngine("SR_MS_it-IT_TELE_11.0")
intendevo...
riconoscimento vocale ovvio
 
-- 
----- Italliaaaaa 3227! -----
Il grande maestro di pittura meta-gastro-fisica Luciano Lupoletti in:
David Arlequin
http://www.lupoletti.com/public/lupoletti/09-10-24-12-05-21@David%20Arlequin%20-%20Olio%20su%20tela.jpg
 
 
(ROTFL: oddio mi ribalto)
 
 

 ma è leeeeeeeeennnnntttooooooo....
Ti funziona il riconoscimento?!!
Se sì, su che CPU lo stai testando (per capire il "leeeeeentissimo)?

Fabrizio Alessandri ha usato la sua tastiera per scrivere :

p4 3ghz ma incasinato parecchio..ai limiti della rasatura...è quello di 
"testa tutto installa tutto"...quindi fa poco testo
 
-- 
----- Italliaaaaa 3227! -----


 Vi riderà in faccia con un bell'errore!!!!
 
Quanti giri... con VB66 Lucia parlava subito, senza farsi tanto pregare, e 
pure Mario!
 
-- 
Greg 
 
 

Quanti giri... con VB66 Lucia parlava subito, senza farsi tanto pregare, e
pure Mario!
....
Beh, fra 56 versioni di VB, magari avranno semplificato :-) :-)
 

Ciao Ragazzi,
 
ho "giocato" con LUCIA e' sono riuscito ha farla parlare, grazie hai vostri 
suggerimementi.
Ho anche installato SR_MS_it-IT_TELE_11.0 ma non riesco ad eseguire il 
riconoscimento vocale
Win 7 e vb 2010
Qualcuno di voi e' riuscito ?
 
Grazie mille
 
 
 
"Wodka40°"  ha scritto nel messaggio 
news:4fa2434d$0$6833$5fc...@news.tiscali.it...
