あたも技術ブログ

セットジャパンコーポレーションの社員が運営しています。

Androidでも音声認識

先日のWWDCでSiriのAPIを公開するという発表がありました。
これでサードパーティのアプリに組み込むことができるようになったので、今後音声を利用したアプリが増えてきそうですね。

そこで、Androidでも音声を使ってみようと思います!
AndroidMから音声認識APIが使えるようになっているので、今回はそれを利用したサンプルアプリのご紹介です。

Voice Interaction API
https://developers.google.com/voice-actions/interaction/voice-interactions



まずは普通にプロジェクトを作成。

次にAndroidManifet.xmlに以下のようにintent-filterを作成します。

<intent-filter>
    <action android:name="android.media.action.STILL_IMAGE_CAMERA" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.VOICE" />
</intent-filter>



音声コマンドで立ち上がった場合は、isVoiceInteraction()にtrueが返却されるので、以下のように判定します。

@Override
protected void onResume() {
    super.onResume();
    if (isVoiceInteraction()) {
        startVoiceTrigger();
    }
}



getVoiceInteraction().submitRequestで音声確認を要求します。
ここが実際に音声のやりとりを行う所になります。

PickOptionRequest.Optionで発声する文字のリストを作成します。
(リストに含まれている文字が発呼されたらonPickOptionResultにコールバックされます)
今回は「select pet」という要求が表示され、「dog」もしくは「cat」といった場合のみトーストが表示されます。

PickOptionRequest.Option[] options = new PickOptionRequest.Option[] {
    new PickOptionRequest.Option("dog", 0),
    new PickOptionRequest.Option("cat", 1)
};

getVoiceInteractor().submitRequest(
    new VoiceInteractor.PickOptionRequest(newVoiceInteractor.Prompt("select pet"), options, new Bundle()) {
        @Override
        public void onPickOptionResult(boolean finished, Option[] selections, Bundle result) {
            if (finished) {
                Toast.makeText(getApplicationContext(), "Ok", Toast.LENGTH_SHORT).show();
            }
        }
    }
);



ここまで作成したらアプリを実行。

ホーム画面で「ok google」。
f:id:atamo_dev:20160615094128p:plain:h300

そして、「take a selfie」でアプリを起動することができます。
f:id:atamo_dev:20160615094826p:plain:h300 f:id:atamo_dev:20160615094832p:plain:h300

アプリが立ち上がると、「select pet」と聞かれるので、
f:id:atamo_dev:20160615095449p:plain:h300


今回は「cat」と発声!(「dog」でも可)
f:id:atamo_dev:20160615095803p:plain:h300

すると、onPickOptionResultが呼ばれてトーストが表示されました!
f:id:atamo_dev:20160615095807p:plain:h300


以上、簡単ですがAndroidでの音声操作の利用方法でした。
音声を使用すれば、手を使わなくてもスマホを操作できるようになるので、手が使えないときの画面のスクロールや切り替えなどがしやすくなるかも?(料理中とか?)

下記URL先を見れば、手順を踏みながら作成することもできるので、興味ある方はぜひ触ってみてください。
http://io2015codelabs.appspot.com/codelabs/voice-interaction#1

ではでは~~。