Androidで音声入力を利用する方法を分り易く解説します

こんにちは。管理人のピヨ猫でーす。

Androidで音声入力を実装する方法を紹介します。

記事の説明です

 

1.音声入力ってな~に

音声入力はキーボードではなく、声で入力を行う機能のことです。
マイクマークがついたやつです。

Androidの音声入力機能

キーボード打たないで入力できるので楽ちんですが、人のいるところで使うと少し恥ずかしいです。
初めて人が使っているのを見たとき、なんかスマホに話しかけている人がいるーーって思いましたが・・・、使いだすと便利な機能だなーと思いました。

このブログの主題の「機械学習」により実現されている機能ですね。
何時かそこも記事にしたいと思います。

2.Androidで音声入力を使う方法

Androidにデフォルトで備わっているRecognizerIntentを使います。
RecognizerIntentには3つのActivityが用意されています。

RecognizerIntentにはの3つの機能

ACTION_RECOGNIZE_SPEECH

ユーザーにスピーチを促し、スピーチ結果の文字候補を取得するアクティビティ

ACTION_VOICE_SEARCH_HANDS_FREE

API16から追加された機能
ユーザーの視覚的な注意やタッチ入力を必要とせずに、ユーザーにスピーチを促すアクティビティ

ACTION_WEB_SEARCH

ユーザーにスピーチを促し、スピーチ結果の最有力文字候補をキーにGoogle検索結果を取得するアクティビティ
基本的な使い方はシンプルです。

RecognizerIntentを使った音声入力機能の実装方法

// 1.ACTION_RECOGNIZE_SPEECHを起動するIntentを作成する
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
// 2.オプション設定を追加する
// ここでは言語設定を端末ロケールに設定
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
// 3.音声入力の結果を受け取るパッケージを設定する
// ここでは音声入力を起動するアプリと同じアプリを設定している
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
// 4.音声入力を起動する
startActivityForResult(intent, SPEACE_REQUEST_CODE);

3.音声入力の実装サンプル

private static final int SPEACE_REQUEST_CODE = 1000;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ・・・
    findViewById(R.id.btnSpeak).setOnClickListener(new View.OnClickListener() {
       @Override
        public void onClick(View v) {
            Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,                 
                    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
            intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());
            startActivityForResult(intent, SPEACE_REQUEST_CODE);
        }
    });
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == SPEACE_REQUEST_CODE && resultCode == RESULT_OK) {
        // スピーチの候補文字列を受け取る
        List results = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        if(results.size() > 0) {
            EditText text = (EditText)findViewById(R.id.txtWhere);
            // スピーチの候補文字列の第一候補をテキストボックスに設定する。
            String str = results.get(0).trim();
            if(!"".equals(str)){
                text.setText(str);
            }
        }
    }
}

音声入力でどこでも〇〇

音声入力を使った自作アプリの「どこでも〇〇」です。

どこでもドア
https://play.google.com/store/apps/details?id=shibayu.net.zive.anywheredore

本日は以上です。この記事が少しでもお役に立てば幸いです。

がんばろー

広告




スポンサーリンク
広告




広告




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
広告