Skip to Content Java Solaris コミュニティ パートナー 開発者 マイ・アカウント ご購入について (0120-33-9096) Japan Worldwide

Feed Feed RSS 1.0 Feed RSS 2.0 Feed ATOM 1.0
Solaris超特急・デスクトップを攻略せよ!(7)いつまで続くSolarisで音声編!ワタシの言うことワカリマスカSolaris君?Sphinx-4で音声認識大作戦、えッNetBeansにそんな使い方を!?
  前号へ     次号へ  
Steps

音声合成と言えば音声認識だ!これにもオープンソースのJavaプロジェクトはというと、これがバッチリあった。やはりおなじみの皆さんによるプロジェクトだ。

音声認識ソフトが出始めた10年くらい前は、それはタイヘン大きく、プラットフォーム依存性も強く、インストールにも時間がかかり、動作中はハードディスクがゲリゲリ言いまくりだったが、それでもタイヘン面白かった!今それをオープンソースてことは無償で、Javaてことはプラットフォーム依存性も少なく、使うことができるというのか?本当か?

その名も「Sphinx」。プロジェクトのURLはココがいいだろう(※1)

やっぱり相変わらずその名が高級料亭のメニューを思わせるカーネギーメロン大学(CMU)の、「Sphinxグループ」と、やっぱり我らがSun Microsystems Laboratoriesとか、日米の企業や大学が結集したプロジェクト。トップページのデザインもプロっぽい。これは期待できそうだ!
現在はSphinx-4というバージョンのベータ版が公開中。プロジェクトサイトに記されたそのシステム要件てのが、また泣かせる。

これによるとSphinx-4のビルドとテストは「Solaris(上付TM)オペレーティング環境、Mac OS X, LinuxあとWin32 オペレーティングシステムで」行ったのだそうだ。
筆頭がSolaris、それも商標マークつきで、一番ビッケがそれも「Win」呼ばわりなのが驚きだ(※2)

リスト1のサイトから下記のダウンロードサイトにたどりつくことができる。

まずはビルド済みパッケージを使ってみよう。ココからsphinx-4.1.0beta-bin.zipをもらってきて、展開するとsphinx4-1.0betaというフォルダになる。これを以後「sphinxフォルダ」と呼ぶことにしよう。

Javaで音声を扱うにはJava Speech APIことJSAPIが必要だ。具体的にそれは何かというとjsapi.jarというジャーが1個だ。
前々回の(※3)「FreeTTS」のときにも紹介したが、音声関連のプロジェクトがこのJSAPIと異なるライセンス形式を有する場合、そのままひっくるめて出すワケにはいかない。

しかし使用者がわざわざ取ってこなくてもよいように、JSAPI使用条件の提示と受諾の是非を問う過程を含む「インストーラ」の形であれば、他のプロジェクトにも含むことは可能だ。それがjsapi.sh(jsapi.exe)だ。
このSphinx-4ではいよいよ、JSAPIのセットアップが必要なようだ。「sphinxフォルダ」の下「lib」フォルダ内にそのjsapi.shがある。

これを実行するためには、まず「実行特性」をつけてやらなければならない。もーGUI馬鹿一代のワタシはすぐ右クリックでヤッてしまう。

図1:「lib」フォルダの下に「jsapi.sh」がある
図1:「lib」フォルダの下に「jsapi.sh」がある
図2:実行特性もGUIでヤッてまう
図2:実行特性もGUIでヤッてまう

あとはこのjsapi.shのアイコンをバシバシとダブクリ(※4)すると、「実行しますか表示しますかエコカード(※5)はお持ちですか」ときかれるので、「端末内で実行」を選ぶのが通だ(※6)

図3:メニューを出してくれるので「とりあえず端末内でお願いします」
図3:メニューを出してくれるので「とりあえず端末内でお願いします」

これで、端末内に、使用条件が表示されるから読んでいけばよいのだが、実はこの作業はきわめて困難であることをワタシは思い知った!

サン様のJDKのインストールなんかでも手慣れたこの作業、エエハイハイと改行キーをダラーと押し続けた。いや、もちろん読みながらです。得意の英語力を駆使して流れる文章をよく読みながらダラーと過ごしていたら、この端末ウィンドウがスルッと消えた。
「なにッ?」

実は、JDKのインストールなんかではもちろんよく読みながら改行キーをダラーと押していけば、「同意しますか(y/n)同意しますか(y/n)同意しますか(y/n)」と何度も聞いてくれるので「おっと終わったかもちろんよく読んではいたんだが気づかなかった」とわかるのだが、このJSAPIはチャンスは一度きり、y以外のキーを押すとモモ別れ(※7)に終わったと見なされ、終了してしまうのだ。

