2015-08-09 18 views
7

Voglio creare un'applicazione WPF in C# per Windows 10. Ora, il problema che avevo con le versioni precedenti di Windows era che io sono italiano e non c'è un supporto per il riconoscimento vocale in italiano. Ma ora c'è cortana. Quindi, come posso utilizzare il motore di riconoscimento vocale di cortana per la mia applicazione? Se uso semplicemente new SpeechRecognitionEngine(new CultureInfo("it-IT"))); mi dà un errore, perché non c'è il semplice motore di riconginazione, quindi devo usare quello di cortana. Spero tu abbia capito e mi dispiace per il mio pessimo inglese. La ringrazio per la risposta.Windows 10 Riconoscimento vocale

risposta

13

Per utilizzare la nuova API WinRT SpeechRecognition rilasciata in Windows 10, è necessario aggiungere il supporto per le API WinRT all'applicazione desktop C#. Ciò non richiede la conversione dell'app in un'app di Windows Store, tuttavia, almeno, per alcune parti. Per quanto ne so, il nuovo motore non è stato sottoposto a backport per aggiungere supporto a System.Speech.SpeechRecognitionEngine, che utilizza ancora un riconoscimento legacy (controllerò con il team di discussione qui e seguirò in questo post se trovo altro . su questo punto)

sulla base della guida tratto da here e here, sono stato in grado di creare un classico C# WPF app, e implementare il codice seguente:

private SpeechRecognizer reco; 

    public MainWindow() 
    { 
     InitializeComponent(); 

     reco = new SpeechRecognizer(); 
     List<string> constraints = new List<string>(); 
     constraints.Add("Yes"); 
     constraints.Add("No"); 
     reco.Constraints.Add(new SpeechRecognitionListConstraint(constraints)); 
     IAsyncOperation<SpeechRecognitionCompilationResult> op = reco.CompileConstraintsAsync(); 
     op.Completed += HandleCompilationCompleted; 
    } 

    public void HandleCompilationCompleted(IAsyncOperation<SpeechRecognitionCompilationResult> opInfo, AsyncStatus status) 
    { 
     if(status == AsyncStatus.Completed) 
     { 
      System.Diagnostics.Debug.WriteLine("CompilationCompleted"); 
      var result = opInfo.GetResults(); 
      System.Diagnostics.Debug.WriteLine(result.Status.ToString()); 
     } 
    } 

al fine di ottenere questo per compilare , Ho aggiunto

<PropertyGroup> 
    <TargetPlatformVersion>10.0</TargetPlatformVersion> 
    </PropertyGroup> 

al .csproj, e ha aggiunto Windows.Media e Windows.Foundation dal Progetto -> Aggiungi riferimento -> Universal Windows -> sezione Core e ho riferimenti anche aggiunte manualmente al

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5.1\System.Runtime.WindowsRuntime.dll 

e

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5.1\System.Runtime.InteropServices.WindowsRuntime.dll 

tramite la sezione Sfoglia di Aggiungi riferimenti.

È necessario controllare SpeechRecognizer.SupportedGrammarLanguages ​​per recuperare l'oggetto It-IT Language per passarlo al costruttore Recognizer, se il sistema non è impostato per default su IT-IT già. (Se hai installato una versione italiana di Windows 10, questo dovrebbe avvenire automaticamente)

Ora, il mio frammento di codice sopra compila solo una grammatica super semplice, non avvia il riconoscimento. Avrai bisogno di consultare il resto dell'API Windows.Media.SpeechRecognition per questo, ma è sulla stessa linea.

+0

Grazie mille, ma ho un piccolo problema ... il mio progetto -> Aggiungi riferimenti -> Windows universale -> La sezione principale è vuota e non posso aggiungere Windows.Media e Windows.Foundation. Dove posso trovarli tramite la sezione Sfoglia? – DeveloperITA

+0

Hm, hai installato l'SDK dell'app per Windows universale tramite l'installazione di Visual Studio? Non è installato di default quando si installa VS2015, potrebbe essere necessario tornare alla configurazione di VS e aggiungerlo se non è installato (è possibile utilizzare 'modifica' dalla sezione Aggiungi/Rimuovi Programmi di Windows 10). Oh, e ho appena ricontrollato il resto della soluzione, e ho fatto in modo che tu possa effettivamente iniziare il riconoscimento, e questo funziona (Anche RiconoscereWithUIAsync anche se l'interfaccia utente sembra fuori posto su un'app WPF :)) –

+0

ho reinstallato Visual Studio e la sezione Core è di nuovo vuota. Dice "Impossibile trovare il riferimento nell'SDK di Windows universale" (spero di averlo tradotto correttamente) – DeveloperITA

Problemi correlati