Эта статья требует дополнительных ссылок для проверки . ( февраль 2015 г. ) ( Узнайте, как и когда удалить это сообщение-шаблон ) |
Семантическая интерпретация для распознавания речи (SISR) определяет синтаксис и семантику аннотаций к правилам грамматики в Спецификации грамматики распознавания речи (SRGS). С 5 апреля 2007 года это рекомендация Консорциума World Wide Web . [1]
Основываясь на грамматиках SRGS, он позволяет голосовым браузерам через ECMAScript семантически интерпретировать сложные грамматики и передавать информацию обратно в приложение. Например, он позволяет произносить фразы типа «Я хочу кока-колу и три большие пиццы с пепперони и грибами». быть интерпретированным в объект, который может быть понят приложением. Например, высказывание может создать следующий объект с именем order :
{ напиток : { жидкость : " кола " , размер напитка : "средний" }, пицца : { число : "3" , пицца : "большая" , начинка : [ "пепперони" , "грибы" ] } }
Если используется против этой грамматики, которая включает разметку SISR в дополнение к стандартной грамматике SRGS в формате 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 " mode = " voice " tag-format = " semantics / 1.0 " root = " order " > <rule id = "order" > Я бы хотел <ruleref uri = "#drink" /> <tag> out.drink = новый объект (); out.drink.liquid = rules.drink.type; out.drink.drinksize = rules.drink.drinksize; </tag> и <ruleref uri = "#pizza" /> <tag> out.pizza = rules.pizza; </tag> </rule> <rule id = "kindofdrink" > <one-of> <item> кокс </item> <item> пепси </item> <item> кока-кола <tag> out = "кокс" ; </tag> </item> </one-of> </rule> <rule id = "foodsize" > <tag> out = "medium"; </tag> <! - "средний" по умолчанию, если ничего не сказано -> <item repeat = "0-1" > <one-of> <item> маленький<tag> out = "маленький"; </tag> </item> <item> medium </item> <item> large <tag> out = "large"; </tag> </item> <item> обычный <tag> out = "medium"; </tag> </item> </one-of> </item> </rule> <! - Создать массив начинок, вернуть массив -> <rule id = "tops" > <tag> out = new Множество; </tag> <ruleref uri = "#top" /> <tag> out.push (rules.top);</tag> <item repeat = "1-" > и <ruleref uri = "#top" /> <tag> out.push (rules.top); </tag> </item> </rule> <rule id = "top" > <one-of> <item> анчоусы </item> <item> пепперони </item> <item> гриб <tag> out = «грибы»; </tag> </item> <item> грибов </item> </one-of> </rule> <! - Два свойства (размер напитка, тип) слева Переменная правила -> <rule id = "напиток " > <ruleref uri = " #foodsize " /> <ruleref uri = "#kindofdrink" /> <тег> out.drinksize = rules.foodsize; out.type = rules.kindofdrink; </tag> </rule> <! - Три свойства на rules.pizza -> <rule id = "pizza" > <ruleref uri = "#number" /> <ruleref uri = "#foodsize" /> < тег> out.pizzasize = rules.foodsize; out.number = rules.number; </tag> пицца с <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> один </item> </one-of> </item> <item> два <tag> out = 2; </tag> </item> <item> three <tag> out = 3; </tag> </item> </one-of> </ правило> </grammar>