SALT (Speech Application Langage Tags) について

1. ダウンロード

http://www.microsoft.com/speech/download/dl/

上記のサイトから「Microsoft Speech Application SDK Beta 3」をダウンロードします。

"Order the .NET Speech SDK" のボタンをクリックし、フォームに情報を記入して "Submit" ボタンをクリックしてください。ダウンロードページが表示されましたら、SASDKBeta3_Full.exe (約200MB) をダウンロードしてください。

2. インストール

「Microsoft Speech Application SDK Beta 3」をインストールするか、あるいはダウンロードされたものを解凍し、「downloads\Microsoft Internet Explorer Speech Add-in\Setup for Internet Explorer\setup.exe」を実行して、SALTを単体でインストールします (SALTのみを使用するのであれば後者のもので十分です)。

3. SpeechTagsオブジェクトのCLASSIDについて

.NET Speech SDK をインストールした場合と、SALT単体をインストールした場合で、SpeechTagsオブジェクトのCLASSIDが異なります。どちらをインストールしたかによってSALTを使用するHTML文書を変更する必要があります。

具体的には、今回我々が作ったサンプルでは、

<object id="SpeechTags" CLASSID="clsid:********-****-****-****-************">

となっている箇所を、

.NET Speech SDKをインストールした場合

<object id="SpeechTags" CLASSID="clsid:DCF68E5B-84A1-4047-98A4-0A72276D19CC">

SALT単体でインストールした場合

<object id="SpeechTags" CLASSID="clsid:33cbfc53-a7de-491a-90f3-0e782a7e347a">

のようにそれぞれ書き変えてください。

SpeechTagsオブジェクトのCLASSIDは、レジストリを調べることによって確認することも出来ます。regedit.exeを使用して、"ClientBehaviorsU.ElementBehaviorFactory"というキーを検索すれば、SpeechTagsオブジェクトのCLASSIDが記してあるレジストリを見つけることが出来るようです。

4. 今回のバージョンの特徴

1. permittedSRengineの設定

Microsoft社製以外の音声認識エンジンを使用する場合、あらかじめHTML内にそのエンジンを許可するように記述する必要があります。Julius for SAPI の場合、

<salt:param name="permittedSRengine">Julius SAPI Engine</salt:param>

と<salt:listen>タグ直下に記述しなければいけません。

2. W3C で定義されたXML文法を利用可能

Warld Wide Web Consortium (W3C) で定義された、 Speech Recognition Grammar Specification (SRGS) 形式が使用可能です。以前までのサンプルなどで使われていた SAPI-XML 形式とは異なる形式です。Julius for SAPI の今回のバージョンの SALT のサンプルはこの形式を使用しています。

タグ名以外特に主だった仕様の変更のないタグに関する、SAPI-XMLのタグとの対応は次の通りです。

SAPI-XML形式 SRGS形式
<p> および </p> 普通のテキストでは使う必要が無くなりましたが、
<one-of> タグでの各項目の記述などには
<item> および </item> タグを使用します
<o> および </o> <item repeat="0-1"> および </item>
<l> および </l> <one-of> および </one-of>
・<ruleref></ruleref>タグについて
<ruleref uri="#from" />
<ruleref uri="datesubs.grxml#month" type="application/srgs+xml" />

などと記述することによって、#以降の名前のルールを呼び出すように変更されました。

・プロパテイ値の設定について

プロパティ値の設定は <tag> </tag> タグ内に記述します。 "$" はそのルールでのルートノードを表わし、 "$$" は直前の <ruleref> で呼び出されたルールのルートノードを表わします。 "." で子ノードへの移動を行ないます。

  <ruleref uri="#from" />
  <tag>$.from = $$</tag>
…
<rule id="from" scope="public">
  <one-of>
    <item>
      きょうと
<tag>$._value = 京都</tag>
</item>
<item> とうきょう
<tag>$._value = 東京</tag>
</item> から
</rule>

とすれば、上の部分のルールタグ内 "$.from._value" のノードに京都や東京といったプロパティ値が入ることになります。

今回のバージョンの SALT の html サンプルも御覧下さい。