Pregunta

I tiene por qué crear un equivalente de programación utilizando un lenguaje Delphi ... o alguien podría enviar un enlace sobre cómo hacerlo en las gramáticas Recogniton Peech utilizando el Delphi. O algún ejemplo de la gramática XML que tiene el equivalente de programación en Delphi. lo siento por mi Inglés.

**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 Gramática de ejemplo (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>
¿Fue útil?

Solución 2

de Guy finalmente capaz de obtener la respuesta ....
Esto podría ser útil a los demás ... :)
Este es el componente real que he creado. simplemente modificarlo para sus necesidades.

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;

Función Llamando ...

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);

Dejar comentario para aclaraciones .... buena suerte!

Otros consejos

Hay un envoltorio directa para la API de voz realizado por el equipo del jedi, usted debería ser capaz de encontrar el código de aquí http://www.delphi-jedi.org/apilibrary.html sin embargo acabo de comprobar y el enlace al archivo sapi.zip parece estar roto, tal vez un correo electrónico al equipo de Jedi a su vez, para arriba para usted.

Si lo hace controlar la envoltura, y dado que esto es envoltura directa de la API, a continuación, los documentos MDSN son los deseados, simplemente sustituir la sintaxis de Delphi para sintaxis de C ++ 99% será sencillo, lo que no es , acaba de hacer la pregunta específica de aquí (o en los grupos de noticias de Embarcadero)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top