이번 시간에는 음성을 텍스트로 전환시켜주는 방법을 알아보겠습니다.
- 설명 -
1. 음성을 텍스트로 보여주는 TextView
2. 음성을 텍스트로 변경하는 Button
3. res -> drawable
<?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>
- 설명 -
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) 기능 만들어보기
2022.06.29 - [안드로이드] - [안드로이드 코틀린] 큐알코드(QR CODE) 스캔하는 방법
2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정
[안드로이드 코틀린] 스피너(spinner) 드롭다운 사용방법 (0) | 2022.07.11 |
---|---|
[안드로이드 코틀린] 자동완성 텍스트뷰 쉽게 만드는 방법 (0) | 2022.07.10 |
[안드로이드 코틀린] TextToSpeech 텍스트(Text)를 음성으로 전환시켜주는 방법 (0) | 2022.07.08 |
[안드로이드 코틀린] 다이얼로그(Dialog) 사용자정의 (Custom) 화면으로 보여주는 방법 (0) | 2022.07.07 |
[안드로이드 코를린] 다이얼로그(Dialog) 체크박스(CheckBox)로 보여주는 방법 (0) | 2022.07.06 |
댓글 영역