だから慎重に1行ずつ改行を押していく。ちょっと漏らすと、「詳細はサンでネ」と書いてあるところが最後だ!

図5:ちょっとだけお見せしましょう
図5:ちょっとだけお見せしましょう

1回でも改行をシクると、ウナギのように逃げてしまうコレ、どうにかならないかなーとも思ったがまさかどこかのフォーラムにそんな話題を出しても「横着せず1行ずつ噛みしめるように読んで行きなさい」と言われてグーの音もグルの音も出ないだろうから観念して、とにかく同じlibフォルダにjsapi.jarを得た(もし、お手元のファイルブラウザにそれが見えないという場合、「再読込」してみてクダサイ)。

「音声認識」にはたまらなく惹かれるワタクシ、とにかくどんなものなのか今すぐデモってみたい。それにはやはり自己流は避けてインストラクションにダクダクと従い、コマンドでサンプルジャーをジャバしてみることにする。つまり、サンプルプログラムは「sphinxフォルダ」の下の「bin」フォルダに、全てがまとまった実行可能jarファイルの形で収まっているのだ。

図6:「bin」フォルダに並んだサンプル。これでも一部だ
図6:「bin」フォルダに並んだサンプル。これでも一部だ

その中から「HelloWorld」デモを動かしてみる。おっとその前にマイクスタンバイ!
実行場所は、「sphinxフォルダ」の真下だ。

実行例1 「sphinx4-1.0beta」フォルダの真下で、HelloWorld.jarを実行する

java -mx256m -jar bin/HelloWorld.jar

と、やって、運命の改行キーをバーンと押す。すると、

Loading...

ドキドキ見つめる中二、三秒かかったあと、

Say: (Good morning | Hello) (Bhiksha | Evandro | Paul | Philip | Rita | Will)
Start speaking. Press Ctrl-C  to quit.

つまり、

Good morningかHelloの挨拶に、5人のうち誰かの名前をつけて言ってみてください

「フーム、そういうことか!」
と思わず鼻息を荒くすると

You said : hello

と出た。「フーム」という鼻息が音声として受け取られたらしい。
もう一度「Start speaking...」というメッセージが出たら、再入力待ちだ。「Ctrl-C」でやめるまで何度も繰り返せる。そこで、「ハロー、ポール」と言ってみた。かなり照れくさい。
応答は「You said: hello rita」だった。

「ちがーうッ」

なんて発音するのかわからない「Bhiksha」と「Evandro」以外全部やってみると、「hello will」が一番当たりを取った。次が「paul」かな。だが、ややもするとすぐに「rita」で返ってきて、てめェ(※8)さてはRitaに惚れてやがんなと思った。あとGood Morningは何回やってもわかってもらえなかった。

もっとわかりやすかったのが、数字を言ってみる「HelloDigits」デモだ。これなら本当に認識されていると確信できる。ただ、「seven」だけがどうしても認識されず、そのつどデタラメくさい数字が返ってくる。自分の発音の弱点がサラケ出ているようで、こんなところを誰かに盗録されて「奥さんこの音声ファイルをインターネットに公開されたくなかったら云々」と脅されたら(※9)19800円くらいなら払ってしまいそうだ。

デモはオッケーだ!だが、ここまで来たからにはゼヒカスタムなプログラムを(なるべく簡単に)(Javaのコードとか変えないで)(ホラこの文字列の部分をちょっと変えるだけでハッカー気分、みたいなノリで)作ってみたいのが人情だ。

まず、カスタムなプログラムを作るにはソースが必要なので、sphinx-4-1.0beta-src.zipをもらってくる。これ、展開するとバイナリ版と同じ名前のフォルダになるので、前のフォルダは移動するか名前を変えておく。

新しくできた「sphinxフォルダ」の下、「lib」フォルダの中で同様にJSAPIをセットアップする。

そしたら、「sphinxフォルダ」の真下にある「build.xml」を使って「ant」でビルドするのだ。

それには、環境変数ANT_HOMEやなんかを設定しておく必要がある。ここでもうワタシは「めんどくせえな」と思ってしまった。

NetBeansを使うと、JAVA_HOMEもANT_HOMEも、javaやantへのパスも設定しなくていい。今度も、コレでなんとかできないか、いやNetBeans貴族の名にかけて(※10)絶対してやると思った。
以下の作業はスイマセンまだソルデベ(Solaris Express Developer Edition)の9/07と、付属のNetBeans5.5です。あんまり調子いいモンだからついアップデートサボっちゃってぇー。

