Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Parlare con il computer
Forum - C# / VB.NET - [C#] Parlare con il computer - Pagina 3

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 16:50
Lunedì, 30/11/2009
Testo quotato

Postato originariamente da manvb.net:

Quello è in inglese però!



si ho provato con vb.net e mi da sempre il solito messaggio:

Nessun riconoscimento installato.

EDIT- ORA MI DICE QUESTO, prima mi diceva nessuna voce installata.

Mi dite ,

come posso fare?.

grazie.

Ultima modifica effettuata da il 30/11/2009 alle 16:51
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 16:57
Martedì, 01/12/2009
Se avessi letto le discussioni importanti in cima alla sezione, avresti trovato il link ad un convertitore c#-vb online...

Non hai installato tutti i componenti necessari (sono scritti nel capitolo precedente).

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:06
Giovedì, 03/12/2009
Testo quotato

Postato originariamente da Il Totem:

Se avessi letto le discussioni importanti in cima alla sezione, avresti trovato il link ad un convertitore c#-vb online...

Non hai installato tutti i componenti necessari (sono scritti nel capitolo precedente).



si , ma quello è per xp io come ho già detto vorrei per Vista home premium a 32 bit.

Ho solo un portatile solo con quello lì.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 22:18
Giovedì, 03/12/2009
ok, chi vuole lo convertito con un convertitore in versione demo.
ecco il codice:
Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Speech;
  10. using System.Speech.Recognition;
  11. using System.Speech.Synthesis;
  12.  
  13. namespace Talk
  14. {
  15.     public partial class Form1 : Form
  16.     {
  17.         public Form1()
  18.         {
  19.             InitializeComponent();
  20.         }
  21.         private SpeechRecognitionEngine Engine = new SpeechRecognitionEngine();
  22.         //GrammarBuilder per costruire la grammatica
  23.         private GrammarBuilder GrammarBuilder = new GrammarBuilder();
  24.         //Oggetto Grammar che rappresenta la grammatica
  25.         private Grammar Grammar;
  26.  
  27.         //Questo dizionario associa ad ogni parola il
  28.         //corrispondente valore numerico (one=1)
  29.         private Dictionary<string, Int32> TextNumber;
  30.         //Questo array già inizializzato contiene l'elenco di
  31.         //tutte le parole che l'engine può rilevare
  32.         private string[] Numbers = new string[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fiftheen", "sixteen", "seventeen", "eighteen", "nineteen", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninty", "hundred", "thousand", "reset" };
  33.         //L'ultima parola, reset, serve per porre a 0 il
  34.         //conteggio, nel caso si volesse ripetere
  35.  
  36.         //Prev ricorda l'ultimo numero immesso
  37.         private Int32 Prev;
  38.         //Result contiene il numero finale
  39.         private Int32 Result;
  40.  
  41.         private void Form2_Load(object sender, EventArgs e)
  42.         {
  43.             //All'avvio del form, si imposta l'input dell'engine sul
  44.             //normale microfono (che deve essere collegato al computer).
  45.             //Anche in questo caso si usa un thread, per lo stesso
  46.             //motivo citato nel capitolo precedente
  47.             System.Threading.Thread T = new System.Threading.Thread(Engine.SetInputToDefaultAudioDevice);
  48.             T.Start();
  49.             T.Join();
  50.  
  51.             //Poi si genera il dizionario che associa le parole ai
  52.             //valori numerici veri e propri. Dato che l'array
  53.             //Numbers contiene i numeri in ordine, sfruttermo
  54.             //qualche for per riempire il dizionario in poche
  55.             //righe di codice
  56.             TextNumber = new Dictionary<string, Int32>();
  57.             //I primi 20 numeri sono in ordine crescente,
  58.             //da 1 a 20. Perciò basta aggiungere 1
  59.             //all'indice I per ottenere il numero che la
  60.             //parola indica
  61.             for (Int16 I = 0; I <= 19; I++)
  62.             {
  63.                 TextNumber.Add(Numbers[I], I + 1);
  64.             }
  65.             //I successivi sette numeri sono tutti i multipli
  66.             //di 10, da 30 a 90. Con la formula:
  67.             //(I-19)*10 + 20
  68.             //è come se I andasse da 1 a 7 e quindi
  69.             //otteniamo tutte le decine da 20+10 a 20+70
  70.             for (Int16 I = 20; I <= 26; I++)
  71.             {
  72.                 TextNumber.Add(Numbers[I], (I - 19) * 10 + 20);
  73.             }
  74.             //Infine si aggiungono centinaia e migliaia a parte
  75.             TextNumber.Add("hundred", 100);
  76.             TextNumber.Add("thousand", 1000);
  77.  
  78.             //Aggiunge tutte le parole-numero al GrammarBuilder
  79.             GrammarBuilder.Append(new Choices(Numbers));
  80.             //Imposta la lingua a inglese
  81.             GrammarBuilder.Culture = System.Globalization.CultureInfo.GetCultureInfo("en-US");
  82.             //Costruisce la nuova "grammatica" con il GrammarBuilder
  83.             Grammar = new Grammar(GrammarBuilder);
  84.  
  85.             //Questo metodo serve per eliminare tutte le grammatiche
  86.             //già presenti. Anche se quasi sicuramente non ci
  87.             //sarà nessun grammatica precaricata, è sempre
  88.             //meglio farlo prima di aggiungerne di nuove
  89.             Engine.UnloadAllGrammars();
  90.             //Quindi carica la grammatica Grammar. Ora Engine è in
  91.             //grado di riconoscere le parole dell'array Numbers
  92.             Engine.LoadGrammar(Grammar);
  93.             //Parte importantissima: aggiunge l'handler di evento per
  94.             //l'evento SpeechRecognized, che viene lanciato quando
  95.             //l'engine ha ascoltato la voce, l'ha analizzata e ha
  96.             //trovato una corrispondenza valida nella sua grammatica
  97.             Engine.SpeechRecognized += Speech_Recognized;
  98.         }
  99.  
  100.         private void btnStart_Click(object sender, EventArgs e)
  101.         {
  102.             //Fa partire il riconoscimento vocale. Il metodo è asincrono,
  103.             //quindi viene eseguito su un altro thread e non blocca il form
  104.             //chiamante. L'argomento Multiple indica che si effetteranno più
  105.             //riconoscimenti e non uno solo
  106.             Engine.RecognizeAsync(RecognizeMode.Multiple);
  107.  
  108.             //Disabilita Start e abilita Stop
  109.             btnStart.Enabled = false;
  110.             btnStop.Enabled = true;
  111.         }
  112.  
  113.         private void btnStop_Click(object sender, EventArgs e)
  114.         {
  115.             //Termina il riconoscimento asincrono
  116.             Engine.RecognizeAsyncCancel();
  117.  
  118.             //Abilita Start e disabilita Stop
  119.             btnStart.Enabled = true;
  120.             btnStop.Enabled = false;
  121.         }
  122.  
  123.         private void Speech_Recognized(object sender, SpeechRecognizedEventArgs e)
  124.         {
  125.             Int32 N = 0;
  126.             //Ottiene il testo, ossia la parola pronunciata
  127.             string Text = e.Result.Text;
  128.  
  129.             //Se il testo è "reset", annulla tutto
  130.             if (Text == "reset")
  131.             {
  132.                 Result = 0;
  133.             }
  134.  
  135.             //Se il testo è contenuto nel dizionario, allora
  136.             //è un numero valido
  137.             if (TextNumber.ContainsKey(Text))
  138.             {
  139.                 //Ottiene il numero
  140.                 N = TextNumber[Text];
  141.                 //Se è 100, significa che si è pronunciato
  142.                 //"hundred". Hundred indica le centinaia e perciò
  143.                 //sicuramente non si può dire "twenty hundred", né
  144.                 //"one thousand hundred": l'unico caso in cui si può
  145.                 //usare hundred è dopo una singola cifra, ad esempio
  146.                 //"one hundred" o "nine hundred". Quindi controlla che il
  147.                 //numero precedente sia compreso tra 1 e 9
  148.                 if ((N == 100) & (Prev > 0 & Prev < 10))
  149.                 {
  150.                     //Toglie l'unità
  151.                     Result -= Prev;
  152.                     //E la trasforma in centinaia
  153.                     Result += Prev * 100;
  154.                 }
  155.                 //Parimenti, si può usare "thousand" solo dopo un
  156.                 //numero minore di mille. Anche se lecito, nessuno direbbe
  157.                 //"a thousand thousand", ma piuttosto "a million"
  158.                 if ((N == 1000) & (Result < 1000))
  159.                 {
  160.                     Result *= 1000;
  161.                 }
  162.                 //Se il numero è minore di 100, semplicemente lo
  163.                 //aggiunge. Se quindi si pronunciano "twenty" e "thirty"
  164.                 //di seguito, si otterà 50. Non chiedetemi perchè
  165.                 //l'ho fatto così...
  166.                 if (N < 100)
  167.                 {
  168.                     Result += N;
  169.                 }
  170.             }
  171.             else
  172.             {
  173.                 N = 0;
  174.             }
  175.  
  176.             Prev = N;
  177.  
  178.             //Imposta il testo della label
  179.             lblNumber.Text = string.Format("{0:N0}", Result);
  180.         }
  181.     }
  182. }



Però a me finche non trovo qualche lingua che la posso installare su windows vista,
non mi funziona ancora .....


grazie,
aspetto risposte.

PM Quote
Avatar
uelfox (Normal User)
Rookie


Messaggi: 33
Iscritto: 25/01/2010

Segnala al moderatore
Postato alle 22:42
Lunedì, 25/01/2010
Eilaaaa forum, sono nuovo ma ho già trovato qualcosa di interessante nel forum....

Ho esaminato e provato il codice sopra, e ho provato ad installare TTS di Silvia, perchè pensavo di poter pronunciare parole in italiano e comprese dal sistema Speech.recognition, ma + delle volte nn mi vengono riconosciute.
Come faccio a sistemare la cosa?
E' possibile?
Ho provato anche a sostituire il comando
GrammarBuilder.Culture = System.Globalization.CultureInfo.GetCultureInfo("it-IT");
ma mi da un'errore nella grammatica?!?!?!

Quindi??
Qualcuno è riuscito a far capire l'italiano?

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo