忍者ブログ

アンドロイドのあれこれ

RecognizerIntent、アプリから音声認識する
音声認識するための簡単なアプリを紹介します。

MainActivity.java
public class MainActivity extends Activity {

private static final int REQUEST_CODE = 1;
private ListView wordsList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button speakButton = (Button) findViewById(R.id.speakButton);

wordsList = (ListView) findViewById(R.id.list);

// 対応する音声認識のサービスがない場合はボタンを無効に
PackageManager pm = getPackageManager();
List activities = pm.queryIntentActivities(
new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
if (activities.size() == 0) {
speakButton.setEnabled(false);
speakButton.setText("Recognizer not present");
}
}

public void speakButtonClicked(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_PROMPT, "Voice recognition test...");
startActivityForResult(intent, REQUEST_CODE);
}

/**
* 音声認識からの結果を受け取る
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// 音声認識のエンジンからのいくつかの結果
ArrayList results = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
// 認識結果を表示
wordsList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
results));
}
super.onActivityResult(requestCode, resultCode, data);
}
}

/res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<Button android:id="@+id/speakButton"
android:layout_width="fill_parent"
android:onClick="speakButtonClicked"
android:layout_height="wrap_content"
android:text="Speak!" />

<ListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />

</LinearLayout>

実行イメージ
RecognizerIntent、アプリから音声認識する RecognizerIntent、アプリから音声認識する RecognizerIntent、アプリから音声認識する


参考したサイト:
http://www.jameselsey.co.uk/blogs/techblog/android-how-to-implement-voice-recognition-a-nice-easy-tutorial/
COMMENT
NAME
TITLE
MAIL (非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS (コメント編集に必須です)
SECRET
管理人のみ閲覧できます
 
PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]