% sat [scriptfile]
の形式で起動します。
例1
% sat config.xml
スクリプトファイルconfig.xmlを読み込んで起動します。
例2
% sat adaptor.xml script1.xml script2.xml
スクリプトファイルは任意の数に分けて読み込むことが可能です。 この例ではアダプタ定義部adaptor.xmlと2つのスクリプトファイルscript1.xmlとscript2.xmlを読み込んで起動します。
<general name="sample"> <adaptor name="speechrec" type="julius" host="192.168.136.1" port="9000" code="EUC-JP" /> <adaptor name="control" type="socket" host="192.168.136.1" port="10000" /> <adaptor name="talk" type="socket" host="192.168.136.1" port="11000" code="shift-jis" /> </general>
以下のオプションが指定可能です。
| name | アダプタを区別するID | 必須 |
|---|---|---|
| type | アダプタの種類 | 必須(”julius”または”socket”) |
| host | サーバを立ち上げたホストのIPアドレス | 必須 |
| port | サーバとの通信に利用するポート | 必須 |
| code | サーバとの通信に利用する文字コード | 任意(デフォルト無変換) |
Juliusのモジュールモードでの起動についてはjuliushowtoを参照。
スクリプトは、複数のルールからなります。 ルールの条件部が真となるとルールのコマンド部が起動します。
スクリプトの例
<rule name="main"> <head> <wordmatch name="speechrec.sentence"> <key>ロボット操作モード[へ変更]</key> </wordmatch> <state>speechrec.update == now</state> </head> <state>mode = "control"</mode> <stream name="talk"> (talk "ロボット操作モードへ変更") </stream> </rule> <rule name="robotcontrol"> <head> <state>mode == "control"</state> <wordmatch name="speechrec.sentence"> <key>1歩前進</key> <key>1歩前に進んで</key> <key>1歩前へ</key> </wordmatch> <state>speechrec.update == now</state> </head> <stream name="talk">(talk "1歩前に行きます") </stream> <stream name="control">(robot hwalk :set-target-pos 0.2 0 0)</stream> </rule>
このスクリプトでは、”main”と”robotcontrol”の2つのルールが定義されています。 「ロボット操作モードへ変更」という入力を受けると”main”ルールとマッチし、内部状態modeに値”control”が代入されます。 内部状態modeに値”control”が代入された状態で「一歩前に進んで」という入力を受けると”robotcontrol”ルールとマッチし、ロボット操作サーバへ一歩前へ進むコマンドを送信します。
オプションの説明
<rule> <head>[condition]</head> コマンド部 </rule>
conditionはそのルールが発火する条件を記述します。以下の表現を使うことができます。
<state>[formula]</state> <wordmatch>[phrases]</wordmatch>
| state表現 | ルールの一致条件を式で与える | 式が成り立ったときにルール発火 |
|---|---|---|
| wordmatch表現 | phrase | 最低一つは必須 |
state, wordmatchともに複数指定することができ、全てが成り立ったとき(AND条件)にルール全体が発火します。worsmatchは、複数のphraseを指定でき、どれかのphraseが一致すると真になるOR条件で判定されます。ルールが一致すると複数指定されたコマンドはすべて実行されます。
phraseの指定には以下の形式が利用できます。
| [subphrase] | subphraseがあってもなくても一致する |
|---|---|
| (subphrase1|subphrase2) | subphrase1かsubphrase2のどちらかがあった場合に一致する |
例1
一歩前に進んで[ください]
「一歩前に進んで」「一歩前に進んでください」のどちらにも一致します。
例2
(一歩前|二歩前|三歩前)に進んで
「一歩前に進んで」「二歩前に進んで」「三歩前に進んで」のどちらにも一致します。
オプションの説明
<stream [option]>[command]</stream>
オプションは以下のものがあります。
| name | コマンドを書き込むワーキングメモリID | 必須 |
|---|
書き込む先のワーキングメモリIDがソケットアダプタに関連づけられている場合、[command]で指定される内容が、ソケットアダプタで指定されるサーバに対して送信されます。
オプションの説明
<state>[command]</state>
[command]で指定される内容が、式評価されます。