我正在使用 XML 语法文件来开发命令和控制应用程序。由于语法中有大约 4000 个条目,我不能将它们全部放在一个文件中(当我尝试加载它时会出错)。我已经编写了多个 XML 语法文件,但是当我尝试加载多个文件时,它会替换之前加载的文件。那就是程序只识别第二个语法文件中的短语。谁能告诉我如何在单个语音识别应用程序中加载多个语法?
Tharini
问问题
1755 次
1 回答
3
你可以创建多个语法,你必须给他们不同的 ID。这些片段在 Delphi 中,但您可以调整:
// init
FGrammar1 := SpSharedRecoContext1.CreateGrammar(1); // ID 1
FGrammar1.CmdLoadFromFile('CommandMemo1.xml', SLODynamic);
FGrammar2 := SpSharedRecoContext1.CreateGrammar(2); // ID 2
FGrammar2.CmdLoadFromFile('CommandMemo2.xml', SLODynamic);
// start
FGrammar1.CmdSetRuleIdState(0, SGDSActive);
FGrammar2.CmdSetRuleIdState(0, SGDSActive);
...
// in the onRecognition event, test the grammar Id
case Result.PhraseInfo.GrammarId of
1: if SameText(Txt, 'erase memo') then
Memo1.Text := ''
else
if SameText(Txt, 'select memo') then
Memo1.SelectAll;
2: if SameText(Txt, 'copy memo') then
CopyToClipboard(Memo1.Text)
else
if SameText(Txt, 'paste memo') then
Memo1.Text := PasteFromClipboard;
else
raise Exception.Create('bad GrammarId');
end;
于 2009-09-16T05:29:09.437 回答