2015-08-09 20 views
7

Ich möchte eine WPF-Anwendung in C# für Windows 10 erstellen. Nun, das Problem, das ich mit früheren Windows-Versionen hatte war, dass ich Italienisch bin und es keine Unterstützung für Spracherkennung in Italienisch gibt. Aber jetzt gibt es Cortana. Wie kann ich die Spracherkennungs-Engine von Cortana für meine Anwendung nutzen? Wenn ich einfach new SpeechRecognitionEngine(new CultureInfo("it-IT"))); benutze, gibt es mir einen Fehler, weil es nicht die einfache Recognition-Engine gibt, also muss ich Cortanas verwenden. Ich hoffe du hast mein schlechtes Englisch verstanden und entschuldigt. Vielen Dank für Ihre Antwort.Windows 10 Spracherkennung

Antwort

13

Um die neue WinRT-API SpeechRecognition in Windows 10 zu verwenden, müssen Sie Unterstützung für WinRT-APIs zu Ihrer Desktop-C# -Anwendung hinzufügen. Dies erfordert jedoch nicht, zumindest für einige Teile, die App in eine Windows Store App zu konvertieren. Soweit ich weiß, wurde die neue Engine nicht rückportiert, um Unterstützung in System.Speech.SpeechRecognitionEngine hinzuzufügen, die immer noch einen Legacy-Erkenner verwendet (Ich werde mich mit dem Sprachteam hier unterhalten und in diesem Beitrag nachgehen, wenn ich mehr finde . an diesem Punkt)

auf Grund der getroffenen Führung von here und here, konnte ich eine klassische C# WPF-Anwendung erstellen und implementieren Sie den folgenden Code:

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()); 
     } 
    } 

um dies zu kompilieren , Fügte ich hinzu

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

zum CSPROJ und fügte hinzu Windows.Media und Windows.Foundation aus dem Projekt - Referenzen> Add -> Universal-Fenster -> Kernabschnitt, und ich auch manuell hinzugefügt Verweise auf

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

und

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

über den Abschnitt Durchsuchen von Referenzen hinzufügen.

Sie müssen die SpeechRecognizer.SupportedGrammarLanguages ​​überprüfen, um das it-IT-Sprachobjekt abzurufen und es an den Recognizer-Konstruktor zu übergeben, wenn Ihr System nicht bereits standardmäßig darauf eingestellt ist (IT). (Wenn Sie eine italienische Version von Windows 10 installiert haben, sollte dies standardmäßig geschehen)

Nun, mein Code-Snippet oben kompiliert nur eine super einfache Grammatik, es beginnt nicht Erkennung. Sie müssen den Rest der Windows.Media.SpeechRecognition API dafür konsultieren, aber es ist in die gleiche Richtung.

+0

Vielen Dank, aber ich habe ein kleines Problem ... mein Projekt -> Hinzufügen von Referenzen -> Universal Windows -> Core-Abschnitt ist leer und ich kann Windows.Media und Windows.Foundation nicht hinzufügen. Wo finde ich sie über den Browse-Bereich? – DeveloperITA

+0

Hm, haben Sie das Universal Windows App SDK über das Visual Studio-Setup installiert? Es ist nicht standardmäßig installiert, wenn Sie VS2015 installieren, müssen Sie möglicherweise zurück in VS-Setup gehen und es hinzufügen, wenn es nicht installiert ist (Sie können 'ändern' aus dem Hinzufügen/Entfernen von Programmen Teil von Windows 10). Oh, und ich habe einfach den Rest der Lösung überprüft und sichergestellt, dass Sie tatsächlich die Erkennung starten können, und das funktioniert. (Erkenne sogar mitUIAsync, obwohl die Benutzeroberfläche über eine WPF-App fehl am Platz ist :)) –

+0

Ich habe Visual Studio neu installiert und Core-Abschnitt ist wieder leer. Es sagt "Kann nicht finden, verweist in der Universal Windows SDK" (ich hoffe, ich habe es richtig übersetzt) ​​ – DeveloperITA