投稿者: nishimotz

  • VoiceXMLとRuby on Rails

    先日、音声対話技術コンソーシアム(ISTC)総会で、Galatea Dialog Studioについて御報告をして、表題の件についてこんなデモをお見せしました。

    # voice_controller.rb
    class VoiceController < ApplicationController
    def state1
    # counter をセッションで記憶する 
    if !session[:counter]
    session[:counter] = 1
    else
    session[:counter] += 1
    end
    @regions = {
    '東京' => 'とうきょう',
    '横浜' => 'よこはま',
    '大阪' => 'おおさか',
    '広島' => 'ひろしま',
    '京都' => 'きょうと'
    }
    end
    def state2
    if params[:region]
    @region = NKF.nkf('--utf8', params[:region])
    end
    end
    end
    
    # voice/state1.rxml
    xml.instruct!
    xml.vxml "version" => 2.0, "xml:lang" => "ja" do
    xml.form :id => 'ask' do
    xml.field :name => 'region' do
    xml.prompt :timeout => '20s' do
    xml.text! "#{session[:counter]}番です。"
    xml.text! "天気を聞きたい地域を、"
    @regions.each_key { |k| xml.text! k + "" }
    xml.text! "から選んでください。"
    end
    xml.grammar :version => 1.0, :root => '#region_rule' do
    xml.rule :id => 'region_rule' do
    xml.tag!('one-of') do
    @regions.each_key do |k|
    xml.item do
    xml.token :sym => @regions[k], :slot => "region" do
    xml.text! k
    end
    end
    end
    xml.item do
    xml.token :sym => "まいくてすと" do
    xml.text! "マイクテスト"
    end
    end
    end
    end
    end
    end
    xml.block do
    xml.submit :next => (url_for :action => "state2")
    end
    end
    end
    
    # voice/state2.rxml
    xml.instruct!
    xml.vxml "version" => 2.0, "xml:lang" => "ja" do
    xml.form :id => 'answer' do
    xml.block :id => 'answer' do
    xml.log "地域=#{@region}"
    xml.prompt do
    xml.text! "#{@region}の天気は曇りです。"
    xml.break
    end
    xml.goto :next => (url_for :action => "state1")
    end
    end
    end
    

    VoiceXML処理系とRailsを組み合わせてフルスタックのアプリケーション開発環境を作る提案の最初のステップをお見せしたわけですが、RXML で VoiceXML を書いてみて、すっきりしたようなしないような、ちょっと中途半端な感じです。xml インスタンスにもうちょっと賢いメソッドを追加したら良いのかなあ、などと思案しています。

  • 明日への遺言

    映画「明日への遺言」が封切られてヒット中だそうです。私は昨年秋に、東京国際映画祭の特別招待作品として渋谷オーチャードホールで観てきました。映画祭に行くのも初めて、舞台挨拶も初めてで、あいにくの天気でしたが、貴重な「お祭り気分」を楽しむことができました。知人がエンドロールに名前を連ねていたのも嬉しかったのですが。

    上映後、主演の藤田まことさんが挨拶の最後に「15秒や20秒でオチをつけなくてはいけない昨今、もっとゆっくりした時代に戻っていってほしい」といったことを言われました。監督の小泉堯史氏が、「来年3月の公開のときの観客動員が一番心配だ」と言っておられました。そのくらい「頑張らないと観てもらいにくい」映画であり、「頑張って多くの人に観てもらうべき」映画だと、制作者たちが自覚しているのだろう、と思って話を聞きました。

    ひたすら「語ること」で物語が進み、「語ること」だけが観客の心を動かしていく、そんな映画です。戦争に関する映画なのですが、派手なシーンはなく、特殊な状況が言葉によって淡々と描写されていきます。

    そして紡がれる言葉によって明らかになっていくのは、「法」や「組織」といったシステムの不透明で不気味な力です。「責任を取ること」を放棄した経営者や官僚たちが起こした昨今の数々の不祥事を思うと、複雑な気持ちになる。そんなことを考えながら映画館を後にしました。

    あれから数ヶ月、相変わらず「責任の取り方」については不愉快なニュースが続いています。

  • アクセシビリティのアンチパターン

    2月27日、NHK放送技術研究所で行われた「視覚障害者向けマルチメディアブラウジング技術の開発」というシンポジウムに参加しました。ディジタル放送のバリアフリー研究開発についての情報通信研究機構の委託研究の成果発表でした。

    視覚障害を持つ方の多くがテレビを情報源にしている、という現状があるのですが、ディジタルテレビ放送のデータ放送にはスクリーンリーダーのような技術が存在しません。このような現状を解決するために、音声ブラウザの技術、点字ディスプレイや触覚ディスプレイなどの技術を応用した興味深い技術報告とデモンストレーションが行われました。

    そのことはとても意義のあることだと思ったのですが、一方で私が感じたのは、そもそもディジタル放送という技術をもっとユニバーサルデザインで設計できなかったのだろうか、放送情報の作り手がもっとアクセシビリティに配慮することができないのだろうか、ということです。

    データ放送に使われるBMLはDynamic HTMLの技術がベースなのですが、ECMAScriptで動的に制御することに特化していて、pとdivとobjectしかタグがないのだそうです。意味的な構造を記述するタグがないので、たとえ情報を取り出せたとしても、音声や展示で提示するためのナビゲーション操作ができません。

    だから、放送局でBMLの画面を作った後で、それに合わせて意味的情報を取り出すための「後処理用データ」を作って、受信側に送る、という仕組みが開発されています。XPathなどを使ってテキストエレメントを取り出して、視覚的構造から意味的構造をごりごり抽出するわけです。

    どうにもスマートじゃないと思うのですが、放送の現場で最初から「意味的構造でマークアップされたデータを作成する」というのは難しいのだそうです。

    新しい技術が開発されるたびに「アクセシビリティのアンチパターン」というべきものが繰り返されているように感じます。

    そんなに歴史の古い技術でもないはずのディジタルテレビが、こんな方法でしかアクセシビリティを確保できないのは、技術よりも思想に問題があったとしか言いようがないように思います。

    セマンティクスを無視して低レベルのインタラクションを記述するような、スクリプト言語での制御に過度に依存するような、そんなマークアップ言語を設計してしまうと、ユニバーサルデザインが損なわれる。こういうことは、新しい技術を開発して標準化する人が、教訓として持つべきではないでしょうか。

    そういえばテレビもラジオも、もともと受信機を自作できるくらいオープンなインフラだった、ということをふっと思い出しました。

    いまやテレビは、データのコピーさえ自由にできないインフラになっています。ブラックボックスをアクセシブルにすることがいかに難しいか。。。

    ラジオが相変わらず、受信機を自作できるくらいオープンなインフラであることは、いいことだなあ、と思ったりもします。

  • 福祉情報工学関連リンク集

    福祉情報工学研究会の研究専門委員の方々に、参加している学会・研究会・会議を挙げていただき、リンク集を作成しました。学会の開催予定なども分かる範囲で記載しました。下記で公開しておりますので御活用いただければ幸いです。

  • 島根県CMS

    2002年に、ラジオフライでは音声合成を用いたインターネットラジオ番組「ラジオフライマガジン」の制作を行いました。ラジオフライのメーリングリストでのやりとりが、編集の達人・デーブ川崎氏によって、月刊ウェブマガジンとしてまず公開されました。それを私がHTMLから音声合成用のファイルに編集し直して、合成音声と効果音とテーマ音楽を使った、約1時間分のMP3コンテンツとして公開されました。この編集作業は数ヶ月続けて、技術実験としての目的を達成しつつ(メンバーの多忙もあって)終了しました。

    こんなことをやった背景は、それまでの数年の活動で得た「インターネットラジオ番組を誰でも配信できるようになったけど、コンテンツを定期的に作るのは大変である」という経験からの着想でした。

    そして、たまたま「こんなことやってるんですよ」と、ラジオフライマガジンを(当時発売されたばかりの)Apple iPod で聞かせた相手に「これはいいね」と言われ「ユビキタスラジオ」の開発が始まりました(と私は思っているのですが・・)。

    最近、ネットワーク応用通信研究所からソースが公開された「島根県CMS」が注目を集めています。

    しかし「ウェブサイトに読み上げ機能を持たせるのは、アクセシビリティのことを誤解した邪道なシステムだ」という意見も聞かれます。

    恥ずかしながら、私は最近まで、島根県のウェブサイトで音声合成システム GalateaTalk が使われているのは知っていましたが、どのように使われているのかちゃんと知りませんでした。そこで島根県のウェブサイトを見てみました。

    右上の「よみあげ」が index.m3u へのリンクになっています。立ち上げると開くのはデフォルトで関連づけられたメディアプレイヤーです。

    島根県CMSの機能は、よくある「ActiveXで音声合成機能をクライアントにインストールしてしまうシステム」ではありません。そんなことをしてしまうと、なんのために「ユニバーサルなメディアとしてのテキスト」を公開しているのか分からなくなってしまいます。島根県CMSの機能は「ウェブアクセシビリティ」と呼ぶべきではなく、もっと別のメディアだと考えた方がよいと思うのです。

    つまりこれは、HTMLというテキスト情報に「インターネットラジオ番組」という新しいメディアを付加し、両者を効率よく制作・配信するシステムなのだと思います。それはまさに、私が「ラジオフライマガジンをもっと効率よく制作したい」と思いながらほったらかしていた、私が欲しかった機能なのです。。

    そう思いながら、島根県ウェブサイトの読み上げを聞いていると、別の問題が明らかになりました。つまり GalateaTalk の基本性能としての「読み付与」や「音声の明瞭性」などがよくないのです。無償だからといって、これは GalateaTalk の評判を下げてしまっているのではないかと。。でも、郵便番号を日付のように読み付与してしまうのは、使い方を工夫すれば解決するのでは。。

    GalateaTalk は何度か商用化の打診があり、私もいろいろ頑張ったのですが、商用レベルの品質に持って行くには相当な努力が必要である、ということで断念した経緯があります。しかし、島根県CMSがGalateaTalkのキラーアプリの一つになれば、状況は変わるかも知れません。 島根県CMSの音声読み上げの改良にも取り組んでいかなくては、と思いを新たにした次第です。

  • Galatea Dialog Studio

    オープンソースのVoiceXMLインタプリタGalatea Dialog Studioの新しいバージョンをリリースしました。

    Galatea Toolkitは2000~2002年度に情報処理技術振興協会(IPA)の支援で開発が行われ、現在は音声対話技術コンソーシアム(ISTC)の元で開発が続けられています。

    2008年3月上旬に行われるISTC総会では会員向けに2007年度版ソフトウェアの配布と技術解説を行います。その準備作業としてこの数日、私が担当している対話処理系のアップデート作業を行いました。

    これまでISTCおよび情報処理学会の委員会でマルチモーダル対話記述ワーキンググループに参加し、マルチモーダル対話システムのアーキテクチャに関して議論が続けられました。その知見を踏まえてリファクタリングを重ねた結果「Linux用の Galatea Dialog Manager を Windows で動くようにする」という作業の目処が立ち、今回のリリースではその成果を盛り込むことにしました。豊橋技術科学大学のグループで開発されている Windows 版の対話マネージャと区別するために名称を Dialog Studio に変更しました。音声合成には GalateaTalk を、音声認識にはJuliusを使用しますが、いずれも SourceForge.jp でホストされているプロジェクトです。

    Galatea Dialog Studio は現在 Eclipse 3.3 上で開発を行っています。動作環境をJava 6に移行したことで簡単に Cookie に対応することができました。昨年中に行った HTTP の POST メソッドへの対応と合わせて、いろいろなウェブアプリケーションフレームワークとの相性がよくなりました。ドキュメントでは PHP との連携例を記載しましたが、個人的にはこれから Ruby on Rails で VoiceXML アプリケーションを開発するためのツールやライブラリの整備を進めていきたいと思っています。

    Studioと名乗っているのに編集機能がないなど、まだまだお粗末なシステムであることは事実です。やりたいこともたくさん残っています。きちんと情報を公開して、少しでも多くの方に関心を持っていただけるように努力したいと思います。

  • MagicPoint

    そして研究会2日目の金曜日。自分の研究会をセッション一つだけ抜けて、同じ島根大学の中で開催されていたまつもとゆきひろさんの学生向け講演会に顔を出してきました。

    終了後、どぎまぎしながら、名刺交換させていただきました。ThinkPad を閉じようとしているまつもと氏とこんな会話を。

    プレゼンテーションソフトは何を?

    MagicPointです。

    あー、ありましたね(なんて失礼な。。)

    じゃあLinuxなんですね。

    そうです。あー、失敗した(うまく shutdown しなかったらしい)

    お話お上手ですね(なんて失礼な。。)

    私はろくなこと言ってませんね。あちゃあ。

    後半の討論会は最初しか参加できませんでしたが「地域振興の切り札」に祭り上げられたまつもと氏を見ていると、もっとそっとしてあげたい気がしました。

    そんな話を島根大学の縄手先生にしたら「島根県のサイトの読み上げをGalateaTalkでやってたときに、半角仮名文字を読み上げないから文字コード変換をして…とか、まつもとさんが御自身でなさってたみたいですよ」とのこと。そんなNaClさんの足手まといになったGalateaTalkの関係者であることを私はあの場で名乗らなくてよかったのかも知れない。。と思いました。

    あれ以来、Ruby on Rails による VoiceXML アプリケーション開発についてつらつらと検討中です。

  • Rubyのチカラ

    夜中に松江のホテルの部屋で去年の人工知能学会全国大会の招待講演ビデオ配信「Rubyのチカラ」を見ました。

    NaClさんがどういうつもりでまつもと氏を雇っておられたか、という話をその日に伺ったので、「NaClさんの業務にどう役立つか」という観点はおそらくRubyの発展過程で強く意識されたであろう、と思いました。

    そして言語オタクのまつもと氏が人工知能の講演じゃないことを申し訳なさそうに語りはじめた、昨年6月の人工知能学会での講演。Rubyで導入された機能はすべて過去の言語の二番煎じだ、と謙遜しつつも、「単純さよりも自然さが重要」という言語設計のコンセプトがじっくり語られるのを聞いて、私にはある考えが浮かびました。

    プログラミング言語Rubyは、プログラマーに「自然なコーディング」を許容するために設計された「人工知能」なのだ、と。

    どこでどういう省略記法を許すか、という規則を実装したパーザーはルールベースで作り込まれているはずなので、言語を作っている側は人工知能だと思わないで作っているのでしょうが、実務の文脈でいかに自然な記述を許容するか、一つ一つ職人芸で仕様を選択した結果は、「高度な手作り人工知能」と言えるのかも。

    人工知能としての自然言語処理技術では「人間がやりとりする言語のコーパスを集めて、それをどう処理したらいいか検討する」ということが行われるわけですが、「プログラミング言語が使われるシステム開発の現場のコーパスを集めて、それを効率よく記述できるプログラミング言語を設計する」ということがもしきちんと行われたら、Ruby のような言語はもっと工学的に設計できるのかも知れません。そのときに重要なのは「集めるコーパスにリアリティがあること」ではないでしょうか。

    そんな視点を持ちつつ、私もすっかり固くなってしまった頭を柔らかくしながらプログラミングの勉強を続けたいと思ったのでした。

  • 続・松江の奇跡

    多忙な数週間をやっと乗り切って、日記を書けるようになりました。。

    前回の日記は、松江のホテルの部屋で夜中に眠れなくて書き殴って掲載しました。

    最近は「である体」でミクシィ日記にいったん掲載して、数日おいて「ですます体」に書き直してはてな日記に再掲載、というパターンが多かったのですが、なんだかあのときは「ラジオ深夜便」にやられてしまいました。。

    松江で開催した第40回福祉情報工学研究会は無事に終了。両日ともに60人を超える参加者に足を運んでいただきました。磁気ループをお使いになる方からのリクエストにも無事に対応できました。

    バリアフリー見学ツアーで伺ったお話を改めてまとめてみます:

    • ワコムアイティの今岡さん:15年前に地元にUターンして「くにびきネット」というパソコン通信で三輪さんと出会う。パソコンがバリアフリーの手段であることを強く認識。「プロジェクト23」という活動に参加。やがて著作権法の改正を見据えて「ピロートーク」の開発に着手。これは「音訳図書をネット配信する」ためのツールである。DAISYなど音訳図書の技術は普及しているが、「今日の新聞を聞きたい」というニーズを満たすサービスはまだない。現在は松江ライトハウスのサービスに合わせて開発され、週刊誌の読み上げなどで利用されている。ボイスレコーダーで簡単に聞くことができる。島根大学の縄手先生がツール開発に協力。読み手は「自分の得意なジャンル」を登録して参加できる。自宅で簡単に朗読を録音する、というカジュアルなボランティアのきっかけになれば。
    • 三輪さん:視覚障害者の立場からUD研究会として活動。松江市のバリアフリーマップはSPコードに対応し、点字ブロックなども調査されている。「てくてくラジオ」は自分がウィンドウショッピングをしたいというニーズから開発。
    • ハートフルウィングさん(映画の副音声専門の会社)の活動紹介(映像のみ)
    • ネットワーク応用通信研究所(NaCl)の井上社長:三輪さんのメーリングリスト仲間を中心に、linux.or.jp のサーバ管理会社として設立。MS-DOS環境と音声合成装置でパソコン通信をしていた視覚障害者がWindows普及で困難に直面していることを三輪さんから学び、Linux対応スクリーンリーダーを開発。その経験からクライアントソフトを必要としないウェブ音声化システムを提案し、オープンソース技術(Ruby + GalateaTalk)の島根県ウェブサイトCMSにつながった。
    • 一文字家の景山さん:旅館から仕出し弁当屋として発展。「社会を明るくする運動」と弁当箱に書くだけでなく何か実践をしたいと思っていたところに三輪さんと出会い、弁当箱をユニバーサルデザインにすることに取り組む。片手で開くことができる、点字の説明がついている、箸袋を探しやすく取り出しやすい、など。現場で組み立ての手間が増えるが「この仕事は質の高い仕事だから誇りを持って欲しい」と説得。コストは上がったが弁当の売り上げはアップしている。
  • 松江の奇跡

    夕方、一文字屋さんの「ユニバーサルデザイン弁当」をいただいたのだが、これで終わりにするわけにも行かず、外出。

    松江駅前の居酒屋に一人でふらりと入り、カウンター越しに御主人の話を伺いながら、地酒と魚料理をいただいた。

    甘エビ、白魚、しじみ汁。

    どの酒もここからすぐの場所で作っているんですよ、とおかみさんが教えてくれた。

    久しぶりにラジオをつけっぱなしで寝てしまったら、深夜便の「荒木とよひさ特集」で目が覚めてしまった。

    「悲しみ本線日本海」「もしも明日が」「四季の歌」。。。

    同じ中国地方で70年代と80年代を過ごした自分に、昭和の記憶と、平成の時代の移り変わりを、一度に思い起こさせる、そんな出張になってしまった。

    WIT研究会で実施したバリアフリー見学ツアー

    ずいぶんたくさんの方にお会いできて、たくさんのお話を伺えるんだなあと、楽しみにやってきたのだが、実はすべてが「たった一人の視覚障害者の情熱」に感化されて始まった事件だったのだ。

    NPO法人「プロジェクトゆうあい」の理事長、三輪利春さん。

    全盲の視覚障害者である三輪さんと、パソコン通信の地域コミュニティを通じて、視覚障害者であると知らずに出会った人たちが、ネットを通じてアイディアをふくらませて、そして「三輪さんのために何かを作りたい」という気持ちで、いくつものベンチャー企業が生まれ、老舗の企業に新しいチャレンジをさせた。

    この動きがなかったら、「日本 Linux 協会」も「プログラミング言語Ruby」も世の中に存在しなかったのだから。。

    むかし私は恥ずかしながら「オープンソースとアクセシビリティ」というテーマで人前で講演をしたことがあるのだが、実はそれを実践しておられたのが「ネットワーク応用通信技術研究所」だったなんて。

    バリアフリー見学ツアーは参加者10名程度と少人数だったが、単なる見学会にとどまらず、開発のねらいや背景も詳しく伺うことができた。「もっとこうしたらよくなるのではないか」などディスカッションがふくらむと同時に、「私たちも使ってみたい」といった展開につながりそうな会話で盛り上がった。

    AMラジオを使った音声情報サービス「てくてくラジオ」は、会場の目の前のバス乗り場で体験させていただいた。その場にたまたま白杖をお持ちの方がいらっしゃって、その方はどうやらこのサービスを御存知ないようだったが。。

    京都にいたころに視覚障害者用のタイピング練習ソフトを開発し、それがこの分野に関わるきっかけだったが、そのときにも「一人の視覚障害者」がすべての原動力だった。東京に来てからも似たようなことを経験した。あれは普遍的な構図なんだなあ、と改めて思う。

    地域と人の出会いから、地域が変わり、世界を変えていく。

    一人の人間の可能性でさえこんなに無限大なのに。

    自分の努力の至らなさを恥ずかしく思うが、そういうことに気づいただけでも、松江に来てよかった。

    ■追記(2008-06-02) 写真を追加しました http://f.hatena.ne.jp/nishimotz/2008-01-matsue/