投稿者: nishimotz

  • 第61回音音研 6月18日

    下記のとおり開催します。直前のお知らせで恐縮ですが、ご興味のある方はお気軽にご参加ください。

    • 第61回 2009年6月18日(木) 18:30-
    • 話題提供1:東京女子大学 松村瞳さん+東京大学 西本
      • テーマ:音声CAPTCHAの検討
      • 要旨:昨年度から東京女子大学と東京大学の共同で行っている「人間が聞き取ることができ、機械に認識されにくい音声」の研究について、昨年度の成果の報告を行い、今年度の研究計画についてご助言をいただきたいと思います。
    • 話題提供2:帝京平成大学・川島先生
      • テーマ:音源分離知覚について
      • 要旨:日常的な場面では人間は重畳信号から個々の音源について知覚する。その理解は例えば何を分離知覚しているのか,あるいはその知覚に関わる要因とメカニズムはどのようなものかという点について行われてきた。今回は音源分離知覚に関するこうした問いについて文献調査と発表者の研究の結果などから得られる回答を整理する。
  • Rails controllerの複数形と単数形

    Ruby on Rails の勉強を始めたころ、なぜここは単数形で名前をつけるのか、なぜここは複数形にするのか、といったことでいちいち悩みました。最近、RESTful routing の勉強をしていて、controller の名前を単数にしてしまった場合の例が見つからず、「名前つけ直そうか」と焦ったのですが。。

    以下、Rails 2.2.2 で確認しました。

    config/routes.rb で

    map.resources :channels
    

    と書くと

    $ rake routes
    channels GET    /channels                        {:controller=>"channels", :action=>"index"}
    formatted_channels GET    /channels.:format                {:controller=>"channels", :action=>"index"}
    POST   /channels                        {:controller=>"channels", :action=>"create"}
    POST   /channels.:format                {:controller=>"channels", :action=>"create"}
    new_channel GET    /channels/new                    {:controller=>"channels", :action=>"new"}
    formatted_new_channel GET    /channels/new.:format            {:controller=>"channels", :action=>"new"}
    edit_channel GET    /channels/:id/edit               {:controller=>"channels", :action=>"edit"}
    formatted_edit_channel GET    /channels/:id/edit.:format       {:controller=>"channels", :action=>"edit"}
    channel GET    /channels/:id                    {:controller=>"channels", :action=>"show"}
    formatted_channel GET    /channels/:id.:format            {:controller=>"channels", :action=>"show"}
    PUT    /channels/:id                    {:controller=>"channels", :action=>"update"}
    PUT    /channels/:id.:format            {:controller=>"channels", :action=>"update"}
    DELETE /channels/:id                    {:controller=>"channels", :action=>"destroy"}
    DELETE /channels/:id.:format            {:controller=>"channels", :action=>"destroy"}
    

    となり、view で <%= link_to “index”, channels_path %> などと書けます。

    たまたま controller を channel のように単数形にしてしまうとどうなるのか、試してみました。

    map.resources :channel
    
    $ rake routes
    channel_index GET    /channel                         {:controller=>"channel", :action=>"index"}
    formatted_channel_index GET    /channel.:format                 {:controller=>"channel", :action=>"index"}
    POST   /channel                         {:controller=>"channel", :action=>"create"}
    POST   /channel.:format                 {:controller=>"channel", :action=>"create"}
    new_channel GET    /channel/new                     {:controller=>"channel", :action=>"new"}
    formatted_new_channel GET    /channel/new.:format             {:controller=>"channel", :action=>"new"}
    edit_channel GET    /channel/:id/edit                {:controller=>"channel", :action=>"edit"}
    formatted_edit_channel GET    /channel/:id/edit.:format        {:controller=>"channel", :action=>"edit"}
    channel GET    /channel/:id                     {:controller=>"channel", :action=>"show"}
    formatted_channel GET    /channel/:id.:format             {:controller=>"channel", :action=>"show"}
    PUT    /channel/:id                     {:controller=>"channel", :action=>"update"}
    PUT    /channel/:id.:format             {:controller=>"channel", :action=>"update"}
    DELETE /channel/:id                     {:controller=>"channel", :action=>"destroy"}
    DELETE /channel/:id.:format             {:controller=>"channel", :action=>"destroy"}
    

    のようになりました。

    link_to ‘xxx’, channels_path が channel_index_path のようになり、多少名前が冗長にはなりますが、無事に RESTful routing に移行できそうです。

    • 2009-07-22 追記:rails 2.x の scaffold が生成するのは「複数形の名前が付けられたコントローラ」なので、scaffold 流に揃えたほうがよさそうですね。
  • IPAX終了

    なんとか2日間の展示を終了できました。オラビーのブースを訪れてくださった方々に感謝します。

    1日目の説明を終えて、どうすればもっと上手に伝わるだろう、と考えたあげく、

    • 放送用のボイスメールシステムです

    ということにしました。昨日よりもうまくご説明できたように思います。

    何人かの方に久しぶりにお会いできて、また「実は個人的にラジオに興味があって」という方がたくさんいらっしゃって、充実した2日間でした。

    誰からもNHK連続ドラマ「つばさ」の話題が出ないなあ、と思っていたのですが、最後の懇親会の場で、IPAの西垣理事長と「つばさ」の話題で盛り上がることができました(笑)

    試してみたいという方がたくさんいらっしゃったので、早くデモサーバを公開できるように努力したいと思います。

    f:id:nishimotz:20090527141951j:image

    手書きの説明を追加しているときに「未踏」を「末路」と書き間違えたのは。。。

  • オラビーを使った放送

    オラビーを使って一人で生放送のラジオ放送を行うためのシステムの一例をお見せします。

    f:id:nishimotz:20090523215102j:image

    写真左側のPCには VMware がインストールされており、ゲストOS(Ubuntu Linux)ではオラビーのサーバ(castserve)が動いています。後日、インターネット上で公開サーバの運用を始めたいと考えています。

    ホストOS である Windows XP では castserve をWebブラウザで操作する画面があります。そのブラウザからワンクリックで caststudio が起動します。

    将来のオラビーでは、投稿音声を扱うだけでなく、音楽を流したりマイクとのミキシングをしたりする機能を実装したいと考えています。しかし、現時点では、これらの目的のためにオーディオミキサーともう一台のPCを使用しています。

    写真右側のPCでは RAZ Studio というフリーウェアが動いています。残念ながら 2005年に公開された 0.55b というバージョンを最後に、メンテナンスがなされていないようですが、私は非常に重宝しています。このソフトひとつで、PC に保存されている MP3 素材を順番に再生しながら、マウスクリックで「音楽のレベルを下げて、PC のマイク入力のレベルを上げる」といった操作ができます。

    音楽とパーソナリティの音声の切り替えは右側のPCで完結します。左側のPCでは投稿音声の再生のみが行われます。これらは中央のオーディオミキサーを経て、FMトランスミッターに送られます。

    すでにラジオ放送に必要な設備が整っているコミュニティ放送局などでは、左側PCだけを追加すればよいことになります。FM Chappy さんではこのように利用していただきました。

    リスナーはFMラジオで番組を聴き、手元の携帯電話から(メールではなく)電話をかけて音声で投稿を行うことができます。ユーザはコンピュータやインターネットの存在を意識することなく、ラジオ番組を通じてパーソナリティやリスナー同士の「ソーシャルネットワーク」に参加することができます。

    なお、今回 IPAX 2009 での展示のために投稿システムを運用します。以下をご了解いただければ、ご自由にお試しいただけます。

    • 電話番号:(2009-05-27 公開を終了しました)
      • 音声投稿専用の電話番号です。
      • 録音された音声は公開を前提として保存され、開発・評価・宣伝のために利用させていただくことがあります。
      • 大阪までの通話料金が必要です。
      • 電話回線とインターネットの接続には(株)ボイスバンクさんの御厚意で Plum Voice Portal(VoiceXML 技術)を使用しています。
      • プッシュ信号を出すことができない、いわゆる「黒電話」でも利用可能です。
      • システムの運用に関する責任は開発者(西本)にあります。公開によって支障が生じると判断した場合は、予告なしに運用を中止します。

    FMトランスミッターの代わりに、ストリーミング放送をエンコーディングするためのPCにつなげば、インターネットラジオの生放送が可能になります。私も過去に「ねとらじ」を使って実験をしました。

    音声投稿には電話が必須というわけではなく、もちろんPCからアップロードしていただくことが可能です。番組制作者がボイスレコーダーで取材をしておき、録音されたMP3素材をアップロードして、電話投稿とあわせて利用する、といった使い方も想定しています。

    今回ご紹介するシステムは放送局としては完結していない不完全なものです。しかし、放送局で必要な機能を1台のPCで完結させるようなシステムは将来実現できるでしょう。

    またリスナー側の機能も、インターネット放送を聞いて音声で投稿するという全ての機能を、スマートフォンのような形で統合できるでしょう。

    にも関わらず、私は今回「リスナーにコンピュータの存在を見せず、既存のメディア環境のなかで、新しいラジオ番組の作り方を提案する」予定です。

    ラジオに興味をお持ちの方であれば、ラジオの歴史が「リスナーの参加方法」の歴史であることがおわかりだと思います。ハガキ、ファックス、電子メール、しかし、いまだに「音声投稿」がラジオ(特に生番組)で一般化していないことは、リスナーの都合ではなく、番組制作の現場に適切なツールが存在しなかったから、だと私は考えています。

    今回、オラビーの存在意義を、展示を見に来られる方々と一緒に考えていきたいと思っています。

  • オラビーの技術情報

    オープンソース版オラビーを開発する場として github を使うことにしました。

    にて caststudio, castserve の2つのプロジェクトを登録しました。現時点では開発と技術評価を目的としており、正式なリリースではありません。

    caststudio は

    にて紹介された機能から大きな変更はありませんが、Java Media Framework への依存部分を削除し、現在は JavaSound で音声を再生する実装になっています。Windows版の Java 6 で動作を確認しています。

    castserve はファイルを整理して放送の準備を行う Web アプリケーションです。前述の発表では HoldStation となっていました。PHPによる実装を捨てて Ruby でゼロから書き直しました。仕様は大幅に変更され、画面構成も整理されつつあります。さらに castserve から JNLP (Java Web Start) 経由で CastStudio を起動できます。これらはすべて Ruby on Rails が提供する Model-Controller-View のフレームワークを生かして実装されています。

    オラビーは生放送に必要な機能に特化していますが、私がラジオの生放送の現場に実際に関わった経験から「事前の作り込みがしっかりできてこそ、生放送でのアドリブに対応する余裕が生まれる」という立場に立っています。例えば、前日の夜にディレクターが自宅から castserve にアクセスして投稿素材をチェックしておき、当日は事前に準備された素材をベースに、放送中に投稿された新たな音声を組み合わせる、という使い方ができます。

    音声の投稿機能(アップローダ)は castserve の一部として公開する予定ですが、全く独立の CGI プログラムとして動作します(Ruby on Rails 環境は不要です)。

    この CGI プログラムは HTML と VXML と RSS の3つのモードで動作します。

    VXML モードでは VoiceXML サーバ(http://www.plumvoiceportals.jp/)と連携して、電話からの音声投稿の機能を提供します。これまでの実証実験をふまえて、数字ボタンをまったく押す必要がないように仕様を変更しました。HTML モードでは音声ファイルをアップロードすることができます。RSS モードは、castserve と通信をするための機能です。

    アップローダ、castserve、caststudio は RSS を共通フォーマットとして相互に通信します。特にアップローダとcastserveの間のAPIを明確に定義することで、さまざまな「音声投稿サイト」「音声共有サービス」と連携したいと思います。欲しい情報を自由にフォローして番組を組み立てることができると考えています。

    今回のリリースではユーザインタフェースに日本語を使っていません。IPAX2009 終了後に Rails のバージョンを現在の 2.0.2 から最新版に更新し、Rails の I18N 機能を用いて多言語化する予定です。ソースコードはすでに UTF-8 で統一しており、段階的にコメントを英語化する予定です。開発に関するコミュニケーションは github を拠点にしたいと考えています。

  • 第60回音音研 5月7日

    下記のとおり開催します。ご興味のある方はお気軽にご参加ください。

    • 2009年5月7日(木) 18:30-
      • 場所:東大本郷 工学部6号館
      • 講演者:榊原 彩子さん(一音会 音楽スクール)
      • タイトル「絶対音感習得過程の縦断的研究」
      • 絶対音感は、保有者が0.2~0.5%という稀な能力でありながら、その臨界期(2~6歳)内に訓練をおこなうことで、ほぼ100%、習得が可能な能力です。本研究は、絶対音感を持たない幼児に、和音判別訓練法による習得訓練を実践し、習得にいたる過程がどのような変化を含むものか、縦断的に明らかにするものです。和音判別訓練法は、毎日実施する和音判別課題から主に構成され、絶対音感習得までに平均約4年の訓練期間を要します。今回は、特に22事例の訓練結果を報告することで、訓練法および習得過程について発表させていただきます。また、訓練データの集約の仕方や今後の方向性について、ぜひ皆様のご意見をうかがいたいと強く願っております。
  • IPAX2009でオラビーを展示(5/26-27)

    ラジオ番組制作システムのイベントについてお知らせします。

    2005年度に経済産業省の外郭団体(IPA)の支援で西本が開発した「オラビー」というシステムについて、http://ora-be.nishimotz.com/ の開発計画の見直しを進めています。今回、これまでの実験の経緯や現状をお見せして、今後の計画をお伝えしたいと思います。

    展示会名称: IPAX 2009

    開催日時: 2009年5月26日(火)~ 27日(水)(2日間)

    10:00~17:00(26日は17:30まで)

    会場: 東京ドームシティ プリズムホール・東京ドームホテル シンシア

    ※未踏コーナー(50小間予定)の1小間として出展(展示のみ)。

    展示会場はプリズムホール(天空A)小間番号 e-16です。

    アクセス:JR中央線・総武線 《水道橋駅》 丸ノ内線《後楽園駅》

    三田線 《水道橋駅》 大江戸線《春日駅》 南北線 《後楽園駅》

    主催: IPA(独立行政法人 情報処理推進機構)

    後援: 経済産業省、特定非営利活動法人ITコーディネータ協会

    来場者数: 4,000名

    入場料: 無料

    展示は事前申込不要。講演等への参加には事前登録が必要。

    事前登録のお申し込み:http://www.ipa.go.jp/event/ipax2009/index.html

    タイトル:ラジオ放送支援システム「オラビー」の開発

    展示概要:

    我々は小規模な放送局が音声投稿番組を効率的に制作できるラジオ放送支援システム「オラビー」を開発してきた.

    地域に密着したコミュニティ放送局や個人によるインターネットラジオの生放送における利用が期待される.

    今回は、リスナーが携帯電話から音声メッセージを投稿でき、

    FMラジオで受信する、という実演を行う予定です。

    このシステムについては、2005年度にIPA未踏ソフトウェア事業として採択された際に、私が住んでいた東京都台東区の谷中で何度も開発打ち合わせしながら、多くの方の御協力を得て開発をすすめました。当初から(株)ボイスバンクさんの協力を得て、電話回線からの手軽な音声投稿を実現してきました。さらに、2005年度から2008年度まで埼玉県入間市のFMチャッピーさんの番組でお使いいただきました。特に2006年2月には「なべやかんの居留守放送局」として、未踏プロジェクトの実証実験の一環として音声投稿による特別番組を放送できました。西本個人としては、2006年度に東京女子大学での非常勤講義の中で音声投稿の実験をさせていただき、また谷中芸工展の期間中にストリーミング放送の実験を行いました。

    IPA事業として助成を受けた成果は以下で発表を行いました。

    • 西本 卓也,川崎 隆章: “ラジオ放送支援システム「オラビー」の開発,” 電子情報通信学会技術報告, WIT2006-25, pp.49-54, Jul 2006. PDF

    2007年3月にはこの活動を踏まえて電子情報通信学会総合大会イベント企画を実施しました。

    私自身も2007年2月に瀬戸のコミュニティFMにて自分の活動をお話しする機会を得ました。

    今回、共同開発者の川崎隆章氏が所属する(株)NASAさんとの話し合いの結果、出願済の特許

    • 特願2006-075487(名称:放送番組編集装置、放送番組編集用プログラム及び放送番組編集用可搬式コンピュータ)

    の審査請求を行わず、権利を放棄し、今後は、どなたにでもオープンに利用していただけるようにソースコードや運用環境の整備を目指すことにしました。これまで西本個人で細々と続けてきたシステム開発は、データベースやWebアプリケーションの実装部分にRuby on Rails を導入する作業を進めており、今後は開発の加速が見込まれます。また、ボトルネックだった Java Media Framework への依存性は、新しいリッチクライアント技術 JavaFX への移行により解決する予定です。さらに、オープンソースプロジェクトに移行することで、多くの方に開発への参加を呼びかけたいと考えています。

    昨今の経済状況を契機に、個人や小規模の放送局だけでなく、あらゆる場面で放送の「ダウンサイジング」が進むことが予想されます。パーソナルコンピュータ・インターネット・さまざまな無償ソフトウェアが、誰でも低コストで高品質のコンピュータ環境を享受できる時代を実現したように、今後、無償で利用できる放送支援システムは、重要な社会・生活のインフラに発展していくと考えています。

    生放送における投稿ファイル編集のためのユーザインタフェースに特化して開発されたオラビーは、動画も扱えるように拡張可能です。昨今のポッドキャストや動画共有サイトなどの流行を踏まえて、既存のサービスとオラビーの連携も視野に入れていきます。

    技術や出展の詳細については、この「はてなダイアリー」で今後もお知らせしていく予定です。

    • 5月6日:小間番号と事前登録サイトのURLを追加しました。
    • 5月12日:展示会場、参加方法、展示内容などを補足しました。
  • ヒューマンインタフェース学会研究会賞

    2009年3月付けでヒューマンインタフェース学会研究会賞を受賞しました。受賞した発表は2008年12月 HI学会研究会(電子情報通信学会WIT研究会と共催)「音韻修復効果を用いた音声CAPTCHAの検討」です。

    この発表は、さまざまな分野の知見・アプローチをいかに統合していくか、という目標の最初の一歩に過ぎないと思っていたので、こうした評価を受けて大変励まされました。これからも頑張りたいと思います。

  • 松山・松江・つぶやき

    2009年3月後半、電子情報通信学会の総合大会のために松山に行き、HCGシンポジウムのために島根に行きました。

    福祉情報工学研究会の企画幹事としての最後の研究会・専門委員会となりました。

    ヒューマンコミュニケーショングループという組織の経緯、現状、可能性について考えることができました。

    いくつか特別企画や全体イベントの間に、bモバイル3G でネット接続して、Twitter で講演メモをつぶやいてみましたが、どうなんでしょうか、こういう使い方は。。

  • Ubuntu 8.04 (vmware) + rails 2.3.2

    Ruby on Rails 2.3.2 を使える環境を作る手順。何度も同じ失敗をしたので、備忘録として書きます。

    使用したのは Ubuntu 8.04 日本語リミックスの VMware 仮想マシン(VMware Player 2.5.1 on Windows XP)。

    安易に 8.10 にアップグレードしたら open-vm-tools がおかしくなり、eth0 を認識しなくなったので、8.04 のまま使うことにしました。HGFS は使えないのですが、ホストOS(Windows XP)とのあいだでコピー&ペーストができるので便利です。

    apt-get でインストールされる gem はバージョンが古いので、このままでは後の作業がうまく行きません。

    /var/lib/gems/1.8/ にインストールされるのは古い gem の挙動、/usr/lib/ruby/gems/1.8/ にインストールされるのが新しい(望ましい?)gem の挙動のようです。

    • 2009-08-12 追記:Debian パッケージの gem をそのまま使うと /var/lib/gems 以下にインストールされる、ということらしいです。Ubuntu 9.04 の /usr/bin/gem1.8 (gem 1.3.1) においても /var/lib/gems に実行ファイルが生成されることを確認しました。
    $ sudo apt-get install ruby rubygems
    $ gem -v
    0.9.4
    $ which gem
    /usr/bin/gem
    
    • 追記 (2009-05-20) Ubuntu 9.04 の rubygems1.8 はバージョン 1.3.1 でした。

    手作業で gem 1.3.1 を入れる。

    $ sudo gem install rubygems-update-1.3.1.gem
    $ sudo /var/lib/gems/1.8/bin/update_rubygems
    ...
    RubyGems installed the following executables:
    /usr/bin/gem1.8
    If `gem` was installed by a previous RubyGems installation, you may need
    to remove it by hand.
    

    古い /usr/bin/gem と新しい /usr/bin/gem1.8 が共存しているので、手作業で対応。

    $ gem -v
    /usr/bin/gem:10:Warning: Gem::manage_gems is deprecated and will be removed
    on or after March 2009.
    /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)
    $ gem1.8 -v
    1.3.1
    $ pushd /usr/bin; sudo mv gem gem.org ; sudo ln -s gem1.8 gem; popd
    $ gem -v
    1.3.1
    

    gem 1.3.1 を使って rails を入れる。

    $ sudo gem install rails
    Successfully installed rake-0.8.4
    Successfully installed activesupport-2.3.2
    Successfully installed activerecord-2.3.2
    Successfully installed actionpack-2.3.2
    Successfully installed actionmailer-2.3.2
    Successfully installed activeresource-2.3.2
    Successfully installed rails-2.3.2
    7 gems installed
    ...
    $ rails -v
    Rails 2.3.2
    

    アプリケーション hoge を作って、sqlite3 で rake test を通す。

    $ rails hoge
    $ cd hoge
    $ rake test
    rake aborted!
    no such file to load -- sqlite3
    

    sqlite3 環境が足りないから rake test が通らない。下記サイトを参考に対処。

    $ sudo apt-get install ruby1.8-dev swig libsqlite3-dev
    $ sudo gem install sqlite3-ruby
    

    migrate して test する。

    $ rake db:migrate
    (in /home/nishi/hoge)
    $ rake test
    (in /home/nishi/hoge)
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    /usr/bin/ruby1.8 -I"/home/nishi/hoge/lib" -I"/home/nishi/hoge/test"
    "/usr/lib/ruby/gems/1.8/gems/rake-0.8.4/lib/rake/rake_test_loader.rb"
    

    test が通ったので、server を動かしてブラウザから確認する。

    $ script/server
    
    Welcome aboard
    You're riding Ruby on Rails!
    About your application's environment
    Ruby version	        1.8.6 (i486-linux)
    RubyGems version	1.3.1
    Rack version	        1.0 bundled
    Rails version	        2.3.2
    Active Record version	2.3.2
    Action Pack version	2.3.2
    Active Resource version	2.3.2
    Action Mailer version	2.3.2
    Active Support version  2.3.2
    Application root	/home/nishi/hoge
    Environment	        development
    Database adapter	sqlite3
    Database schema version	0