投稿者: nishimotz

  • [galatea] イベントとISTC総会

    昨日、情報処理学会第71回全国大会の特別セッション「擬人化エージェントとの音声対話を実現する基盤ソフトウェア」にて、Galatea for Linux の最新版を紹介しました。お集まりいただいた皆様にお礼を申し上げます。

    またその後に ISTC 実行委員会と総会が開催され、4月以降に sourceforge.jp でオープンソースソフトウェアとして公開するという方針も、正式に了承されました。

    個人的には私は昨日ずっと Ubuntu 8.10 で Impress!ve を使ってプレゼンテーションをしました。ThinkPad X300 で、Galatea のデモでは USB-Audio アダプタを使用。下記の記事のおかげです。いまや Impress!ve に比べたら Galatea なんて軽い、軽い。。

    実行委員の間では、オープンソースのライセンス戦略について様々な質問・意見がありました。また、国際化も重要な課題という認識が実行委員メンバーで共有されつつあります。

    Galatea は2003年に IPA のプロジェクト成果として公開後、正式には最新版を公開していません。しかし IPA 最終版についても、公開後多くの方から利用方法やライセンスについてお問い合わせをいただいてきました。これからも利用者・関心をお持ちの方からのご意見を伺っていきたいと思います。

  • JMC を使って Java で MP3 を再生する

    下記の記事

    を読んで、JavaFX のクラスを Java 言語から使うためのパターンがわかってきたので、Java Media Components を Java から使い MP3 ファイルを再生することに挑戦。やっと成功しました。

    ただし Windows XP で Java FX SDK 1.1 を C:\Program Files\JavaFX\javafx-sdk にインストールしています。

    JavaFX の機能は重要だがスクリプト言語は嫌い、という主張には同意できる点もあるのですが、下記の書き方がやたら冗長に感じるのも事実です。

    私としては、Java で過去に実装した資産をうまく再利用するためにこのテクニックを使ってみたいと思います。

    // Java MP3 Player using JavaFX JMC classes 
    // 2009-03-08 by nishimotz@gmail.com
    // based on work of Matt Hicks
    // http://www.matthicks.com/2009/02/i-hate-javafx-i-love-javafx.html
    //
    // Requirements (Eclipse 3.4.1)
    // To avoid 
    //   java.lang.UnsatisfiedLinkError: 
    //   com.sun.media.jmcimpl.plugins.directshow.DShowEngine.ndsInit()
    // add jmc.dll as follows:
    // Java -> Build Path -> User Library
    //   jmc-dll
    //   File : C:\Program Files\JavaFX\javafx-sdk\lib\desktop\jmc.dll
    //   Location : C:/Program Files/JavaFX/javafx-sdk/lib/desktop
    // Notes
    //   javafxgui.jar : for javafx.scene.media.* 
    package test;
    import java.io.IOException;
    import javafx.scene.Scene;
    import javafx.scene.media.Media;
    import javafx.scene.media.MediaPlayer;
    import javafx.scene.media.MediaView;
    import javafx.stage.Stage;
    public class MyMediaPlayer {
    public MyMediaPlayer() throws IOException {
    Media media = new Media(); {
    media.initialize$();
    String mediaUrl = "http://hoge.hoge/hoge.mp3";
    // String mediaUrl = "file:///C:/hoge/hoge.mp3";
    media.$source.set(mediaUrl);
    }
    MediaPlayer mediaPlayer = new MediaPlayer(); {
    mediaPlayer.$media.set(media);
    }
    MediaView mediaView = new MediaView(); {
    mediaView.$mediaPlayer.set(mediaPlayer);
    }
    Scene scene = new Scene(); {
    scene.impl_setWidth(100.0f);
    scene.impl_setHeight(100.0f);
    scene.$content.insert(mediaView);
    }
    Stage stage = new Stage(); {
    stage.$title.set("MyMediaPlayer");
    stage.$scene.set(scene);
    }
    mediaPlayer.play();
    }
    public static void main(String[] args) throws Exception {
    new MyMediaPlayer();
    }
    }
    

    参考までに、上記の元になった JavaFX の実装例はこちら:

    // based on http://gihyo.jp/dev/serial/01/javafx/0010?page=1
    import javafx.stage.Stage;
    import javafx.scene.Scene;
    import javafx.scene.Group;
    import javafx.scene.media.*;
    var mediaUrl:String = "http://hoge.hoge/hoge.mp3";
    var theWidth:Number = 100.0;
    var theHeight:Number = 100.0;
    var media = Media {
    source: mediaUrl
    };
    var mediaPlayer = MediaPlayer {
    media: media
    };
    Stage {
    title: "MP3 Player"
    scene: Scene {
    width: theWidth
    height: theHeight
    content: MediaView {
    mediaPlayer: mediaPlayer
    }
    }
    }
    mediaPlayer.play();
    
  • git を使う

    Vine Linux 4.2 に git のパッケージがあったので、使ってみました。

    下記の手順の中で、別の場所に新しいディレクトリをまったく作らないで作業ができている、というところが、CVS や Subversion と異なる点(手軽さという意味で大きなメリット)だと思います。

    インストール(Ubuntu でも同様)

    $ ssh yellow
    $ sudo apt-get update
    $ sudo apt-get install git-core
    
    • Vine 3.x には git-core パッケージはないみたいです

    個人のデフォルトを設定する

    git config --global user.email "nishimoto@m.ieice.org"
    git config --global user.name "Takuya Nishimoto"
    
    • ~/.gitconfig に書き込まれるようです

    既存のディレクトリをバージョン管理下におく。ここでは職場で使っている bibdb という自前ツールの例。

    $ cd /export/htdocs/html/bibdb/
    $ git init
    
    • カレントディレクトリに .git ディレクトリが作成され、これがレポジトリになる

    管理したいファイルを追加する

    $ git add *.php *.txt
    $ git add cgi-bin/update_publication.cgi
    $ git add *.jpg *.gif .htaccess
    

    追跡されているファイルとされていないファイルを確認する

    $ git status
    

    commit する

    $ git commit -m "first commit"
    
    • これにより、追跡されているファイルが .git 内に保存され、比較・復元が可能になる

    編集してみる

    $ emacs -nw 00readme.txt
    

    差分を確認

    $ git diff
    diff --git a/00readme.txt b/00readme.txt
    index ff26fee..c15f626 100644
    --- a/00readme.txt
    +++ b/00readme.txt
    @@ -4,3 +4,7 @@
    TODO:
    <A5><A2><A5><C3><A5><D7><A5><ED><A1><BC><A5><C9><A4><B5><A4><EC><A4><BF>pdf<A4><F2>chmod 644<A4><B9><A4>
    +
    +2009-03-06 by nishimoto
    +
    + $ git init
    
    • TODO: 文字化けの解決
      • 環境変数 GIT_PAGER を使うのかな?

    差分を commit する

    $ git commit --all -m "readme updated"
    [master]: created b5f0737: "readme updated"
    1 files changed, 4 insertions(+), 0 deletions(-)
    

    履歴を確認する

    $ git log
    commit b5f073788c35befd95f5a907777c221f17e63d1e
    Author: Takuya Nishimoto <nishimoto@m.ieice.org>
    Date:   Fri Mar 6 17:01:05 2009 +0900
    readme updated
    commit 42dff939ec85d2faa212ba42ff617f5fdac215e6
    Author: Takuya Nishimoto <nishimoto@m.ieice.org>
    Date:   Fri Mar 6 16:42:51 2009 +0900
    first commit
    

    ブランチを確認する

    $ git branch
    * master
    

    ブランチを作る

    $ git branch experiment
    $ git branch
    experiment
    * master
    

    別のブランチで作業してみる

    $ git checkout experiment
    Switched to branch "experiment"
    
    $ emacs -nw 00readme.txt
    $ git diff
    diff --git a/00readme.txt b/00readme.txt
    index c15f626..be17e40 100644
    --- a/00readme.txt
    +++ b/00readme.txt
    @@ -8,3 +8,8 @@ TODO:
    2009-03-06 by nishimoto
    $ git init
    +
    +2009-03-06 by nishimoto
    +
    + git branch : experiment
    +
    

    experiment ブランチに commit する

    $ git commit --all -m "00readme modified"
    [experiment]: created 609c427: "00readme modified"
    1 files changed, 5 insertions(+), 0 deletions(-)
    

    master ブランチに戻す

    $ git checkout master
    Switched to branch "master"
    $ cat 00readme.txt
    [yellow]
    /home/httpd/html/bibdb/
    TODO:
    アップロードされたpdfをchmod 644する
    2009-03-06 by nishimoto
    $ git init
    

    experiment の更新を master にマージする

    $ git merge experiment
    Updating b5f0737..609c427
    Fast forward
    00readme.txt |    5 +++++
    1 files changed, 5 insertions(+), 0 deletions(-)
    

    マージできたことを確認する

    $ git branch
    experiment
    * master
    $ cat 00readme.txt
    
    [yellow]
    /home/httpd/html/bibdb/
    TODO:
    アップロードされたpdfをchmod 644する
    2009-03-06 by nishimoto
    $ git init
    2009-03-06 by nishimoto
    git branch : experiment
    

    リンク

    更新記録

    • 2009-03-10 : 事前に git config で user.name などを指定するようにしました。
  • 情報保障と音声認識

    先日、パソコンソフトの売り場で、音声認識ソフトを買いに来たお客さんに店員さんが説明をしているのを耳にしました。

    どうやら議事録の作成に使いたい様子。これに対して店員さんは、いまの技術ではヘッドセットを付けてリスピークした音声でないと無理、フットスイッチで音声を止めながら聞いてキーボードで書き起こす方がいいです、と説明。音声認識ソフトを買うことを思い留まらせようとしていました。

    音声認識の中でもディクテーションは使いこなすことが難しい技術だと思います。

    しゃべれば文字になる。

    そう言われると誰もが過度な期待を持ちます。

    その技術にどんな制約や限界があるのか、喋り手は理解していません。説明されたり練習をしても、常に意識していられません。

    情報保障の場で、音声認識を意識しつつ、目の前の聴き手に対して自然に話すことはできるのか?

    上手にリスピークをするためのコツはあるのか?

    音声認識結果の読み手に配慮する情報提示の方法は?

    これらの問題について先日の研究会でもいろんなヒントがありました。

    おそらくは音声認識技術だけでなくヒューマンインタフェースが大きなポイントです。

    例えば NHK の研究所ではテレビ放送字幕を音声認識で作成する研究が行われています。音声認識エンジンをどのように改良すればよいか、誤認識を人手で訂正するインタフェースはいかにあるべきか、ということについても検討が行われています。

    ここ数年の音声認識を取り巻く技術の変化、ニーズの変化を踏まえて、そろそろ、新たな取り組みが可能になりつつあるのかも知れません。

  • [wit] 第46回研究会が終了

    松山での研究会が終了しました。

    個人的には、音声認識や話速変換などの技術を情報アクセシビリティにどう生かすか、改めて考えさせられました。これをきっかけに情報保障の実験が活発になればよいと思います。私も音声認識の応用など、自分でもいろいろやってみたいと思いました。

    以下、次回以降の予定です。

    • 第47回研究会:2009年3月23日~25日
      • 会場:島根大学(松江市) 一般発表16件
      • 2008年度HCGシンポジウム合同イベント
        • 「オブジェクト指向スクリプト言語 「Ruby」の開発」 まつもと ゆきひろ(ネットワーク応用通信研究所)
        • 「エンタテイメント工学:心を豊かにする科学技術の創生」 苗村健(東大)・稲見昌彦(慶大)
        • 「HC研究の過去・現在・未来 ~ MVE研の事例から ~ 」
        • HCG懇親会(HC賞表彰式)
      • 手話通訳・要約筆記=2月27日締切
      • 点字資料=研究会プログラムと概要を作成予定
    • 第48回研究会:2009年5月14日~15日
      • 会場:沖縄産業支援センター
      • 発表申込期限:2009年3月13日
      • テーマ:コミュニケーション支援,共生コミュニケーション,および福祉情報工学一般
      • 共催:ヒューマン情報処理研究会(HIP),ヒューマンコミュニケーション基礎研究会(HCS),ヒューマンインタフェース学会研究会
  • checkinstall

    最近、簡単に .deb パッケージを作るツールの存在を知りました。

    さっそく galatea で使用しています。

    GalateaTalk で使っている言語処理系 /usr/local/istc をパッケージにする例です:

    準備

    作業環境は Ubuntu Linux 8.10

    $ sudo apt-get install checkinstall

    目標

    • /usr/xxx にインストールするための .deb を作る

    準備

    • インストールするコマンドを確認。ここでは sudo ruby setup-morph.rb だとする。
    • mkdir istc-galatea-morph-20090216 のようにパッケージ名とバージョン番号をつなげたディレクトリを作り、その中で作業するとスムーズ。

    作業

    $ sudo checkinstall ruby setup-morph.rb

    いくつかデフォルトから変更。

    管理者: nishimoto@m.ieice.org

    ライセンス:ISTC

    パッケージ名: istc-galatea-morph

    • パッケージが作成され、インストールが行われる。owner が root なので sudo chown しておく。

    完成したパッケージのインストール

    $ sudo dpkg -i istc-galatea-morph_20090216-1_i386.deb

    $ ls /usr/local/istc

    chaone-1.3.2-istc chasen-2.4.1-istc unidic-chasen139_eucj

  • 2月研究会

    金曜日から愛媛で研究会です。研究会開催案内ページを下記で公開しています。

  • リリースノートとチュートリアル

    sourceforge.jp の galatea プロジェクトの wiki サイトに、3月に配付される予定の Galatea Toolkit リリースノートとチュートリアルの草稿を公開しています。

    チュートリアルでは Ruby on Rails を使う具体的な例を掲載しました。

  • テンプレートの階層

    音声対話ツールキット Galatea のプロジェクトに関わり、マルチモーダル対話記述・アーキテクチャの標準化に関わり、Ruby on Rails による VoiceXML アプリケーションの実装について考えた末、「階層化されたシステムの実装は、テンプレートエンジンの階層になる」と思うようになりました。

    Webアプリケーションのフレームワークの多くがテンプレートエンジンを提供しています。いくつもの階層でそれぞれに記述の標準化を行っていることのメリットは十分にありますが、記述が冗長になるというデメリットもあります。テンプレートエンジンはこうした問題を解決する一つの手段です。

    音声対話技術コンソーシアム(ISTC)では、音声入出力、GUI入出力などを有するインタフェースシステムについて、各階層でのインタラクション記述仕様の標準化について検討を行い、いわゆる Model/View/Controller の構造をさらに詳細化した6階層を提案しています。

    私が開発を続けている Galatea Dialog Studio という対話制御エンジンについて考えると、いくつかの階層は Ruby on Rails のMVCフレームワークに対応していると考えられます。また、いわゆる Web アプリケーションをまず実装して、HTML に依存するレイヤーだけを VoiceXML に差し替える、という音声対話システムの実装も、妥当な手法になると思います。

    Galatea Toolkit の Linux 版について、インストールや設定の難しさという課題が残っています。当初の設計によって各モジュールを統合することに成功しました。しかし、カスタマイズやデバイス設定が必要な場合に、現時点では、多くの箇所を矛盾なく変更する必要があります。

    インタラクション記述ではないものの、各階層を動作させるためには、それぞれ必要なパラメータや設定情報があります。例えば音声合成であれば、言語処理や話者モデルのリストを与える必要があります。音声認識についてはオーディオ入力、音声検出、音響モデルなど数多くのパラメータが存在します。これらの設定を Galatea Toolkit で統合的に扱いたいと考えています。設計していくとこれはやはり「テンプレートの階層」になりそうです。

    具体的には、以下のようなアーキテクチャで実装を進めています。

    1. システム領域にインストールされるファイルやツール
      • 汎用的なエンジンやファイル
        • プロジェクトファイルのテンプレート
        • 実行時ファイルのテンプレート
      • パスを固定してインストールする必要があるツール
      • プロジェクトを生成する galatea-generate コマンド
    2. ユーザ領域にプロジェクトファイルとして生成されるファイル群
      • config ディレクトリ
        • システム設定ファイル: システム領域の path などを参照する
        • プロジェクト設定ファイル:プロジェクト固有の設定
      • 拡張モジュール用ディレクトリ:プロジェクト固有のモダリティ拡張など
      • log / tmp 用ディレクトリ
      • runner スクリプト
      • プロジェクトの編集を支援するスクリプト
      • 対話アプリケーションサーバ:例えば rails のプロジェクト
    3. 実行時に生成されるファイル群
      • システム領域のテンプレートとプロジェクト設定ファイルに基づいて生成

    これらをできるだけ Ruby on Rails の作法に馴染むように設計を行っています。

    私は Rails に触れる前に、Java で簡易テンプレートエンジンを実装してみたり、PHP や Perl のテンプレートエンジンを使ったりしましたが、インストールが面倒であったり、テンプレートエンジン独自の記述言語を使用していたり、といったところに不満を感じました。

    Ruby が ERB というテンプレートエンジンを標準で備えていて、ERB の中で Ruby 言語そのものが使用できる、自作の Ruby スクリプトから簡単に ERB の機能が利用できる、ということに、好感を持っています。

    VoiceXML ブラウザと HTML ブラウザは完全に等価な位置づけと見なせない部分がいくつかあります。またモダリティを使い分けるのではなく組み合わせる場合にはさらに考慮が必要となります。どの階層をどのように補っていくべきか、今後システム実装の経験を踏まえた提案をしていきたいと考えています。

  • 大統領と情報保障

    2月20~21日に愛媛大学で開催する第46回(平成20年度第5回)福祉情報工学研究会では「通訳者支援システム「イズ」とその情報保障支援の可能性」という招待講演企画を行います。そこで紹介していただく「イズ」というシステムを使ったイベントが2月10日に四谷で開催されるそうです。

    緊急開催!特別通訳セミナー

    「オバマ大統領演説~そのスピーチ英語に迫る」

    ~世界初の通訳支援システムを使った同時通訳の実演付~

    下記サイトでも案内されています。

    「日本の通訳の草分けで大御所の小松達也氏をお迎えして「is」の初めての公開同時通訳を行います」とのこと。

    このシステムを、英語の通訳だけでなく、手話通訳やPC要約筆記など情報保障の普及に役立てられないか、という提案が、愛媛大学の研究会での企画趣旨です。

    「通訳者支援システム「イズ」とその情報保障支援の可能性」

    企画概要:

    一般に通訳においては聞きながら喋るという作業が必要であり高い認知的負荷が生じる。

    これは手話通訳などの情報保障においても同様と考えられる。

    特に通訳作業におけるこのような認知的負荷を軽減するために、(株)ストレートワード、(株)パワーシフト、東京大学の共同で通訳者支援システム「イズ」が開発され、これまでに日本語・英語などの同時通訳・逐次通訳におけるパフォーマンス向上とコスト削減の効果が確認されており、語学学習、講演聴講支援など多様な応用も期待されている。

    本企画ではこのシステム「イズ」を実演を交えて紹介していただく。

    本システムでは話速変換が技術要素として用いられており、また、手話通訳や要約筆記など情報保障への応用の可能性を秘めている。

    聴覚および福祉情報工学の共催研究会において本システムの紹介の場を設けることで、さまざまな議論のきっかけになることを期待したい。

    ご紹介する技術が情報保障に役立つ、ということは、今の段階では著者グループと私の中での仮説に過ぎません。

    今回の企画で技術をご紹介いただくことをきっかけに、こういった実験を研究として行う場が自発的に形成されることを期待しています。

    余談ですが、1月のオバマ大統領就任の際にホワイトハウスのウェブサイトがリニューアルされました。RSS フィードが発信され、さらにアクセシビリティに力を入れることが宣言されています。ビデオ映像に字幕が付与されるなどの取り組みがなされています。