図8:最初からついてるものをつい使っちゃうのよね
図8:最初からついてるものをつい使っちゃうのよね

今度は「既存のAntスクリプトを使用するJavaプロジェクト」を作る。

図9:相変わらず普通のJavaプロジェクトを作らないヤツ
図9:相変わらず普通のJavaプロジェクトを作らないヤツ

最初に「構築スクリプト」の場所とファイルを選んでくれと言われる。慣れないうちはビックリするかも知れないが、要するに図7にあるbuild.xmlのことだ。だからそれの直属の親フォルダを指定してやればよい。ということは「sphinx4-1.0beta」フォルダそのものだ。
「場所」さえそれにしてやれば、「構築スクリプト」はNetBeansが勝手に見つけてくれる。

図10:一番上の「場所」に、「sphinx4-1.0beta」フォルダそのものを選んでやると...
図10:一番上の「場所」に、
「sphinx4-1.0beta」フォルダそのものを
選んでやると...
図11:「構築スクリプト」も自動的に選ばれてくれる
図11:「構築スクリプト」も自動的に選ばれてくれる

その下にある「プロジェクトの名前と場所」は、NetBeans固有の設定ファイルとかを置いておく場所だから、テキトーな名前で他の場所にしておく。

図12:NetBeansの都合で作られる場所なので、どこか適当に
図12:NetBeansの都合で作られる場所なので、どこか適当に

そのあとはデフォルトのまんまやり過ごす。

図13:ハイハイお願いしますと言って次へ
図13:ハイハイお願いしますと言って次へ

最後に、このプロジェクトで編集とかできるソースファイルのあるフォルダがあったら追加しなさい、という。追加するとプロジェクトの中とかで編集とかできたりとかするのだが、今回の「Sphinx-4」はフォルダやファイル同士の依存関係がちょいと複雑で、あのフォルダを指定しないとこのフォルダを参照できない、とかいう不整合がしばしば起きて厄介なので何も指定しないで、「完了」ボタンが見えたところで押してしまう。

できるプロジェクトはなんだかすごく寂しいけどダイジョブ。

図14:フォルダを追加すると便利なこともあるのだが今回は何も追加しないでフィニーッシュ
図14:フォルダを追加すると便利なこともあるのだが
今回は何も追加しないでフィニーッシュ
 
図15:えらく何もできなさそうなプロジェクトになるが、実はこれからがすごいのダ
図15:えらく何もできなさそうなプロジェクトになるが、実はこれからがすごいのダ


   ココがいいだろう:大学内のサイトとか「sourceforge.net」プロジェクトのサイトとかいろいろあるのだが、ココからなら各方面にリンクできるはず。
   驚きだ:驚いているだけで、別にいいとも悪いともウシャーともオトトイカマーンなどとも言っていない。
   前々回の:SolarisやJavaで音声を扱う文書をこれだけ継続的に書いておきながら、その技術的解説については一字っかけらもないというサイトも、世界中にわが「Solaris超特急シリーズ」くらいのものだろう。
   ダブクリ:OSによっては、「binファイルならいいけどshファイルはダブクリ起動はダメです」と言われるものもある。
   エコカード:ちょっと前までは「実行しますか表示しますかポテトはつけますか」と書くのがギャグになったが最近のファストフード店はきわめて応対がシンプルになり、かわりにスーパーでこのようにきかれることが多くなった。ちなみに名前はイメージですがワタシもその類のものは持ってます。マイバッグはSun Tech Daysでもらったリュックです。
   通だ:つかそうしないと作業進まない。
   モモ別れ:「物別れ」を春らしく表現したもの。
   てめェ:誰かはよく知らないけどこれを作った人。
   脅されたら:2007年「Sun Tech Days」の指笛の練習だのKevin君の音声設定だの、この「お笑い道場」原稿は幾度となく、一件につき二万円程度の口止め評価額に相当すると思われる恥ずかしい光景や音声を経て作成されたものだ。リスキーな人生だ。
   NetBeans貴族の名にかけて:誰も言ってないし自分でも今思いついた。あと名にかけるなら早くアップデートしろ。

本記事は、サンのユーザ様自らの体験をお寄せいただいたものであり、サン・マイクロシステムズ社としての公式情報ではありません。


  前号へ     次号へ  
ご意見・ご感想をお聞かせください
この記事は参考になりましたか?
     

コメントがございましたらご記入ください


ページ先頭へ

Sun Fun Times


 

お問い合わせ 会社情報 ニュース 採用情報 プライバシー 利用規定 商標 Copyright  Sun Microsystems, Inc.