Я пытаюсь сделать многоуровневую командную речь, но у меня проблемы с ней ...Многоуровневые команды речи?
Я хочу иметь мастер-команды, такие как: «TV», «Light», «water», и т.д.
Когда я говорю «TV», например, я хочу иметь вложенные команды для желаемого действия, такие как:
Когда я говорю «TV»: суб команд -> «Громкость вверх», «Volume down "," power off "," power on "
Я узнаю только команды для телевизора, пока не скажу« TV done ». Затем я вернусь к списку мастер-команд.
Как я могу это сделать?
Мой реальный код заключается в следующем:
class Program
{
static Dictionary<string, string> listaCanais = new Dictionary<string, string>()
{
{ "Fox News", "0 6 0" },
{ "The Weather Channel", "0 3 1"},
{ "Spike", "0 3 8"}
};
static void Main(string[] args)
{
using (var sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("pt-BR")))
{
sre.SetInputToDefaultAudioDevice();
sre.LoadGrammarAsync(Comandos());
sre.RequestRecognizerUpdate();
sre.SpeechRecognitionRejected += sre_SpeechRecognitionRejected;
sre.SpeechRecognized += sre_SpeechRecognized;
sre.RecognizeAsync(RecognizeMode.Multiple);
Console.ReadLine();
}
}
public static Grammar Comandos()
{
Choices numerosTV = new Choices("zero", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "10", "11", "12");
GrammarBuilder fraseNumeroTV = new GrammarBuilder(numerosTV);
GrammarBuilder fraseMudarCanal = new GrammarBuilder("TV, canal");
fraseMudarCanal.Append(numerosTV);
//fraseMudarCanal.Append(numerosTV);
//fraseMudarCanal.Append(numerosTV);
Choices nomeCanal = new Choices();
foreach (string key in listaCanais.Keys)
{
nomeCanal.Add(key);
}
GrammarBuilder fraseNomeCanal = new GrammarBuilder("TV, canal");
fraseNomeCanal.Append(nomeCanal);
GrammarBuilder fraseMudo = new GrammarBuilder("TV, silencioso");
GrammarBuilder fraseLigar = new GrammarBuilder("TV, ligar");
GrammarBuilder fraseFecharApp = new GrammarBuilder("Controle, fechar aplicativo");
GrammarBuilder frasePauseComandoVoz = new GrammarBuilder("Controle, pausar comando de voz");
GrammarBuilder fraseIniciarComandoVoz = new GrammarBuilder("Controle, ativar comando de voz");
Choices opcoesPrincipais = new Choices(new GrammarBuilder[] {fraseMudarCanal,
fraseNomeCanal,
fraseMudo,
fraseLigar,
fraseFecharApp,
frasePauseComandoVoz,
fraseIniciarComandoVoz});
Grammar resultado = new Grammar((GrammarBuilder)opcoesPrincipais);
return resultado;
}
static void sre_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
Console.WriteLine("Ignorado");
}
// Create a simple handler for the SpeechRecognized event.
static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine("Ouvi");
if (e.Result == null)
return;
Console.WriteLine("[ " + e.Result.Confidence + " ]" + "Reconhecido: " + e.Result.Text);
}
}
Спасибо заранее.