大学発OSSプロジェクトの難しさとは? 開発者に聞く:音声認識ツールキット「CMU Sphinx」
SourceForge.netで公開されているPodcast「The Anvil Podcast」では、さまざまなオープンソースプロジェクトの開発者にインタビューを行い、ソフトウェアの紹介やプロジェクトがどのように運営されているのか、そのほかさまざまな内容について話を聞いている。今回はオープンソースの音声認識ツールキット「CMU Sphinx」の開発者らへのインタビューをお送りする。
何日か前に、CMU Sphinxプロジェクトに携わるAlex Rudnicky氏、Evandro Gouvea氏、Bhiksha Raj氏、Rita Singh氏に話を聞くきくことができた。Evandro氏を除く3人は現在カーネギーメロー大学コンピュータサイエンス学科言語技術研究所に在籍している。Evandro氏もかつては同研究所に在籍していたが、現在はドイツにあるスピーチコンサルタント会社に勤務しており、今はブラジル企業Vocalizeの事業に関わっているという。この4人に、CMU Sphinxプロジェクトの歴史、そして同プロジェクトが何を目指しているのかについて話してもらった。インタビューの内容は以下のとおりである。
Alex:簡単に概要を話すよ。Sphinxはもともと、ここのコンピュータサイエンス学科にいたKai-Fu Lee氏の論文の一環として開発されたプロジェクトなんだ。その後Kai-Fuはもっと大きなプロジェクトに移ってしまったんだが、彼の名前をきいたことがある人はいるかもしれない。このオリジナルプロジェクトは、それまで実現不可能と考えられていた、「連続した不特定話者の音声を同時に認識する」ということをやってのけたんだ。今では当たり前となってしまったが、当時は何とも悩ましい難題だったんだ。それがSphinx 1。
そして次に開発されたのが、当時ここの大学院生だったXuadong Huangを中心とするチームによって開発されたsphinx 2。彼は卒業後にMicrosoftに就職したから、その後は我々でSphinx 3を開発することになったんだよ。
Rita:その開発にはMosur Ravishankar氏も関わっていた。
Alex:そして連続分布型HMM(隠れマルコフモデル)が用いられていた。
Bhiksha: Eric Thayer氏も関わっていたね。
Alex:活動はすべてコンピュータサイエンス学科Raj Reddy教授の監督のもとに行われた。ある時、確かKevinがまだいたころだと思うが、Raj教授がこれからはSphinxをオープンソース化することにしようと言ったんだ。思い出して欲しいのだが、この頃はまだソフトウェアを開発者がそれぞれで管理していた時代で、一般的にオープンソースは懐疑的な目で見られていたんだ。
Rita:Sphinxには、門外不出だった時期があったんだ。
Alex:そうそう、だからゴチャゴチャしていたんだ。それが突然、オープンソース化することになった。一体どうなるのかなんて誰も先が読めなかったけど、その後は比較的上手く事が進んだ。コードはきちんと管理されるようになったしね。さらにもう一つ、Sphinx 4というバージョンがあるんだが、BhikshaとRitaのほうが私よりうまく説明できるだろう。
Bhiksha:それまでカーネギーメロー大学(CMU)の完全な内部プロジェクトであったSphinxがオープンソース化されることになったという点で、Sphinx 4プロジェクトはそれまでのバージョンとは多少異なるところがある。まず、実際のところSphinx 4は複数の研究所による共同開発プロジェクトだったんだ。Sun Microsystemsや三菱電機研究所のエンジニア、そして当然ながらCMUからも大勢が参加した。Sunが参加していたこともあって、Javaベースとなったのも異なる点だ。だから、Javaを実際に使えるようにアーキテクチャを作成し、Javaの利点を活かせるようにした。Sphinx 4については、こんな感じだ。
Alex:特に注目してもらいたい点は、このソフトウェアコレクションが幾つかの要素から成り立っていることである。時々、こうした区別がつかない人もいる。現在公開しているデコーダは3つ。それから、これらのシステムを起動する統計的モデルを作成するトレーニング用ソフトウェアスイートがある。現在公開中のPocketsphinxだが、これはフットプリントが小さくて処理速度の速いデコーダなんだ。例えば私の場合、対話型システムに使っている。解析システムのSphinx 3だが、通常はリアルタイムで表示されることはないものの、様々な機能を持っている。そして最後にShinx4について言えば、現在のところ非常に人気があり、様々な用途に使われている。
Rita:これは極めてモジュール的で、コアテクノロジー内のミックスアンドマッチによる多くの組み合わせを可能とする。何種類もの解析や言語モデル等々。
Bhiksha:Sphinx4の最大の魅力は、実は、今流行の言語とされるJavaで書かれていることだ思うんだ。
Alex:Cに慣れている人はJava仕様に多少手こずることもあるが、どうしようもないだろ?
Evandro:Sphinx 4に関する興味深い点として、先ほどBhikshaも触れていたが、複数の研究所によって共同開発されたことが挙げられる。それぞれの研究所はSphinx 4に対してそれぞれ違った目標を設定していた。その中でSun Microsystemsが目標の1つとして掲げていたのは、「Java言語でツールを作ってJavaを流行らせる」というものだった。当時(2001~2002年ごろ)、Javaはまだプログラミング言語として始まったばかりだった。興味深いことに、Javaは今非常に流行っており、Sphinx 4の人気が上がったのも、部分的にはJavaのおかげといえる。
――さて、このソフトウェアは基本的にはライブラリ集ではあるのだが、たとえばAndroidスマートフォンなどにダウンロードして利用できるアプリケーションなどもあるのだろうか?
Alex:実際にレポジトリから見つけられるのだが、すでにAndroid版がある。それと確か、LinuxおよびWindowsのデスクトップ向けに、コンパイルして実行できる基本的なアプリケーションもいくつかあるはずだ。
Bhiksha:そしてMac向けのもね。
Alex:そうそうMacも。いずれにしてもSphinxと組み合わせられるものはほかにもある。実際、多すぎて全部説明しきれないくらいだ。だがもちろん、ここにあるいくつかについては説明するよ。まずこれはOlympus/RavenClawという、会話システムを構築することのできるダイアログマネージャーだ。Sphinxは音声認識の部分に用いられている。これも、完全なオープンソースのシステムだ。
Bhiksha:Sphinxがライブラリなのか、それともアプリケーションなのか、という点についてだが、ライブラリの基本セットがあると同時に、こうしたライブラリに付帯するさまざまなデモアプリもある。これらをダウンロードして、さまざまなプラットフォームで実行して出力を得ることができる。ただ、これだけでは必ずしも望んでいた機能を得られるとは限らない。つまり、本当に必要な機能を得るためには、ライブラリ周辺をカスタマイズしてビルドする必要があるんだ。
Rita:Sphinx 4には3つか4つのデモが含まれる。
Alex:どのSphinxデモアプリケーションも、必要最小限のコマンドラインアプリケーションを使用している。
――Festival/Festvox(同じくCMU発のオープンソース音声合成システム)との関連はある?
Alex:まあ、どちらも音声系ソフトだよね。会話音声処理の部分などにはFestivalやその派生物の要素を取り入れているよ。オープンソースであるってことが役に立っていて、我々の目的にあわせて弄ることができるんだ。たとえばこれはAlan Blackが構築した仕組みなんだが、いったん音声処理が始まると、あらゆるエリアを巻き込みつつ、おおよそ各エリア内でそれぞれに処理されるというものがある。たとえていうなら、顔見知りの人達同士がお互いのエリアで仕事することがあったとしても、実は独立した活動だった、みたいな感じでの音声認識や統合がこれに当てはまる。
Bhiksha:あと、FestivalはSphinx 4との関連性は少し強いね。Sphinx 4が作られたとき、Evandroが先ほど説明したとおり、Sunのエンジニア達はJavaの可能性を試そうとしていたんだが、彼らは最初、Festivalの音声合成ツールキットをJavaに移植して試したんだ。そしてFestvoxで慣れたところで音声認識に切り替え、Sphinx 4で我々と共同開発することになったんだ。
――最近はどんなことをやっているの?
Alex:人間-ロボット間の言語コニュケーションの開発を行っていることについて触れておくべきだろう。腕を振りながら話したりすることができるように 、ジェスチャーも組み入れようとしているんだ。
Rita:そうなの。私達は遠隔音声認識や注意制御などについてもやろうとしているの。
Alex:あと、私たちが興味を持っているほかのこととして、単なる会話からボキャブラリを抽出する、という試みがある。これは見た事も聞いた事もなく、当然話すことのできない言語を扱うときに、役に立つことになると思う。
Rich:もう少し詳しく聞かせてほしい。それはまるで、その言語環境に囲まれているだけで言語を習得できてしまうというようなものなのかい?
Alex:いや、どちらかというと、「人は言葉を繰り返す」という仮定の下、サンプルとなるたくさんの会話の中から、繰り返し使われる特定のパターンや特徴となるものを見つけていくもの、と言った方がいいかもしれない。
Rita:それから、極めて騒音の多い環境や自動車環境、屋外環境といった状況の音声認識といった、これまでやってきたことも継続しているの。あらゆる距離や屋外空間、装置を動かすなどして設定した様々な状況から、マルチセンサーを通じて集積された音声も認識できるよう取り組んでいるのよ。
Bhiksha:そしてもちろん、現在持っている大量のデータをどうするのかという避けて通れない問題もあり、保有するデータをうまく活用する方法についても取り組んでいる。現在のところ、データのほとんどは書き出されていないので、話し手が何を話していたのか明確には分かっていない。我々のモデルを改良し、さまざまな言語に対応できるより優れた音声認識機能を開発するため、データを最大限活用する方法を見つけなくてはならない。
――現時点でこのソフトウェアが認識できる言語は?
Bhiksha:その数はWebサイトに掲載されているんだけど、このプロジェクトは現時点で厳格なまでにオープンソースであり、そのため世界中からの貢献が得られている。たとえばリストにも名前がのっているNickolay Shmyrevなんかは、ソースコードの無償提供を多くおこなっている。フランス語やスペン語など、いろんな言語でモデルをアップロードしてくれている人達もいるんだ。
Rita:結論的には、トレーニングデータさえあれば、どんな言語のモデルも作成できて、どんな言語でも音声認識が可能だわ。だから世界中の人たちがSphinxを活用しているの。なかには自身の「商品」や「派生商品」としてWebサイトで公開している人もいる。全部が全部、オープンソースのソフトウェアバンドルになるってわけじゃないけど。実際のところは、現在のところ英語やスペイン語、そして確かフランス語といったいくつかの主要な言語の認識ができる。
Alex:北京語も。
Rita:そう、北京語も。
Alex:韓国語をやってたこともある。
Bhiksha:ただ、繰り返しになるけど、Sphinxは限られたいくつかの言語を認識できるというブラックボックスではなく、音声認識機構を構築できるツールキットとして捉えるべきなんだ。
Rita:どんな言語にも対応できるものね。
Bhiksha:そう、あなたが取り組みたいどんな言語でも。
――さて、私は毎週、このような録音を行ったあとにやらなければならないことがある。録音物には今回の場合と同様、複数の人の声が録音されていたり、それぞれに独特のアクセントがあるのだが、録音をもとにWebサイト用に文字に書き起さなければならないんだ。どうやら、このソフトウェアを試してみることになりそうだ。
Bhiksha:私の発音は聞き取りやすい思ったのに!
Rich:あなた方は皆、とても聞き取りやすい。ただ、これまでもいくつか書き起こしソフトウェアは使ってみたんだが、自分自身の声を書き起すことは上手く学習させられても、話者が増えると途端に混乱してしまうんだ。
Alex:それは「話者依存」型の音声認識だったんだね。でも実際、最初は音声認識において話者に依存することは不可欠であると考えられていたんだ。今でも特定の個人用に「トレーニング」を行うことでさらに良いパフォーマンスが得られるし。でもそれは実際あなたが求めているものではないよね。
――Sphinxは今夏のGoogle Summer of Codeに参加するみたいだけど、それについて話を聞かせてほしい。
Evandro:まだ学生の選考は行っていないが、学生達と一緒にちょっと面白いプロジェクトをやる予定なんだ。それが、今夏の予定さ。それから、今年予定されているプロジェクトの1つに、Sphinxを使ったトレーニングおよびデコーディングを行うためのより優れたユーザーインターフェース、グラフィカルユーザーインターフェースを構築するといったプロジェクトもある。
Bhiksha:そして昨年は、人が本をまるまる一冊読んだら、その録音された音声をテキストに起こすことができるというツールも作った。
――本日は、お話をたくさん聞かせてくれてありがとう。きっと、もっと話すことがあったのでしょうが。
Alex:質問に対してきちんと答えられていればいいのですが。
――本当にありがとう!
全員:ありがとう。