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」。
そして、「take a selfie」でアプリを起動することができます。
アプリが立ち上がると、「select pet」と聞かれるので、
今回は「cat」と発声!(「dog」でも可)
すると、onPickOptionResultが呼ばれてトーストが表示されました!
以上、簡単ですがAndroidでの音声操作の利用方法でした。
音声を使用すれば、手を使わなくてもスマホを操作できるようになるので、手が使えないときの画面のスクロールや切り替えなどがしやすくなるかも?(料理中とか?)
下記URL先を見れば、手順を踏みながら作成することもできるので、興味ある方はぜひ触ってみてください。
http://io2015codelabs.appspot.com/codelabs/voice-interaction#1
ではでは~~。