すべて
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 以上)
※マイクが使える状態にあること
Voice Launcher を起動すると、ガジェットが表示されます。とりあえずマイクに向かってなにか喋ってみましょう。グラフが変化し、音声認識結果がグラフの下に表示されます。
グラフが変化しない場合は、OSの設定でマイク入力を使えるようにしてもう一度挑戦しましょう。
音声認識結果がでない場合は、次のことを試してみてください。
ガジェットの工具マークをクリックすると、設定ウィンドウが現れます。初期状態では何も登録されていませんので、まずはアプリケーションを登録します。
プラスボタンをクリックします。
登録ウィンドウが現れたら、登録したいアプリケーションを選択します。
アプリケーションの読み方を登録します。ひらがなで入力しましょう。
登録するボタンを押すと、設定ウィンドウのリストに表示されます。
さあ、一度トライしてみましょう!
タスクトレイのグラフアイコンは、Voice Launcher です。
グラフアイコンを右クリックして終了を選択するとアプリケーションが終了します。
Voice Launcher は、Adobe AIR 2.0 から搭載される新機能をたくさん使用しています。
ネイティブプロセス
AIR からコマンドを実行できる。
ネイティブインストーラー
exe や dmg ファイルとして配布できる。
マイクロフォンAPI
マイク音声データを取得できる。
デフォルトアプリケーションで開く
ファイルを関連付けられたアプリケーションで起動できる。
では、簡単に Voice Launcher で使用している箇所をいくつか説明していきましょう。
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;
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 アプリケーションにぜひトライしてみてください。
Tutorials and samples |
AIR blogs |
More |
AIR Cookbooks |
More |
| 01/20/2012 | Skinnable Transform Tool |
|---|---|
| 01/18/2012 | Recording webcam video & audio in a flv file on local drive |
| 12/12/2011 | Date calculations using 'out-of-the-box' functions |
| 11/29/2011 | Button compatibility with NativeComboBox |