Hola amigos hoy veremos como crear una aplicación de reconocimiento de voz en kotlin
la idea de este ejercicio es que nosotros hablemos cualquier frase y la app reconozca lo que hablamos y luego lo muestre por pantalla del móvil.
Este ejercicio lo habíamos tocado muchos meses atrás y estaba construido en java, en aquel entonces no existía aun kotlin en fin si quieres echarle un vistazo te dejo el enlace: Como hacer una aplicación reconocimiento de voz en android studio
Primero necesitamos agregar un textview y un imagebutton, para que sea vea la imagen del micrófono, no se preocupen también les dejare la imagen del micrófono esta debe estar guardad en la carpeta Drawable.

Imagen del micrófono:

Te dejo el modo texto de la parte gráfica por si te interesa.
activity_main
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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="com.androfast.server.appconvertiraudioletrakotlin.MainActivity">
<TextView
android:id="@+id/txtMostrar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.48"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.156" />
<ImageButton
android:id="@+id/btnMostrar"
android:layout_width="156dp"
android:layout_height="149dp"
android:layout_marginTop="92dp"
android:background="@drawable/microfono"
android:onClick="hablar"
android:text="Button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtMostrar" />
</android.support.constraint.ConstraintLayout>
Ahora te dejo la clase mainActivity
MainActivity
import android.app.Activity
import android.content.ActivityNotFoundException
import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.speech.RecognizerIntent
import android.view.View
import android.widget.TextView
import android.widget.Toast
class MainActivity : AppCompatActivity() {
var grabar: TextView? = null
private val RECOGNIZE_SPEECH_ACTIVITY = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
grabar = findViewById(R.id.txtMostrar)
}
override fun onActivityResult(requestCode: Int, resultCode: Int,
data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
RECOGNIZE_SPEECH_ACTIVITY ->
if (resultCode == Activity.RESULT_OK && null != data) {
val speech = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)
val strSpeech2Text = speech[0]
grabar?.setText(strSpeech2Text)
}
else -> {
}
}
}
fun hablar(v: View) {
val intentActionRecognizeSpeech = Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
// Configura el Lenguaje (Español-México)
intentActionRecognizeSpeech.putExtra(
RecognizerIntent.EXTRA_LANGUAGE_MODEL, "es-MX")
try {
startActivityForResult(intentActionRecognizeSpeech,
RECOGNIZE_SPEECH_ACTIVITY)
} catch (a: ActivityNotFoundException) {
Toast.makeText(applicationContext,
"Tú dispositivo no soporta el reconocimiento por voz",
Toast.LENGTH_SHORT).show()
}
}
}
Ahora debemos ir a nuestro AndroidManifest y agregar algunos permisos
AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androfast.server.appconvertiraudioletrakotlin">
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Y el resultado seria algo como esto, todo lo que hablen en la app android lo convertirá a letras

Si te interesa también tenemos el mismo ejercicio en java para Android:
Como hacer una aplicacion reconocimiento de voz en android studio
Hola soy Alex Céspedes fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!