目次

Dialog Studio

IPSJ-SLP / IPA / ISTC の活動として開発した Galatea Project の対話統合システム。

Install

TODO

リリース候補パッケージ

http://en.nishimotz.com/galatea_dialog_studio 最新情報

galatea-dialog_20100828-1_i386.deb

galatea-dialog の更新手順

dialog-studio-script

Mercurialで作業する

# まず作業コピーを作る
hg clone ssh://nishimoto@hg.sourceforge.jp//hgroot/galatea/dialog-studio-script
cd dialog-studio-script

# ファイルを編集する

# コミットする
hg commit -m "message"

# コミットを送信する
hg push ssh://nishimoto@hg.sourceforge.jp//hgroot/galatea/dialog-studio-script

# パッケージを作り直す
cd ..
mkdir galatea-dialog-201008xx
cd galatea-dialog-201008xx
sudo checkinstall ruby ../dialog-studio-script/misc/setup_dialog.rb

dialog-studio-java

Vine Linux 5 への対応

2009-09-03 現在の状況。

Vine 5 の 64bit 版では動作に成功していない。 Vine 5 の 32bit 版をインストールする。

配布サイト http://hil.t.u-tokyo.ac.jp/~nishi/galatea/work/temp.cgi (パスワードは nishimotz atmark gmail.com にお問い合わせください) から、以下をダウンロードする。 * galatea-dialog-20090831-3.i386.rpm * galatea-engine-20090604-2.i386.rpm * galatea-ja-chaone-1.3.2-2.i386.rpm * galatea-ja-unidic-20090604-2.i386.rpm

galatea-ja-chasen は動かないので、apt-get 版を使う。

以下 Vine の「デスクトップ環境」でインストールした環境に対する具体的な手順。

$ su
# apt-get install java-1.6.0-sun chasen
# rpm -i galatea-ja-chaone-1.3.2-2.i386.rpm
# rpm -i galatea-ja-unidic-20090604-2.i386.rpm
# rpm -i galatea-dialog-20090831-3.i386.rpm
# rpm -i --nodeps galatea-engine-20090604-2.i386.rpm

galate-engine は rpm パッケージに不具合があるので、 「破損パッケージ」扱いになってしまうが、以下の手順で動作する。

まずプロジェクトを作る。

$ galatea-generate app
$ cd app

いくつか設定を上書き変更する。

# config/runner.yml
ssm:
  gtalk:
    chasen_dir: /usr
javascript:
  jar: /usr/local/galatea-engine/DM1/lib/js.jar

julius は oss で動かす設定になっているが、 conf を修正して、デフォルトに戻す。 また、使用するハードウェア・デバイスの音声入力レベルにあわせて、 音声区間検出のしきい値も適当に変更する。

# skel/julius.conf.txt (一部)
-input mic
-lv 500

app の中で実行してみる。

$ ./script/runner

これでgalateaが起動し、「こんにちは」「さようなら」などの音声に反応すれば、動いている。

app の中で行った修正を、下記のファイルに反映させれば、/usr/local/bin/galatea-runner も動くはず。

なお、runner.yml で行った /usr/local/galatea-engine/DM1/lib/js.jar の設定は、本来は Mozilla が公開している最新の rhino エンジンに差し替えておく方がよい。

Java環境

Galatea Dialog Manager 2.1 までは Java 1.4 系を対象にしていたが、 Galatea Dialog Studio 2.2 からは Java 6 以降を対象に jar ファイルを構築している。 これは java.net.CookieManager を使用するためである。 また今後 ECMAScript エンジンを同梱の Mozilla Rhino (js.jar) から Java 6 の javax.script に移行する予定である。

Java環境は Sun JDK と OpenJDK の両方で動作が確認されている。

GrammarMaker

julius に依存したパッケージとして実装されたDialogStudio のクラスである。 内部的にも使用されているが、単体でも利用できるようにしている。 以下は、簡単な孤立単語文法を、テキストファイルの語彙データから作成する例。

$ rake version
java -cp /path/to/gdm.jar galatea.io.julius.GrammarMaker
(c)2003-2009 Takuya NISHIMOTO (nishimoto [atmark] m.ieice.org)
Galatea Dialog Studio 2.2.4b4 (090309)
GrammarMaker for Julius/Julian
Usage : java -cp gdm.jar galatea.io.julius.GrammarMaker [opt] gram dest
gram : xml grammar file
dest : target path + file_name without extentions
[opt]
-d dir : location of mkdfa.pl / mkfa etc.
-e enc : encoding for output
         default linux:euc-jp / windows:shift_jis

[gram.txt]

やすだこうどうわどこですか 安田講堂はどこですか
さんしろういけわどこですか 三四郎池はどこですか
あかもんわどこですか 赤門はどこですか
$ rake
(in /data/workdir)
java -cp /usr/local/galatea-dialog/bin/gdm.jar galatea.io.julius.GrammarMaker 
-d /usr/local/galatea-engine/SRM/bin -e shift_jis /data/workdir/_gram.xml 
/data/workdir/gram/gram
ok

$ ls gram/
gram.dfa  gram.dict  gram.grammar  gram.term  gram.voca

[rakefile.rb]

#!/usr/bin/ruby -Ku
# rakefile.rb
# updated for galatea-dialog-20100530
# rake (ruby 1.8 or 1.9) required
require "fileutils"
GDM_JAR = "/usr/local/galatea-dialog/jar/gdm.jar" 
SRM_BIN = "/usr/local/galatea-engine/SRM/bin"
 
task :version do
  sh "java -cp #{GDM_JAR} galatea.io.julius.GrammarMaker"
end
 
task :default do
  opt = "-d #{SRM_BIN} -e utf-8"
  gram = "_gram.xml"
  dest = "gram/gram"
  #
  FileUtils.mkdir_p("gram")
 
  File.open(gram, "w") do |f|
    f.puts <<-EOF
<?xml version="1.0" encoding="utf-8"?>
<grammar root="#all">
<rule id="all">
<one-of>
EOF
    File.open("gram.txt").each do |s|
      s.chomp!
      a, b = s.split(/ /)
      if a != nil
        f.puts "<item> <token sym=\"#{a}\">#{b}</token> </item>"
      end
    end
    f.puts <<-EOF
</one-of>
</rule>
</grammar>
EOF
  end
 
  sh "java -cp #{GDM_JAR} galatea.io.julius.GrammarMaker #{opt} #{Dir.pwd}/#{gram} #{Dir.pwd}/#{dest}"
end

julius を差し替える

galatea-dialog_20100529-1_i386.deb に関する情報。

julius を /usr/local にインストールしてあるとして、実行バイナリを差し替える。

galatea-generate して

# ./config/runner.yml
srm:
  julius:
    engine_dir: /usr/local
# ./skel/julius.conf.txt
<%
gram_dir = '/usr/local/galatea-engine/SRM/GramJulian'
am_dir   = '/usr/local/galatea-engine/SRM/AcousticModel'
%>

すればよい。 (なんとなく綺麗じゃないので仕様を見直すつもり)