Este artículo necesita citas adicionales para su verificación . ( febrero de 2015 ) ( Aprenda cómo y cuándo eliminar este mensaje de plantilla ) |
La interpretación semántica para el reconocimiento de voz (SISR) define la sintaxis y la semántica de las anotaciones a las reglas gramaticales en la especificación gramatical de reconocimiento de voz (SRGS). Desde el 5 de abril de 2007, es una recomendación del World Wide Web Consortium . [1]
Al basarse en las gramáticas SRGS, permite que los navegadores de voz a través de ECMAScript interpreten semánticamente gramáticas complejas y proporcionen la información a la aplicación. Por ejemplo, permite expresiones como "Me gustaría una Coca-Cola y tres pizzas grandes con pepperoni y champiñones". para ser interpretado en un objeto que pueda ser entendido por una aplicación. Por ejemplo, el enunciado podría producir el siguiente objeto llamado orden :
{ bebida : { líquido : "coca cola" , tamaño de bebida : "mediano" }, pizza : { número : "3" , tamaño de pizzas : "grande" , cobertura : [ "pepperoni" , "champiñones" ] } }
Si se usa contra esta gramática que incluye marcado SISR además de la gramática SRGS estándar en formato XML:
<? xml version = "1.0" encoding = "UTF-8"?> <! DOCTYPE grammar PUBLIC "- // W3C // DTD GRAMMAR 1.0 // EN" "http://www.w3.org/TR/speech -grammar / grammar.dtd "> <grammar xmlns = " http://www.w3.org/2001/06/grammar " xml: lang = " en " xmlns: xsi = " http://www.w3.org / 2001 / XMLSchema-instance " xsi: schemaLocation = " http://www.w3.org/2001/06/grammar http://www.w3.org/TR/speech-grammar/grammar.xsd " version = " 1.0 " modo = " voz " formato de etiqueta = " semántica / 1.0 " raíz = " orden " > <rule id = "orden" > me gustaría un <ruleref uri = "#drink" /> <tag> out.drink = new Object (); out.drink.liquid = rules.drink.type; out.drink.drinksize = rules.drink.drinksize; </tag> y <ruleref uri = "#pizza" /> <tag> out.pizza = rules.pizza; </tag> </rule> <rule id = "kindofdrink" > <one-of> <item> coca cola </item> <item> pepsi </item> <item> coca cola <tag> out = "coca cola" ; </tag> </item> </one-of> </rule> <rule id = "tamaño de la comida" > <tag> out = "medium"; </tag> <! - "medium" es el valor predeterminado si no se dice nada -> <item repeat = "0-1" > <one-of> <item> small<tag> out = "pequeño"; </tag> </item> <item> mediano </item> <item> grande <tag> out = "large"; </tag> </item> <item> regular <tag> out = "medium"; </tag> </item> </one-of> </item> </rule> <! - Construye una matriz de ingredientes, devuelve una matriz -> <rule id = "tops" > <tag> out = new Formación; </tag> <ruleref uri = "#top" /> <tag> out.push (rules.top);</tag> <item repeat = "1-" > y <ruleref uri = "#top" /> <tag> out.push (rules.top); </tag> </item> </rule> <rule id = "top" > <one-of> <item> anchoas </item> <item> pepperoni </item> <item> champiñón <tag> out = "hongos"; </tag> </item> <item> champiñones </item> </one-of> </rule> <! - Dos propiedades (tamaño de bebida, tipo) en el lado izquierdo Variable de regla -> <rule id = "beber " > <ruleref uri = " #tamaño de los alimentos " /> <ruleref uri = "#kindofdrink" /> <etiqueta> out.drinksize = rules.foodsize; out.type = rules.kindofdrink; </tag> </rule> <! - Tres propiedades en rules.pizza -> <rule id = "pizza" > <ruleref uri = "#number" /> <ruleref uri = "#foodsize" /> < etiqueta> out.pizzasize = rules.foodsize; out.number = rules.number; </tag> pizzas con <ruleref uri = "#tops" /> <tag> out.topping = rules.tops; </tag> </rule> <rule id = "number" > <one-of> <item> <tag> out = 1; </tag> <one-of> <item> a </item> <item> uno </item> </one-of> </item> <item> dos <tag> out = 2; </tag> </item> <item> tres <tag> out = 3; </tag> </item> </one-of> </ rule> </grammar>