Buenas a pedido de un amigo en Chile vamos hacer una aplicación con reconocimiento de voz y luego atrapar lo que se diga en un texview.
sin mas demoras empezamos…..
necesitamos
un ImageButton
un TextView

reconocimiento de voz
activity_main
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.androidmorefast.moden.appreconocmientovoz.MainActivity"> <ImageButton android:id="@+id/img_btn_hablar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:contentDescription="@string/app_name" android:onClick="onClickImgBtnHablar" android:background="@drawable/microfono" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/txtGrabarVoz" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:phoneNumber="false" android:textSize="30dp" /> </RelativeLayout>
MainActivity
import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Intent; import android.speech.RecognizerIntent; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; public class MainActivity extends Activity { TextView grabar; private static final int RECOGNIZE_SPEECH_ACTIVITY = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); grabar = (TextView) findViewById(R.id.txtGrabarVoz); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case RECOGNIZE_SPEECH_ACTIVITY: if (resultCode == RESULT_OK && null != data) { ArrayList<String> speech = data .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); String strSpeech2Text = speech.get(0); grabar.setText(strSpeech2Text); } break; default: break; } } public void onClickImgBtnHablar(View v) { Intent intentActionRecognizeSpeech = new 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 (ActivityNotFoundException a) { Toast.makeText(getApplicationContext(), "Tú dispositivo no soporta el reconocimiento por voz", Toast.LENGTH_SHORT).show(); } } }
Ahora es importante que demos permisos a nuestra app, esto lo haremos dentro de nuestro AndroidManifest
AndroManifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androidmorefast.moden.appreconocmientovoz"> <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: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 android lo escribirá
Por si te interesa también tenemos el mismo ejercicio en kotlin:
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!
gracias por el codigo
De nada Alejandro, sácale provecho
Gracias por el aporte, se agradece mucho para los que recien nos adentramos en la programacion en android studio
Que bueno que te sirvió, sácale provecho.
¡¡Excelente aporte!! ¿Qué libros me recomiendas para indagar sobre el reconocimiento de voz en android studio?
Genial gracias cuando aprenda Java lo miraré..
Hola en si, no hay libros que traten sobre ese tema pero hay documentación que podrías revisar y sacar provecho en el siguiente enlace: https://developer.android.com/reference/android/speech/RecognizerIntent.html
Perfecto, siempre escuchado que recomiendan entrar al mundo de java antes de aventurarse en Android, pero sucede lo contrario conmigo, java me parece un poco aburrido. porque siempre me orientaron hacer sistemas de ventas o gestión, en cambio android me da mil posibilidades de crear una aplicación interesante y tal vez loca…saludos
Muy bueno el aporte. Que me aconseja para hacer una aplicación android para controlar un relé. desde ya gracias.
Hola @Anonimo envíame un correo a: [email protected] con el asunto del rele y te envió algo de informacion
Me gusto tu aporte, he estado buscando varios codigos de reconocimiento de voz y al fin pude encontrar uno, pero mi pregunta es la siguiente… habrá la posibilidad de que este mismo responda de igual forma (hablando)? Salufos y espero tu comebtario
Saludos, en teoría se podría, pero seria mas complicado, tendría que verse algoritmos,APIS, permisos y mas cosas.
A ok gracias, si con apis google responde, pero pense que podria ser algo mas simple o haber codigos para ellos, salufos
Describreme exactamrnte para y que deseas y talvez pueda echarte una mano
Si puedes darme tu correo, e ir interactuando alli seria mas facil saludos
hola disculpa soy nuevo en android Studio sera que podría hacerte algunas preguntas sobre tu código a través del correo , de antemano gracias
como lo puedo hacer en un fragment?
hola, disculpa me sirvio mucho tu codigo y me puedes dar uno para que responda como un asistente personal
en fragment para utilizar el findbyid tienes que poner antes un getview despues de tu (TextView)
Hola excelente aporte¡¡
Hay la posibilidad que cuando abra la aplicación se active automáticamente el micrófono??'
obviando el botón
Prueba con
ImageButton img_btn_hablar = (Button)findViewById(R.id.img_btn_hablar);
img_btn_hablar.performClick();
en el onCreate
e
muchas gracias
Pingback: Como crear una grabadora de audio en android studio | ANDROFAST
Muy buen código, pero hay la posibilidad de hacer lo mismo, pero no ocupar las plataforma de google, si no que el celular sea el encargado de realizar el reconocimiento de voz
Claro que se puede Daniel tienes dos opciones o creas tu propia librería de voz o te descargas alguna de internet que son de código abierto.
Hola alex,muchas gracias por tu aporte .Bueno quería consultarte como haría si yo quisiera dictar y al mismo tiempo quiero que se guarde el audio que dicte.¿se puede ?¿como lo haría ?.
Te agradecería un montón si se pudiera y me dijeras.
Si te das cuenta las letras se muestran en un textview, entonces es como guardar cualquier textview.
Gracias por compartir, pero tengo una duda, que librería se ocuparía para el reconocimiento de acordes.
Ejemplo si hago un SOL en la guitarra la app la reconozca.
Gracias!
Gracias por tu aporte. Estoy tratando de usar https://0110.be/posts/TarsosDSP_on_Android_-_Audio_Processing_in_Java_on_Android y me da un error en la primera instruccion:
AudioDispatcher dispatcher = AudioDispatcherFactory.fromDefaultMicrophone(22050,1024,0);
Inclui la libreria de Tarsos en libs y si la reconoce. Pero el error dice que cierre la aplicacion porque se ha producido un error.
Conoces de otra libreria para detection de audio?
Trato ahora de combinar conocimientos musicales con android. Gracias. Saludos desde Caracas-Venezuela
Te agradezco mucho tu ayuda.
te conteste por youtube
Pingback: Como hacer una aplicación reconocimiento de voz en kotlin - ANDROFAST
Gracias Alex, ya solucioné. Instalé el APK en mi celular y función bien. El problema está en el simulador.
Un abrazo y una vez mas, gracias por todo. El codigo convertido a Kotlin te lo envie por tu email.
Douglas Lopez – Caracas – Venezuela
Que bueno que lo solucionaste igual el enlace del mismo ejercicio en kotlin estaba en el siguiente link: https://www.androfast.com/2018/10/como-hacer-una-aplicacion-reconocimiento-de-voz-en-kotlin.html