スタッフブログ

STAFF BLOG

アプリ開発日誌

2016.06.24

Android 開発してみよう!「OK, Google」を利用した音声認識

こんにちは。開発のT.Jyoです。

前回の記事でiOSでもついにSiriKit(Intents / IntentsUI)を使って、「Hey, Siri」をハンドリングできるようになりました。

現在、SiriKitを使ってDEMO作成中です。近日公開しますので興味ある方は是非見てください。

さて、「Hey, Siri」をハンドリングできるようになったのは分かったのですが、Androidの「OK, Google」はどうなの?

実は、ハンドリングできちゃうんです!

今回は「OK, Google」の音声認識実装について記載します。

Custom Voice Actions

「OK, Google」で発話した内容を使って発話した内容をアプリ側で使えるはず、、、

しかし、現在はまだ実装されておらず使用できません。

・Custom Voice Actions(公式)
https://developers.google.com/voice-actions/custom-actions?hl=ja

AccessibilityService(ユーザー補助)

こちらを使って今回「OK, Google」をハンドリングします。

まず初めに、こちらは音声認識用の機能では無いためユーザーに端末設定をさせる動作が必要となります。(設定方法は後述)

1.src/AccessibillityVoiceService.java

AccessibilityService を継承した Service クラスの作成。

public class AccessibillityVoiceService extends AccessibilityService {
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo accessibilityNodeInfo = event.getSource();
        if (null == accessibilityNodeInfo)
            return;

        String className = accessibilityNodeInfo.getClassName().toString(); //!< 音声認識の判断クラス
        final CharSequence text = accessibilityNodeInfo.getText();  //!< 音声認識に登録されたテキスト
        if(-1 == className.indexOf("com.google.android.apps.gsa.searchplate")
                || null == text)
            return;

        Toast.makeText(getApplicationContext(), text.toString(), Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onInterrupt() {
    }
}

2.res/xml/accessibillity_service_config.xml

Accessibilityの設定ファイルを作成。

<?xml version="1.0" encoding="UTF-8" ?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackSpoken"
    android:accessibilityFlags="flagDefault"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibillity_description" <!-- ユーザー補助機能許可の説明 -->
    />

3. AndroidManifest.xml

Accessibilityのサービスを定義。

<uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE" /> <!-- applicationタグ外に記載 -->

<!-- applicationタグ内に記載 -->
<service
    android:name=".AccessibillityVoiceService"
    android:label="AccessibillityVoiceService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibillity_service_config" />
</service>

開発は以上。

あとは、ユーザー側(端末)の設定。

①まずはアプリの起動

②端末の「設定>ユーザー補助>AccessibilityVoiceService」

③OFFのスイッチをONにする

Screenshot_2016-06-23-18-56-25   Screenshot_2016-06-23-18-56-31  Screenshot_2016-06-23-19-20-20

あとは、「OK, Google」=>発話した内容がトーストで表示されました!

Screenshot_2016-06-23-18-59-25

実装内容が分かってしまえば、思ったよりも簡単に組み込みができます。

是非、取り込んでみてください。

次回はこれと同じ機能をiOSにも組み込んでみます。

BACK

お問合せ

イーディーエーに興味をお持ちいただいて
ありがとうございます!
スマホアプリに関するご相談、
お見積りや弊社へのご質問など、
お気軽にお問い合わせください。
担当者より折り返しご連絡させていただきます。

    お名前必須
    会社名
    メールアドレス必須
    電話番号必須
    お問合わせ種別必須
    お問合わせ内容必須

    アンケートにご協力ください。
    弊社サイトへはどのようにしてアクセスされましたか?

    個人情報のお取扱いに関する同意事項

    1.事業者の氏名又は名称

    株式会社イーディーエー

    2.個人情報保護管理者の氏名又は職名、所属及び連絡先

    個人情報保護管理者 小宮 保人
    Mail:[email protected]

    3.取得した個人情報の利用目的

    当フォームで取得した個人情報は、お問い合わせに関する回答のために利用し、目的外利用はいたしません。

    4.弊社が取得した個人情報の第三者への委託、提供について

    弊社は、ご本人に関する情報をご本人の同意なしに第三者に委託または提供することはありません。

    5.個人情報保護のための安全管理

    弊社は、ご本人の個人情報を保護するための規程類を定め、従業者全員に周知・徹底と啓発・教育を図るとともに、その遵守状況の監査を定期的に実施いたします。
    また、ご本人の個人情報を保護するために必要な安全管理措置の維持・向上に努めてまいります。

    6.個人情報の開示・訂正・利用停止等の手続

    ご本人が、弊社が保有するご自身の個人情報の、利用目的の通知、開示、内容の訂正、追加又は削除、利用の停止、消去及び第三者への提供の停止を求める場合には、下記に連絡を頂くことで、対応致します。

    株式会社イーディーエー 個人情報お問合せ窓口
    〒106-0032 東京都港区六本木7丁目14番23 ラウンドクロス六本木4F
    TEL:03-5422-7524 FAX:03-5422-7534
    Mail:[email protected]

    7.ご提供いただく情報の任意性

    個人情報のご提供は任意ですが、同意を頂けない場合には、第3項にあります利用目的が達成できない事をご了承いただくこととなります。

    8.弊社Webサイトの運営について

    弊社サイトでは、ご本人が弊社Webサイトを再度訪問されたときなどに、より便利に閲覧して頂けるよう「クッキー(Cookie)」という技術を使用することがあります。これは、ご本人のコンピュータが弊社Webサイトのどのページに訪れたかを記録しますが、ご本人が弊社Webサイトにおいてご自身の個人情報を入力されない限りご本人ご自身を特定、識別することはできません。
    クッキーの使用を希望されない場合は、ご本人のブラウザの設定を変更することにより、クッキーの使用を拒否することができます。その場合、一部または全部のサービスがご利用できなくなることがあります。