Ich versuche, eine Windows Phone 8-Anwendung zu erstellen, die einen Sprachbefehl enthält. Der Sprachbefehl geht etwas wie "Was sind die Top-Songs von [Künstler]", also muss ich eine Art Wildcard für "[Künstler]" verwenden, die es dem Benutzer erlaubt, jeden Künstler zu sagen. Wie kann ich dies tun, ohne jeden Künstler der Welt in einer PhraseListe aufzulisten?
Das ist definitiv möglich.
KURZE ANTWORT Dies ist in Windows Phone 8.1 mit sogenannten PhraseTopics möglich.
LANGE VERSION
Zunächst müssen Sie die Anforderungen ID_CAP_SPEECH_RECOGNITION
und ID_CAP_MICROPHONE
angeben.
Anschließend erstellen Sie eine VCD (Voice Command Description) Datei. Diese Datei ist im Grunde genommen eine XML-Datei, die dem Telefon mitteilt, worauf es achten soll. (Hinweis: Ein ListenFor-Element kann ein Sternchen in geschweiften Klammern enthalten, um Platzhalterfunktionalität zu implementieren. Weitere Informationen finden Sie unter Sprachbefehlselement und Attributverweis (Windows Phone Store-Anwendungen).) (Aus MSDN) In Ihrem Fall würde diese Datei beispielsweise so aussehen:
%Vor%Dann müssen Sie Ihre VCD in der Datei App.xaml.cs initialisieren:
%Vor%Um mit dem Sprachbefehl umzugehen, gehen Sie einfach wie folgt vor: Wenn Sie zum Beispiel sagen: "SuperMusicFinder zeigen Top-Songs von Pharell Williams" würde die Abfrage für diese Anfrage etwa so aussehen: "/artistSong.xaml?voiceCommandName=topSongs&by=Pharell%20Williams&reco=show%20top%20songs%Pharell%20Williams"
%Vor%Sie finden weitere Informationen hier - Hinweis: Alle Code-Snippets wurden von diesem Beispiel genommen und bearbeitet, um diese Frage zu passen, nicht 100% sicher, wenn das funktioniert, können Sie einen Beispielcode erhalten, der mit "erweiterten" Befehlen auf 8.1 oder einfachen Befehlen auf 8.0 von hier
Nein, WP8 Sprachbefehle unterstützen keine Wildcards in der Phrasenliste. Das Problem ist, dass WP8 keine lokale Spracherkennung für Audio ohne eine feste Phrasenliste durchführen kann. Für Platzhalter-Phrasen müsste WP8 jedes Mal, wenn der Benutzer die Sprachbefehle von WP8 verwendet, Sprache-zu-Text in der Cloud ausführen, und das ist keine gute UX.
Im Moment ist die maximale Anzahl von Phrasen, die in Sprachbefehlen unterstützt werden könnten, 2.000 Phrasen . Das gilt für alle Befehle einer einzigen App. Und diese Grenze ist vorhanden, um die Begriffsklärung zu erleichtern und den Verbrauchern genauere Ergebnisse zu liefern. Insgesamt ist es am besten, so wenig Phrasen wie möglich zu verwenden, um die Disambiguierung genauer zu machen.
Es gibt eine empfohlene Problemumgehung für einen gerechtfertigten Anwendungsfall, der Platzhalterausdrücke in Sprachbefehlen benötigt. Schritt eins, haben einen "*" Sprachbefehl, der die App für die korrekte Syntax startet. Sobald die App geöffnet ist, verwenden Sie in der App Sprache-zu-Text (mit SpeechRecognizer ), indem der Benutzer seinen spezifischen Befehl wiederholt und das wird Sprache in Text in der Cloud auslösen.
Funktioniert "Was sind die Top-Songs von {*}"? Zumindest die Dokumentation erwähnt dies für das ListenFor-Element in der Konfiguration. Sprachbefehlselement und Attributverweis für Windows Phone 8
Tags und Links c# windows-phone-8