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!