Interpretare semantică pentru recunoașterea vorbirii
Interpretarea semantică pentru recunoașterea vorbirii (SISR) definește sintaxa și semantica comentariilor pentru regulile gramaticale în Specificația gramatică a recunoașterii vorbirii (SRGS). Din 5 aprilie 2007, SISR a fost o recomandare a consorțiului World Wide Web .
Bazându-se pe gramaticile SRGS, permite browserelor vocale să interpreteze gramatica complexă prin ECMAScript și să livreze informațiile înapoi în program. De exemplu, permite cuvinte precum „Aș dori ca o Coca Cola și trei pizza mari cu ardei și ciuperci” să fie interpretate într-un obiect care poate fi înțeles de alte programe.
Un astfel de obiect ar putea arăta cam așa:
{
getränk: {
flüssigkeit:"coke",
größe:"mittel"},
pizza: {
anzahl: "3",
pizzagröße: "groß",
belag: [ "Peperoni", "Pilze" ]
}
}
O gramatică SRGS cu marcaj SISR care generează acest obiect este următoarea:
<?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" mode="voice" tag-format="semantics/1.0" root="order">
<rule id="order">
Ich hätte gerne eine
<ruleref uri="#drink"/>
<tag>out.drink = new Object(); out.drink.liquid=rules.drink.type;
out.drink.drinksize=rules.drink.drinksize;</tag>
und
<ruleref uri="#pizza"/>
<tag>out.pizza=rules.pizza;</tag>
</rule>
<rule id="kindofdrink">
<one-of>
<item>coke</item>
<item>pepsi</item>
<item>coca cola<tag>out="coke";</tag></item>
</one-of>
</rule>
<rule id="foodsize">
<tag>out="medium";</tag> <!-- "medium" is default if nothing said -->
<item repeat="0-1">
<one-of>
<item>small<tag>out="small";</tag></item>
<item>medium</item>
<item>large<tag>out="large";</tag></item>
<item>regular<tag>out="medium";</tag></item>
</one-of>
</item>
</rule>
<!-- Construct Array of toppings, return Array -->
<rule id="tops">
<tag>out=new Array;</tag>
<ruleref uri="#top"/>
<tag>out.push(rules.top);</tag>
<item repeat="1-">
and
<ruleref uri="#top"/>
<tag>out.push(rules.top);</tag>
</item>
</rule>
<rule id="top">
<one-of>
<item>anchovies</item>
<item>peperoni</item>
<item>mushroom<tag>out="mushrooms";</tag></item>
<item>mushrooms</item>
</one-of>
</rule>
<!-- Two properties (drinksize, type) on left hand side Rule Variable -->
<rule id="drink">
<ruleref uri="#foodsize"/>
<ruleref uri="#kindofdrink"/>
<tag>out.drinksize=rules.foodsize; out.type=rules.kindofdrink;</tag>
</rule>
<!-- Three properties on rules.pizza -->
<rule id="pizza">
<ruleref uri="#number"/>
<ruleref uri="#foodsize"/>
<tag>out.pizzasize=rules.foodsize; out.number=rules.number;</tag>
pizzas with
<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>one</item>
</one-of>
</item>
<item>two<tag>out=2;</tag></item>
<item>three<tag>out=3;</tag></item>
</one-of>
</rule>
</grammar>
Vezi si
Link-uri web
- Specificație SRGS (Recomandare W3C)
- Specificație SISR (Recomandare W3C)
- Grupul de lucru al browserului vocal al W3C