Question

I besoin de créer un équivalent de programmation en utilisant le langage delphi ... ou quelqu'un pourrait poster un lien sur la façon de faire dans peech recogniton grammaires utilisant le delphi. Ou des exemples de grammaire XML qui a équivalent programmatique en Delphi. désolé pour mon anglais.

**Programmatic Equivalent ** 

Ref: http: // msdn. microsoft.com/en-us/library/ms723634(v=VS.85).aspx

        SPSTATEHANDLE hsHelloWorld;
        hr = cpRecoGrammar->GetRule(L"HelloWorld", NULL,
                        SPRAF_TopLevel | SPRAF_Active, TRUE,
                        &hsHelloWorld);
        hr = cpRecoGrammar->AddWordTransition(hsHelloWorld, NULL,
                L"hello world", L" ",
                SPWT_LEXICAL, NULL, NULL);
        hr = cpRecoGrammar->AddWordTransition(hsHelloWorld, NULL,
                L"hiya|there", L"|",
                SPWT_LEXICAL, NULL, NULL);
        hr = cpRecoGrammar->Commit(NULL);

XML grammaire exemples (s):

    <GRAMMAR>
        <!-- Create a simple "hello world" rule -->
        <RULE NAME="HelloWorld" TOPLEVEL="ACTIVE">
            <P>hello world</P>
        </RULE>
        <RULE NAME="HelloWorld_Disp" TOPLEVEL="ACTIVE">
            <P DISP="Hiya there!">hello world</P>
        </RULE>
        <RULE NAME="Question_Pron" TOPLEVEL="ACTIVE">
            <P DISP="I don't understand" PRON="eh">what</P>
        </RULE>
        <RULE NAME="NurseryRhyme" TOPLEVEL="ACTIVE">
            <P>hey</P>
            <P MIN="2" MAX="2">diddle</P>
        </RULE>
        <RULE NAME="UseWeights" TOPLEVEL="ACTIVE">
            <LIST>
                <P WEIGHT=".95">recognize speech</P>
                <P WEIGHT=".05">wreck a nice beach</P>
            </LIST>
        </RULE>
        <RULE NAME="UseProps" TOPLEVEL="ACTIVE">
            <P PROPNAME="NOVALUE">one</P>
            <P PROPNAME="NUMBER" VAL="2">two</P>
            <P PROPNAME="STRING" VALSTR="three">three</P>
        </RULE>
    </GRAMMAR>
Était-ce utile?

La solution 2

Je Guy enfin en mesure d'obtenir la réponse .... Cela pourrait être utile aux autres ... :)
c'est la composante réelle que j'ai créé. il suffit de modifier pour vos besoins.

Function TSRRule.AddWord (Word : String; Value : string = ''; Separator : char = '|') : integer;
var
  OleValue : OleVariant;
begin
  result := 0;
  if Fwordlist.IndexOf(Word) = -1 then
     begin
       OleValue := Value;
       Fwordlist.Add(Word);
       FRule.InitialState.AddWordTransition(nil,  word, Separator, SPWT_LEXICAL, FRuleName+'_value',Fwordlist.Count, OleValue, 1.0);
       FWordCount := Fwordlist.Count;
       result := FWordCount;
     end;
end;

Fonction d'appel ...

FSpRunTimeGrammar := SpInProcRecoContext.CreateGrammar(2); // we assign  another grammr on index 2

   SrRule1 := TSRRule.Create(1,'Rule1',FSpRunTimeGrammar);
   with SrRule1 do
      begin
         AddWord('Maxtor');
         AddWord('Open NotePad','Notepad.exe');
         AddWord('Maxtor Dexter TrandPack','',' ');
         commit;
      end;
   SrRule2 := TSRRule.Create(2,'Rule2',FSpRunTimeGrammar);
   with SrRule1 do
      begin
         AddWord('the box');
         AddWord('WeLcOmE SaPi');
         AddWord('Halo World');
         commit;
      end;
   FSpRunTimeGrammar.CmdSetRuleState('Rule1',SGDSActive);
   FSpRunTimeGrammar.CmdSetRuleState('Rule2',SGDSActive);

Laisser un commentaire S'il vous plaît des éclaircissements .... bonne chance!

Autres conseils

Il y a une enveloppe directe pour la api vocale fait par l'équipe de jedi, vous devriez être en mesure de trouver le code d'ici http://www.delphi-jedi.org/apilibrary.html mais je viens de vérifier et le lien vers le fichier sapi.zip semble être cassé, peut-être un e-mail à l'équipe de jedi cède la parole pour vous.

Si vous obtenez la main sur l'emballage, et étant donné que c'est une pellicule directe de l'API, alors les MDSN docs sont ce que vous voulez, remplacer simplement la syntaxe Delphi pour 99% C ++ syntaxe sera simple, ce qui est pas , juste poser la question spécifique ici (ou sur les newsgroups Embarcadero)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top