Sto provando a creare un'applicazione Windows Phone 8 che include un comando vocale. Il comando vocale fa qualcosa sulla falsariga di "Quali sono i migliori brani di [artista]", e quindi ho bisogno di usare una sorta di jolly per "[artista]" che permetterà all'utente di dire qualsiasi artista. Come potrei farlo senza elencare tutti gli artisti del mondo in una PhraseList?Come creare una lista Phrase che include ogni parola (carattere jolly)?
risposta
Questo è sicuramente possibile.
RISPOSTA CORRENTE Questo è possibile in Windows Phone 8.1 con i cosiddetti PhraseTopics.
versione lunga
In un primo momento è necessario dichiarare i requisiti ID_CAP_SPEECH_RECOGNITION
e ID_CAP_MICROPHONE
.
Successivamente si crea un file VCD (Descrizione comando vocale). Questo file è fondamentalmente un file XML che "dice" al telefono cosa ascoltare. (Nota Un elemento ListenFor può includere un carattere asterisco all'interno di una coppia di parentesi graffe per implementare la funzionalità jolly. Per ulteriori informazioni, vedere Elemento comando vocale e riferimento attributo (app Windows Phone Store).) (Preso da MSDN) Nel tuo caso questo file potrebbe ad esempio simile a questa:
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.1">
<CommandSet xml:lang="en-us" Name="SuperMusicFinder">
<!-- Command set for all US English commands-->
<CommandPrefix>SuperMusicFinder</CommandPrefix>
<Example>Find Top 10 from Europe</Example>
<Command Name="findCharts">
<Example>Find Europe Top 40</Example>
<ListenFor>Find [Europe Top40] {chartlist}</ListenFor>
<ListenFor>Get [US Top100] charts {chartlist}</ListenFor>
<Feedback>Looking up the charts for you-...</Feedback>
<Navigate />
<!-- Navigation defaults to Main page -->
</Command>
<Command Name="topSongs">
<Example>Show top songs by Pharrell Williams</Example>
<ListenFor>Show [number] {num} songs by [Pink]{artist} </ListenFor>
<ListenFor>Give me [number] {num} songs by [Beethoven]{artist}</ListenFor>
<ListenFor>Show [top songs] by [Pharell Williams]</ListenFor>
<Feedback>Okay, I got that. I will look up the songs you want!</Feedback>
<Navigate Target="/artistSong.xaml"/>
</Command>
<PhraseList Label="num">
<Item> 1 </Item>
<Item> 2 </Item>
<Item> 3 </Item>
</PhraseList>
<PhraseTopic label="chartlist" Scenario="Chartlisting" />
<PhraseTopic label="artist" Scenario="Artist" />
</CommandSet>
</VoiceCommands>
allora avete bisogno di inizializzare il vostro VCD nel file App.xaml.cs:
using Windows.Phone.Speech.VoiceCommands;
private async void Application_Launching(object sender,
LaunchingEventArgs e)
{
try
{
await VoiceCommandService.InstallCommandSetsFromFileAsync(
new Uri("ms-appx:///SuperMusicFinderVCD.xml"));
}
catch (Exception ex)
{
// Handle exception
}
}
per gestire il comando vocale semplicemente effettuare le seguenti operazioni: Se dici ad esempio: "SuperMusicFinder mostra i migliori brani di P harell Williams "la query per questa richiesta sarebbe simile a qualcosa del genere: " /artistSong.xaml?voiceCommandName = topSongs & da = Pharell% 20Williams & reco = mostrare% 20top% 20songs% pharell% 20Williams"
private void artistSong_Loaded(object sender, RoutedEventArgs e)
{
if (this.NavigationContext.QueryString != null
&& this.NavigationContext.QueryString.ContainsKey("voiceCommandName"))
{
// Page was launched by Voice Command
string commandName =
NavigationContext.QueryString["voiceCommandName"];
string spokenNumber = "";
if (commandName == "topSongs" &&
this.NavigationContext.QueryString.TryGetValue("by",
out artist))
{
//do whatever you want to do
}
}
}
}
È possibile trovare maggiori informazioni here - Nota: Tutti i frammenti di codice sono state prese da quel campione e modificati per adattarsi questa domanda, non sicuro al 100% se funziona, è possibile ottenere un codice di esempio che funziona con comandi "avanzati" su 8.1 o comandi semplici su 8.0 da here
Questa sembra la risposta migliore, contrassegnandola (a meno che qualcuno non sia d'accordo?) – MatthewSot
@Daniel Steiner - Cosa succede se volevo riconoscere i numeri in questa frase "18% su $ 25,56" o "18% su 25 dollari 56 centesimi"? – devcoder
Questa è una domanda su Dio, non sono molto sicuro, ma posso guardare se riesco a trovare qualcosa al riguardo. –
"Quali sono i brani migliori di {*}" funzionano? Almeno la documentazione menziona questo per l'elemento ListenFor nella configurazione. Voice command element and attribute reference for Windows Phone 8
L'ho provato, ma è tornato "Quali sono le migliori canzoni di ..." quando ho provato ad accedere al comando vocale dal mio codice. – MatthewSot
No, i comandi vocali WP8 non supportano i caratteri jolly nell'elenco di frasi. Il problema è che WP8 non sarà in grado di eseguire il riconoscimento vocale locale sull'audio senza un elenco di frasi fisse. Per le frasi jolly, il WP8 dovrebbe eseguire la sintesi vocale nel cloud ogni volta che l'utente utilizza i comandi vocali del WP8 e non è una buona UX.
In questo momento il numero massimo di frasi che possono essere supportate nei comandi vocali è 2,000 phrases. Questo è attraverso tutti i comandi per una singola app. E questo limite è in atto per rendere più semplice la disambiguazione e fornire ai consumatori risultati più accurati. In generale, è meglio usare meno frasi possibili per rendere più accurata la disambiguazione.
Esiste una soluzione consigliata per un caso giustificato che richiede le frasi con caratteri jolly nei comandi vocali. Primo passo, avere un comando vocale "*" che avvia l'app per la sintassi corretta. Una volta che l'app è aperta, utilizza l'applicazione vocale al testo nell'app (utilizzando SpeechRecognizer) facendo ripetere all'utente il comando specifico e questo attiverà la sintesi vocale nel cloud.
Hmm, pensavo fosse vero, ma poi ho visto l'app di Wikipedia di Rudy Huyn. Quell'app ti consente di cercare qualsiasi termine che desideri da Riconoscimento vocale. Non sono sicuro di come lo fa, ma sembra possibile. – msbg
- 1. Python: striscia una parola jolly
- 2. Frase che utilizza ogni carattere base64
- 3. Come verificare se una parola inizia con un determinato carattere?
- 4. Come capitalizzare ogni parola di una NSString
- 5. Jquery carattere jolly
- 6. Convertire primo carattere di ogni parola in maiuscolo
- 7. Sottotipo MIME carattere jolly
- 8. Come creare una lista dall'intervallo
- 9. Schema come creare una lista
- 10. Qual è l'impatto proveniente dal carattere jolly%
- 11. Estrarre ogni parola completa che contiene una determinata sottostringa
- 12. come creare una lista di liste
- 13. conversione di stringa, primo carattere superiore di ogni parola
- 14. Algoritmo per rimuovere un carattere da una parola tale che la parola ridotta sia ancora una parola nel dizionario
- 15. C# Come posizionare una virgola dopo ogni parola ma l'ultima nella lista
- 16. Rails 3 - Verifica se stringa/testo include una determinata parola/carattere tramite regex nel controller
- 17. Come mettere in maiuscolo il primo carattere di ogni parola usando una regex in VB.NET?
- 18. Codeigniter LIKE con carattere jolly (%)
- 19. Set-Cookie: carattere jolly "Percorso"
- 20. Come scegliere una parola inglese casuale da una lista
- 21. C#: che utilizza più overhead di memoria? Una stringa o un carattere che contiene una sequenza di una parola?
- 22. Django: Query che utilizza contiene ogni valore in una lista
- 23. carattere jolly per singola cifra mysql
- 24. Come posso creare una lista in Oz?
- 25. Come creare una lista di contatti circolare
- 26. Modificare il primo carattere di ogni parola di una stringa in maiuscolo
- 27. duplica ogni membro in una lista - python
- 28. Come creare il pacchetto NuGet che include dati intellisense XML
- 29. Come creare un file JAR che include file DLL?
- 30. il modo più breve per ottenere il primo carattere da ogni parola in una stringa
Questo è sicuramente possibile Questa app, http: // www. windowsphone.com/en-us/store/app/wikipedia/fd40c569-2681-48df-9ff3-53ffd80aa9b5 lo fa. Puoi dire "Wikipedia, cerca ciao mondo questo è un test" o qualsiasi altra cosa. solo per quello. – msbg
Aperto una taglia. Scusa per la terribile grammatica, non riesco a modificare il messaggio di taglie – msbg
Sì, è possibile ora, sia per le app WinRT che per Silverlight 8.1. –