상세 컨텐츠

본문 제목

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

안드로이드

by aries574 2022. 7. 9. 11:52

본문


이번 시간에는 음성텍스트전환시켜주는 방법을 알아보겠습니다.


목차

1. 실행 화면

2. 메인 화면 구현 activity_main.xml

3. 메인 코드 구현 MainActivity.kt


1. 실행 화면

 

 

2. 메인 화면 구현 activity_main.xml

- 설명 -

1. 음성을 텍스트로 보여주는 TextView

2. 음성을 텍스트로 변경하는 Button

3. res -> drawable

ic_mic.xml
0.00MB

<?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"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/result_text"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:background="@android:color/darker_gray"
        android:textSize="25sp" />

    <androidx.constraintlayout.utils.widget.ImageFilterView
        android:id="@+id/speak_image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_below="@+id/result_text"
        android:layout_centerHorizontal="true"
        android:src="@drawable/ic_mic" />
</RelativeLayout>

 

 

3. 메인 코드 구현 MainActivity.kt

- 설명 -

1.  ACTION_RECOGNIZE_SPEECH

  사용자에게 음성 묻고, 인식기를 통해 전송하는 활동 시작

2. EXTRA_LANGUAGE_MODEL

  음성 모델 설정

3. EXTRA_LANGUAGE

  음성인식 언어 설정

4. EXTRA_RESULTS

  음성인식 결과

class MainActivity : AppCompatActivity(){

    lateinit var resultText: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //입력창
        resultText = findViewById(R.id.result_text)

        //음성전환 버튼 이벤트
        val speakImage: ImageView = findViewById(R.id.speak_image)
        speakImage.setOnClickListener {

            val intent:Intent = 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(packageManager) != null){

                //음성 -> 텍스트 전환
                activityResult.launch(intent)

            }else{
                Toast.makeText(this, "당신의 장비가 음성을 텍스트로 변경하지 못합니다.",
                    Toast.LENGTH_SHORT).show()
            }

            intent.action = TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
            activityResult.launch(intent)

        }

    }//onCreate

    private val activityResult: ActivityResultLauncher<Intent> = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult(),){

        if(it.resultCode == RESULT_OK && it.data != null){
            var result: ArrayList<String> = it.data!!.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
                    as ArrayList<String>

            //음성 -> 텍스트에 보여주기
            resultText.text = result[0]
        }
    }
}

2022.06.30 - [안드로이드] - [안드로이드 코틀린] 전화 걸기(Intent.ACTION_VIEW) 기능 만들어보기

 

[안드로이드 코틀린] 전화 걸기(Intent.ACTION_VIEW) 기능 만들어보기

이번 시간에는 전화번호를 입력하고 버튼을 누르면 전화 거는 화면으로 이동하는 기능에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 메인 화면 구성 activity_main.xml 3. 메인 코드 구현 Main

aries574.tistory.com

2022.06.29 - [안드로이드] - [안드로이드 코틀린] 큐알코드(QR CODE) 스캔하는 방법

 

[안드로이드 코틀린] 큐알코드(QR CODE) 스캔하는 방법

이번 시간에는 큐알코드(QRCODE) 라이브러리를 추가해서 스캔하는 방법에 대하여 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 권한 등록 4. 메인 화면 구성 activity_main.xml 5. 메

aries574.tistory.com

2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

 

[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

안드로이드에서 앱 내부에 데이터를 관리하는 기능을 하는 Room 사용법에 대하여 알아보겠습니다. 이번 시간에는 기본 설정을 해보겠습니다. 아래 링크를 들어가시면 Room에 대한 상세한 정보를

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역