3 Galatea DM の概要

3.1 対話記述言語の構成要素

Galatea DMが実装しているVoiceXML要素は,以下の機能から構成される.

VXML2.0
W3C VoiceXML 2.0 (http://www.w3.org/TR/voicexml20/)準拠の要素名や属性名のサブセットを実装した.
SRGS1.0
音声認識文法はW3C Speech Recognition Grammar Specification 1.0のXML形式で用いられる記述に対応し(http://www.w3.org/TR/speech-grammar/),さらにGalatea SRMモジュールで導入したtoken要素のphoneme属性に対応した.また、情報処理学会試行標準として標準化中の「音声認識読み記号」をtoken要素のsym属性によって記述できる。
JEIDA-62-2000
音声合成に関してはVoiceXMLに加えてGalatea SSMモジュールが実装しているJEIDA-62-2000音声合成マークアップを使用できる.
Galatea
Galatea FSMモジュールに対応した顔表情などの制御のため,独自に<emotion>要素および<native>要素を実装した.
ECMAScript
<script>要素の内容,<assign>要素のcond属性,<value>要素のexpr属性などにおいてはECMAScript式が記述可能である(http://www.ecma-international.org/publications/standards/ECMA-262.HTM).

また,all-ofおよびmediaの要素を導入し,以下のように顔表情変化と音声出力を並行して行うことができる.

all-of/mediaはPARサブモジュールを使用するための簡易表記である.この仕様は将来変更する可能性がある.

List 3.1 顔表情を変化させながら音声出力をする例
<all-of>
 <media type="face">
  <native>sleep 0.5</native>
  <native>to @FS-MCL set Rot = -1.5 0 0</native>
 </media>
 <media type="voice">
  <EMPH>お、<PRON SYM="オト’ノサマ">お殿様</PRON></EMPH>。
 </media>
</all-of>

機能の詳細な実装状況は、第2部「文法リファレンス」に示している.

3.2 音声認識文法の仕様

Galatea DM 1.0では<token>要素を含む<rule>要素を<grammar>要素内に列挙する記法を用いていたが,Galatea DM 2.0では,<one-of>要素および<ruleref>要素を用いてネットワーク文法を記述する.

<token>要素にphoneme属性があるある場合はそれをJulianの音素列(セミコロン区切り)と見なす.sym属性がある場合はその値を「音声認識読み記号」と見なし,Galatea DMがphoneme形式に変換してSRMに送る.

sym属性の記述方法は以下を参照すること.(参考文献:松浦他: 2003-SLP-45-11 (Feb.2003) pp.65-70.)

List 3.2 token要素におけるsym 属性の記述方法
   <grammar>
     <rule>
      <one-of>
        <item><token sym="とうきょう">東京</token> </item>
        <item><token sym="むさししんじょう">武蔵新城</token> </item>
        <item><token sym="まるの・うち">丸の内</token></item>
        <item><token sym="まるのうちえき">丸の内駅</token></item>
        <item><token sym="おおさか・あべのばし">大阪阿倍野橋</token></item>
        <item><token sym="けいえい">経営</token></item>
        <item><token sym="け・いえいがく">経営学</token></item>
        <item><token sym="ゆーざー">ユーザー</token></item>
        <item><token sym="あきた">秋田</token></item>

        <item><token sym="わたしわ">私は</token></item>
        <item><token sym="こんにちわ">こんにちは</token></item>
        <item><token sym="がっこうえ">学校へ</token></item>
        <item><token sym="わたしが">私が</token></item>

	<!-- 表1 第1行から第13行の第1列から第5列 -->
        <item><token sym="あいうえお">あいうえお</token></item>
        <item><token sym="かきくけこ">かきくけこ</token></item>
        <item><token sym="さしすせそ">さしすせそ</token></item>
        <item><token sym="たちつてと">たちつてと</token></item>
        <item><token sym="なにぬねの">なにぬねの</token></item>
        <item><token sym="はひふへほ">はひふへほ</token></item>
        <item><token sym="まみむめも">まみむめも</token></item>
        <item><token sym="らりるれろ">らりるれろ</token></item>
        <item><token sym="がぎぐげご">がぎぐげご</token></item>
        <item><token sym="ざじずぜぞ">ざじずぜぞ</token></item>
        <item><token sym="だでぃどぅでど">だでぃどぅでど</token></item>
        <item><token sym="ばびぶべぼ">ばびぶべぼ</token></item>
        <item><token sym="ぱぴぷぺぽ">ぱぴぷぺぽ</token></item>

	<!-- 表1 第14行から第19行の第1列から第5列 -->
        <item><token sym="てぃーてぃか">てぃーてぃか</token></item>
        <item><token sym="とぅーとぅか">とぅーとぅか</token></item>
        <item><token sym="すぃーすぃか">すぃーすぃか</token></item>
        <item><token sym="ずぃーずぃか">ずぃーずぃか</token></item>
        <item><token sym="あんあん">あんあん</token></item>
        <item><token sym="のっぽ">のっぽ</token></item>

	<!-- 表1 第1行の第6列から第13列 -->
        <item><token sym="やーやか">やーやか</token></item>
        <item><token sym="ゆーゆか">ゆーゆか</token></item>
        <item><token sym="いぇーいぇか">いぇーいぇか</token></item>
        <item><token sym="よーよか">よーよか</token></item>
        <item><token sym="わーわか">わーわか</token></item>
        <item><token sym="うぃーうぃか">うぃーうぃか</token></item>
        <item><token sym="うぇーうぇか">うぇーうぇか</token></item>
        <item><token sym="うぉーうぉか">うぉーうぉか</token></item>

	<!-- 表1 第2行の第6列から第13列 -->
        <item><token sym="きゃーきゃか">きゃーきゃか</token></item>
        <item><token sym="きゅーきゅか">きゅーきゅか</token></item>
        <item><token sym="きょーきょか">きょーきょか</token></item>
        <item><token sym="くぁーくぁか">くぁーくぁか</token></item>
        <item><token sym="くぃーくぃか">くぃーくぃか</token></item>
        <item><token sym="くぇーくぇか">くぇーくぇか</token></item>
        <item><token sym="くぉーくぉか">くぉーくぉか</token></item>

	<!-- 表1 第3行の第6列から第13列 -->
        <item><token sym="しゃーしゃか">しゃーしゃか</token></item>
        <item><token sym="しゅーしゅか">しゅーしゅか</token></item>
        <item><token sym="しぇーしぇか">しぇーしぇか</token></item>
        <item><token sym="しょーしょか">しょーしょか</token></item>

	<!-- 表1 第4行の第6列から第13列 -->
        <item><token sym="ちゃーちゃか">ちゃーちゃか</token></item>
        <item><token sym="ちゅーちゅか">ちゅーちゅか</token></item>
        <item><token sym="ちぇーちぇか">ちぇーちぇか</token></item>
        <item><token sym="ちょーちょか">ちょーちょか</token></item>
        <item><token sym="つぁーつぁか">つぁーつぁか</token></item>
        <item><token sym="つぃーつぃか">つぃーつぃか</token></item>
        <item><token sym="つぇーつぇか">つぇーつぇか</token></item>
        <item><token sym="つぉーつぉか">つぉーつぉか</token></item>

	<!-- 表1 第5行の第6列から第13列 -->
        <item><token sym="にゃーにゃか">にゃーにゃか</token></item>
        <item><token sym="にゅーにゅか">にゅーにゅか</token></item>
        <item><token sym="にょーにょか">にょーにょか</token></item>

	<!-- 表1 第6行の第6列から第13列 -->
        <item><token sym="ひゃーひゃか">ひゃーひゃか</token></item>
        <item><token sym="ひゅーひゅか">ひゅーひゅか</token></item>
        <item><token sym="ひょーひょか">ひょーひょか</token></item>
        <item><token sym="ふぁーふぁか">ふぁーふぁか</token></item>
        <item><token sym="ふぃーふぃか">ふぃーふぃか</token></item>
        <item><token sym="ふぇーふぇか">ふぇーふぇか</token></item>
        <item><token sym="ふぉーふぉか">ふぉーふぉか</token></item>

	<!-- 表1 第7行の第6列から第13列 -->
        <item><token sym="みゃーみゃか">みゃーみゃか</token></item>
        <item><token sym="みゅーみゅか">みゅーみゅか</token></item>
        <item><token sym="みょーみょか">みょーみょか</token></item>

	<!-- 表1 第8行の第6列から第13列 -->
        <item><token sym="りゃーりゃか">りゃーりゃか</token></item>
        <item><token sym="りゅーりゅか">りゅーりゅか</token></item>
        <item><token sym="りょーりょか">りょーりょか</token></item>

	<!-- 表1 第9行の第6列から第13列 -->
        <item><token sym="ぎゃーぎゃか">ぎゃーぎゃか</token></item>
        <item><token sym="ぎゅーぎゅか">ぎゅーぎゅか</token></item>
        <item><token sym="ぎょーぎょか">ぎょーぎょか</token></item>
        <item><token sym="ぐぁーぐぁか">ぐぁーぐぁか</token></item>
 
	<!-- 表1 第10行の第6列から第13列 -->
        <item><token sym="じゃーじゃか">じゃーじゃか</token></item>
        <item><token sym="じゅーじゅか">じゅーじゅか</token></item>
        <item><token sym="じぇーじぇか">じぇーじぇか</token></item>
        <item><token sym="じょーじょか">じょーじょか</token></item>
 
	<!-- 表1 第11行の第6列から第13列 -->
        <item><token sym="でゅーでゅか">でゅーでゅか</token></item>

	<!-- 表1 第12行の第6列から第13列 -->
        <item><token sym="びゃーびゃか">びゃーびゃか</token></item>
        <item><token sym="びゅーびゅか">びゅーびゅか</token></item>
        <item><token sym="びょーびょか">びょーびょか</token></item>
 
	<!-- 表1 第13行の第6列から第13列 -->
        <item><token sym="ぴゃーぴゃか">ぴゃーぴゃか</token></item>
        <item><token sym="ぴゅーぴゅか">ぴゅーぴゅか</token></item>
        <item><token sym="ぴょーぴょか">ぴょーぴょか</token></item>

	<!-- 表1 第14行から第17行の第6列から第13列 -->
        <item><token sym="てゅーてゅか">てゅーてゅか</token></item>
        <item><token sym="ふゅーふゅか">ふゅーふゅか</token></item>
 
	<!-- 表1 第19行の第6列から第9列 -->
        <item><token sym="ぢゃーぢゃか">ぢゃーぢゃか</token></item>
        <item><token sym="ぢゅーぢゅか">ぢゅーぢゅか</token></item>
        <item><token sym="ぢぇーぢぇか">ぢぇーぢぇか</token></item>
        <item><token sym="ぢょーぢょか">ぢょーぢょか</token></item>

	<!-- 表1 第19行の第10列から第13列 -->
        <item><token sym="はなぢ">鼻血</token></item>
        <item><token sym="つづく">続く</token></item>
        <item><token sym="わたしを">私を</token></item>
      </one-of>
      </rule>
     </grammar>