상세 컨텐츠

본문 제목

[안드로이드]RecognizerIntent 음성을 텍스트(Text)로 전환시켜주는 방법

안드로이드

by aries574 2021. 1. 16. 04:17

본문



이번 시간에는 아이폰의 시리, 구글의 어시스턴트에서 쓰이는 음성을 읽어 텍스트로 보여주는 기능을

예제를 통해서 알아보겠습니다.


1. 메인화면 구현(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
android:id="@+id/text_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:textSize="26sp"
android:textStyle="normal"
/>
<ImageView
android:id="@+id/btn_speak"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="60dp"
android:onClick="getSpeechInput"
android:src="@drawable/ic_mic"/>
</RelativeLayout>

res -> drawable -> 마이크 이미지 추가

ic_mic.xml





2. 메인코드 구현(MainActivity.java)


import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Locale;

public class MainActivity extends AppCompatActivity{

private TextView textResult;

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

textResult = findViewById(R.id.text_result);
}


public void getSpeechInput(View view) {

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);

//음성 인식기에 사용되는 음성모델 정보 설정
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);

//음성 인식기에 인식되는 언어 설정
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.KOREAN);

if(intent.resolveActivity((getPackageManager())) != null){
startActivityForResult(intent , 10);
}else{
Toast.makeText(this, "당신의 장비가 음성을 텍스트로 변경불가합니다.", Toast.LENGTH_SHORT).show();
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode){
case 10:
if(resultCode == RESULT_OK && data != null){
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
textResult.setText(result.get(0));
}
break;
}
}
}


3. 실행화면



반응형

관련글 더보기

댓글 영역