【发布时间】:2018-07-17 09:51:49
【问题描述】:
所以我想用一些可以更改的命令列表制作一些语音识别(使用 system.speech.recognition)软件。例如,起初你有两种命令列表:“左,右”,当你说左或右时,它会做一些功能。但是我希望在这个软件中,我可以随时更改命令列表,例如在上面的命令列表中,我想将单词“Left”更改为“Up”,当我说“Up”时,它会执行功能之前按“左”字做。这是我的代码:
Choices commands = new Choices();
GrammarBuilder gBuilder = new GrammarBuilder();
public void Masokey_Load(object sender, EventArgs e)
{
// Choices commands = new Choices();
commands.Add(new string[] { Atext.Text, Dtext.Text});
// GrammarBuilder gBuilder = new GrammarBuilder();
gBuilder.Append(commands);
Grammar grammar = new Grammar(gBuilder);
recEngine.LoadGrammarAsync(grammar);
recEngine.SetInputToDefaultAudioDevice();
recEngine.SpeechRecognized += RecEngine_SpeechRecognized;
}
//save_btn
public void Savebtn_Click(object sender, EventArgs e)
{
commands.Add(new string[] { Atext.Text, Dtext.Text});
gBuilder.Append(commands);
}
public void RecEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if(e.Result.Text == Atext.Text)
{
PressKey(0x1E);
}
else if (e.Result.Text == Dtext.Text)
{
PressKey(0x20);
}
}
我想改变“command.Add(new string[] {Atext.Text, Dtext.Text)”里面的值
我把命令列表放到一个文本框中,所以当我运行软件时,当我想更改命令列表时,我只需要更改文本框中的单词,当我点击保存按钮时,命令列表就会改变。问题是当我点击保存按钮时,命令列表不会改变。
是否可以更改 Choices 对象和 GrammarBuilder 对象的值?
【问题讨论】:
-
您只执行添加操作,不执行删除操作。因此,您的程序可能会获得第一个元素,即旧元素
-
button35_Click- 请避免这种情况,每次你这样做,未来的程序员都会死去......命名你的按钮,命名链接函数,命名所有内容。 (除非这实际上是一个按钮,上面写着一个大的35) -
@ThierryV 你说得对,但是可以改变 Choices 对象和 GrammarBuilder 对象的值吗?
-
@Rafalon 啊,谢谢,我已经重命名了。在我只是在上面发表一些评论但我忘记重命名它之前。
-
见SpeechRecognizer.RequestRecognizerUpdate。还有一个你可以效仿的例子。每次要更新识别器语法时都应使用此命令。即使是第一次添加,也最好调用它。
标签: c# arrays winforms speech-recognition