Redes Sociais
 Telegram  YouTube
Como transformar voz em texto(String) com Kotlin
18 de junho de 2020

Nesse tutorial vou demostrar como transformar voz em texto(String) com Kotlin para que você utilize os recursos de voz para inserir strings na aplicação.

Bom, neste aplicativo vamos fazer algo bem simples que é receber uma voz e transforma la em um texto.

Vamos utilizar da aplicação Google Assistente assim vamos ter que estar com ela instalada em nosso celular para que tudo funcione corretamente.

Primeiramente vamos criar um novo projeto vazio(Empty) com o nome de br.com.uware.vozparatexto para fazer a nossa aplicação.

Base do aplicativo

Então para começar vamos montar a base do nosso aplicativo começando pelo arquivo strings.xml.

<resources>
    <string name="app_name">Voz para Texto</string>

    <string name="speech_err">Erro ao abrir a intent com Google Assistente</string>
</resources>

Agora vamos adicionar um ícone de microfone com o nome de ic_mic.xml para que seja exibido em uma ImageView que quando clicada irá chamar a intent para gravar a voz.

Logo depois de ter adicionado o ícone vamos modificar o nosso layout para que tenha os componentes necessários.

Vamos então editar o nosso arquivo activity_main.xml para que fique com o seguinte código.

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/tvResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25dp"
        android:text="@string/app_name"
        android:gravity="center"
        app:layout_constraintBottom_toTopOf="@id/ivMic"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <ImageView
        android:id="@+id/ivMic"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_mic"
        android:layout_marginBottom="50dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>




Como transformar voz em texto com Kotlin

Com a base do aplicativo feita vamos então para a parte da programação da nossa MainActivity.

Vamos então deixar a nossa MainActivity.kt com o seguinte código para que quando clicado na ImageView ela crie uma intent para receber a voz e enviar o resultado que será colocado dentro de um TextView.

package br.com.uware.vozparatexto

import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.speech.RecognizerIntent
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*

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

        ivMic.setOnClickListener {
            // Criando intent
            val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
                putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
                putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault())
            }
            // Iniciando intent
            if(intent.resolveActivity(packageManager) != null) {
                startActivityForResult(intent, SPEECH_REQUEST_CODE)
            }
            else {
                Toast.makeText(this, R.string.speech_err, Toast.LENGTH_SHORT).show()
            }
        }
    }

    // Recebendo resultado da intent
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == SPEECH_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            val spokenText: String? =
                data?.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).let { results ->
                    results?.get(0)
                }
            tvResult.text = spokenText
        }
        super.onActivityResult(requestCode, resultCode, data)
    }

    // Código para receber o resultado
    companion object {
        private const val SPEECH_REQUEST_CODE = 0
    }
}

Agora é só compilar e executar que seu projeto já deve estar funcionando.

Para saber mais sobre o assunto acesse o site do Android Developers.

Enfim espero poder ter ajudado com mais este tutorial sobre como transformar voz em texto(String) com Kotlin.





Autor: Rodrigo Leutz

Desenvolvedor Web e Android ( Kotlin e Java )


Como pegar imagem da galeria e visualizar no ImageView Kotlin

Neste tutorial vou demonstrar como pegar imagem da galeria e visualizar no ImageView utilizando a linguagem de programação[...]

25 de abril de 2021

Como usar ROOM(SQLite) com kotlin no Android

Neste tutorial de como usar ROOM(SQLite) com kotlin no Android, escrevi esse pequeno aplicativo que apenas cria uma nota(tarefa) e tem um botão de[...]

20 de abril de 2021

Pegar endereço com CEP usando coroutines e retrofit em Kotlin

Nesse tutorial vou mostrar como fazer um aplicativo em MVVM para pegar endereço com CEP usando coroutines e retrofit em[...]

4 de novembro de 2020