Como hacer una aplicacion reconocimiento de voz en android studio


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:

Como hacer una aplicación reconocimiento de voz en kotlin

0

¿Tiene alguna pregunta o comentario?

38 comments on “Como hacer una aplicacion reconocimiento de voz en android studio

De nada Alejandro, sácale provecho

0
Reply

Gracias por el aporte, se agradece mucho para los que recien nos adentramos en la programacion en android studio

0
Reply

Que bueno que te sirvió, sácale provecho.

0
Reply

¡¡Excelente aporte!! ¿Qué libros me recomiendas para indagar sobre el reconocimiento de voz en android studio?

0
Reply

Genial gracias cuando aprenda Java lo miraré..

0
Reply

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

0
Reply

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

0
Reply
Anónimo

Muy bueno el aporte. Que me aconseja para hacer una aplicación android para controlar un relé. desde ya gracias.

0
Reply

Hola @Anonimo envíame un correo a: [email protected] con el asunto del rele y te envió algo de informacion

0
Reply
Anónimo

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

0
Reply

Saludos, en teoría se podría, pero seria mas complicado, tendría que verse algoritmos,APIS, permisos y mas cosas.

0
Reply

A ok gracias, si con apis google responde, pero pense que podria ser algo mas simple o haber codigos para ellos, salufos

0
Reply

Describreme exactamrnte para y que deseas y talvez pueda echarte una mano

0
Reply

Si puedes darme tu correo, e ir interactuando alli seria mas facil saludos

0
Reply
Anónimo

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

0
Reply
Anónimo

como lo puedo hacer en un fragment?

0
Reply

hola, disculpa me sirvio mucho tu codigo y me puedes dar uno para que responda como un asistente personal

0
Reply

en fragment para utilizar el findbyid tienes que poner antes un getview despues de tu (TextView)

0
Reply

Hola excelente aporte¡¡
Hay la posibilidad que cuando abra la aplicación se active automáticamente el micrófono??'
obviando el botón

0
Reply

Prueba con
ImageButton img_btn_hablar = (Button)findViewById(R.id.img_btn_hablar);
img_btn_hablar.performClick();

en el onCreate
e

0
Reply
Daniel

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

0
Reply

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.

0
Reply
luis

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.

0
Reply

Si te das cuenta las letras se muestran en un textview, entonces es como guardar cualquier textview.

0
Reply
Laura

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!

0
Reply

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.

0
Reply

te conteste por youtube

1+
Reply
Douglas Lopez

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

0
Reply

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

0
Reply
Santos

Primero que nada gracias por el ejemplo.
Ahora estoy queriendo desarrolla una app de reconocimiento de voz igual que este ejemplo solo que al momento de abrir la app automáticamente empiece a funcionar el reconocimiento de voz por comando y no me salga el cuadro google. Te agradecería muchísimo si me puedes ayudar con ideas o algún enlace que me ayude como guía,

0
Reply

En este ejemplo siempre te mostrara ese cuadro de google, pues la librería les pertenece, quizás si compras una licencia te permitan quitarlos, pero te costara muchos $$$

0
Reply
Lizzy

Hola me podrías ayudar, no se por que me manda error en esta parte.
Justo en las R
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
grabar = (TextView) findViewById(R.id.txtGrabarVoz);

0
Reply
ramon

hola estoy buscando una app que pueda hacer lo siguiente: que reconozca una palabra o frase, y que reproduzca un audio de mp3. lo necesito para un proyecto y quiero que esos mp3 tengan una voz grabada de tal forma que parezca que yo pregunto y el android contesta, pero en realidad sea un archivo mp3 lo que se ejecute. es posible ? pueden escribirme por favor y asi les cuento mi proyecto ?
gracias

0
Reply
ramon

Hola alguien me podria ayudarme ?
necesito crear una app de reconocimiento de voz, que lance archivos mp3 o archivos wav mediante la voz
seria crear una carpeta con los mp3 dentro, y que yo pueda crear cada orden, bien sea con un archivo de texto, o meidante un codigo como este y cada vez que ponga mas ordenes, actualizar el que tengo a creado en el movil
es posible ?

me ayudais ?

[email protected]
Ramon

0
Reply

[…] PARA DESCARGAR  DESCARGAR GRATIS Password: www.androfast.com Enlace de Interés: como crear una aplicación con reconocimiento de voz (adsbygoogle = window.adsbygoogle || []).push({}); […]

0

[…] 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 […]

0

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *