Loading article…
音声認識のための意味解釈(SISR)は、音声認識文法仕様(SRGS)の文法規則に対する注釈の構文と意味を定義します。2007年4月5日以降、ワールドワイドウェブコンソーシアムの勧告となっています。[ 1 ]
SRGS文法を基盤とすることで、ECMAScriptを介した音声ブラウザが複雑な文法を意味的に解釈し、その情報をアプリケーションに返すことが可能になります。例えば、「コカ・コーラを 1 杯と、ペパロニとマッシュルームの大きなピザを 3 枚ください。」のような発話を、アプリケーションが理解できるオブジェクトに解釈することができます。例えば、この発話から、 orderという名前の次のようなオブジェクトが生成される可能性があります。
{ドリンク: {液体: "コーラ" 、ドリンクサイズ: "中" }、ピザ: {番号: "3" 、ピザサイズ: "大" 、トッピング: [ "ペパロニ" 、"マッシュルーム" ] } }XML形式の標準SRGS文法に加えてSISRマークアップを含むこの文法に対して使用した場合:
<?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" > I would like a <ruleref <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" は何も指定しない場合のデフォルトです-- > < 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> <!-- トッピングの配列を構築します。return Array --> <rule id= "tops" > <tag> out=new Array; </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> anchovies </item> <item> pepperoni </item> <item> mushroom <tag> out="mushrooms"; </tag></item> <item> mushrooms </item> </one-of> </rule> <!-- 左側のルール変数に 2 つのプロパティ (drinksize、type) --> <rule id= "drink" > <ruleref uri= "#foodsize" /> <ruleref uri= "#kindofdrink" /> <tag> out.drinksize=rules.foodsize; out.type=rules.kindofdrink; </tag> </rule> <!-- rules.pizza の 3 つのプロパティ --> <rule id= "pizza" > < ruleref uri= "#number" /> <ruleref uri= "#foodsize" /> <tag> 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> one </item> </one-of> </item> <item> two <tag> out=2; </tag></item> <item> three <tag> out=3; </tag></item> </one-of> </rule> </grammar>