【发布时间】:2015-05-31 18:33:56
【问题描述】:
我正在尝试做一个多级命令演讲,但我遇到了一些麻烦......
我想要主命令,例如:“TV”、“Light”、“water”等
例如,当我说“电视”时,我希望有子命令来执行所需的操作,例如:
当我说“电视”时:子命令->“调高音量”、“调低音量”、“关机”、“开机”
在我说“电视完成”之前,我只会得到识别的电视命令。然后我回到主命令的列表。
我该怎么做?
我的实际代码是这样的:
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);
}
}
提前致谢。
【问题讨论】:
标签: c# speech-recognition