作成日

18 November 2009

Voice Launcher について

Voice Launcher は、マイク音声によってアプリケーションを起動する、音声認識型 アプリケーション起動ソフトです。

例えば、「Adobe Photoshop CS4」に対して読み方を「ふぉとしょ」と登録しておけば、マイクに向かって「フォトショ!」と言うだけで Adobe Photoshop CS4 が起動します。

ダウンロード

重要: このサンプルアプリケーションは、AIR 2 betaの機能を体験するために作成されています。お試しになる場合は、AIR 2 beta ランタイムを先にインストールする必要があります。なお、既にAIR 1.xのランタイムがOSにインストールされている場合は、上書きされてしまいますのでご注意ください。元に戻す場合は、AIR 2 beta ランタイムをアンインストールし、AIR 1.5.2 ランタイムをインストールします。詳細はリリースノート をご覧ください。

動作環境

Windows XP/Vista
Adobe AIR 2.0 ランタイム
Java (JRE 1.4 以上)
※マイクが使える状態にあること

つかいかた

1)動作確認する

Voice Launcher を起動すると、ガジェットが表示されます。とりあえずマイクに向かってなにか喋ってみましょう。グラフが変化し、音声認識結果がグラフの下に表示されます。

グラフが変化しない場合は、OSの設定でマイク入力を使えるようにしてもう一度挑戦しましょう。

音声認識結果がでない場合は、次のことを試してみてください。

  • マイク入力の音量を調整しましょう。
    グラフの波が小さすぎず、大きすぎない程度がベストです。
  • はっきりとしゃべりましょう。
    まずは、「こんにちは」などの濁音や小文字の入っていない、認識しやすい言葉を、滑舌よく、元気に発声してみましょう。
  • Javaが必要です。
    音声認識エンジンを起動するためにJava(JRE)が必要です。あらかじめインストールしましょう

2)アプリケーションを登録する

ガジェットの工具マークをクリックすると、設定ウィンドウが現れます。初期状態では何も登録されていませんので、まずはアプリケーションを登録します。

プラスボタンをクリックします。

登録ウィンドウが現れたら、登録したいアプリケーションを選択します。

アプリケーションの読み方を登録します。ひらがなで入力しましょう。

登録するボタンを押すと、設定ウィンドウのリストに表示されます。

さあ、一度トライしてみましょう!

3)終了する

タスクトレイのグラフアイコンは、Voice Launcher です。
グラフアイコンを右クリックして終了を選択するとアプリケーションが終了します。

Adobe AIR 2.0 API の使用

Voice Launcher は、Adobe AIR 2.0 から搭載される新機能をたくさん使用しています。

ネイティブプロセス AIR からコマンドを実行できる。 ネイティブインストーラー exe や dmg ファイルとして配布できる。 マイクロフォンAPI マイク音声データを取得できる。 デフォルトアプリケーションで開く ファイルを関連付けられたアプリケーションで起動できる。

では、簡単に Voice Launcher で使用している箇所をいくつか説明していきましょう。

Adobe AIR からアプリケーションを起動する

Voice Launcher は、登録されたアプリケーションを起動するソフトウェアです。では、Adobe AIR からアプリケーションを起動させる部分をフォーカスしてみます。

/** *アプリケーションを起動する *@param 起動するアプリケーションのフルパス */ public function launch(appFile:String):Boolean { if (!NativeProcess.isSupported) return false; var ret:Boolean = true; var exec:File = new File(appFile); // 拡張子が exe , cmd ならNativeProcess で起動 if (exec.extension == "exe" || exec.extension == "cmd") { var nativeProcess:NativeProcess = new NativeProcess(); var info:NativeProcessStartupInfo = new NativeProcessStartupInfo(); info.executable = exec; try { nativeProcess.start(info); } catch (error:IllegalOperationError) { return false; } catch (error:ArgumentError) { return false; } catch (error:Error) { return false; } ret = nativeProcess.running; } // それ以外の拡張子の場合は、デフォルトアプリで開く else { exec.openWithDefaultApplication(); } return ret; }

拡張子が、”exe”、”cmd” の場合は、NativeProcessクラスを利用して起動しています。それ以外の拡張子(たとえば “txt”など)の場合は、Fileクラスの openWithDefaultApplication() を使用してファイルを開いています。“bat“ ファイルは起動できないようです。

※ Mac で同様の機能を実現する場合は、”app” ファイルを実行させる(正確には”app” の “/Contents/MacOS/appName” を実行させる)よりも、 open コマンドを使うのが便利だと思います。コマンドを実行するには、コマンドのファイルを実行する必要がありますので、 open コマンドの場合は、NativeProcessStartupInfo の executable には、/usr/bin/open のFileインスタンスを設定することになります。

// open コマンドを使用 var exec:File = new File(“/usr/bin/open”); var info:NativeProcessStartupInfo = new NativeProcessStartupInfo(); info.executable = exec; // 実行させたいファイルをコマンドライン引数に。 var args:Vector.<String> = new Vector.<String>(); args.push(appFile); info.arguments = args;

Adobe AIR から音声認識エンジンを起動する

Voice Launcher には Julius ( http://julius.sourceforge.jp/ ) という音声認識エンジンを同梱しています。Julius は対話型コンソールアプリケーションです。配布形式は exe なので、上記と同様に NativeProcess クラスから起動し、Julius からの音声認識結果(コンソール出力)を NativeProcess インスタンスから送出される ProgressEvent.STANDARD_OUTPUT_DATA イベントを拾うことで実現できます。

しかし、コンソールアプリケーション(や cmd ファイル)を直接実行すると、コマンドプロンプト画面が出てしまいます。

今回はそれを消すために Julius を起動させる Java アプリケーションを作成し、Adobe AIRからは Javaアプリを起動させることで対応してみました。

Voice Launcher では、ガジェットのマイクボタンを押すことで音声認識が開始/終了します。今回はサンプルなので、「開始」はミドルウェアを挟み、「終了」は cmd ファイルを直接実行させるようにしました。

音声認識を終了させる時だけ、コマンドプロンプトが一瞬出てくると思います。

さて、このような中間アプリケーションを挟む場合は、NativeProcess が持つプロセスは中間アプリケーションであることに注意しましょう。Julius のような、起動してずっとプロセスが生き続けるようなアプリケーションの場合は、Adobe AIR側から明示的にプロセスを終了させなければなりません。

まとめ

以上でアプリケーションの説明と技術解説はおわりです。

Adobe AIR は、ネイティブプロセスを実行できるようになったことで、アプリケーションの自由度が大きく高まりました。

Adobe AIR 2.0 アプリケーションにぜひトライしてみてください。