¿Cómo convertir voz a texto en Android?

En este artículo, la función de voz a texto se implementa en una aplicación en Android. Voz a texto significa que todo lo que dice el usuario se convierte en texto. Esta característica se ha convertido en una característica muy común y útil para los usuarios. En varios lugares donde se implementa la función de búsqueda, como la Búsqueda de Google, también en aplicaciones como el teclado de Google, etc., porque brinda a los usuarios una gran experiencia. 

Acercarse:

Paso 1: agregue el siguiente código en activity_main.xml . Aquí se agrega una vista de imagen para el ícono del micrófono y una vista de texto para mostrar el texto que se convierte del discurso.

activity_main.xml

<?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">
  
    <ImageView
        android:id="@+id/iv_mic"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_marginTop="204dp"
        android:src="@drawable/ic_mic"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  
    <TextView
        android:id="@+id/tv_speech_to_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="44dp"
        android:textSize="30sp"
        android:padding="10dp"
        android:text="@string/tap_mic_and_speek"
        app:layout_constraintEnd_toEndOf="@+id/iv_mic"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="@+id/iv_mic"
        app:layout_constraintTop_toBottomOf="@+id/iv_mic" />
  
</androidx.constraintlayout.widget.ConstraintLayout>

Paso 2: agregue el siguiente código en MainActivity.java. Aquí, onClickListener se agrega con el ícono del micrófono, de modo que cuando el usuario hace clic en el ícono (imagen) del micrófono, se invoca.  RecognizerIntent.ACTION_RECOGNIZE_SPEECH se usa en el oyente que inicia una actividad que le pide al usuario que hable y lo envía a través de un reconocedor de voz. Los resultados se devolverán a través de los resultados de la actividad en el método onActivityResult() , cuando la intención se inicie con startActivityForResult() . En el método onActivityResult(), se devuelve una lista de strings y el texto se reemplaza con ella en la vista de texto.

MainActivity.java

class MainActivity extends AppCompatActivity(){
    private ImageView iv_mic;
    private TextView tv_Speech_to_text;
    private static final int REQUEST_CODE_SPEECH_INPUT = 1;
  
    @Override 
      protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        iv_mic = findViewById(R.id.iv_mic);
        tv_Speech_to_text = findViewById(R.id.tv_speech_to_text);
  
        iv_mic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
                Intent intent
                    = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,
                                Locale.getDefault());
                intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak to text");
  
                try {
                    startActivityForResult(intent, REQUEST_CODE_SPEECH_INPUT);
                }
                catch (Exception e) {
                    Toast
                        .makeText(MainActivity.this, " " + e.getMessage(),
                                  Toast.LENGTH_SHORT)
                        .show();
                }
            }
        });
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode,
                                    @Nullable Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_SPEECH_INPUT) {
            if (resultCode == RESULT_OK && data != null) {
                ArrayList<String> result = data.getStringArrayListExtra(
                    RecognizerIntent.EXTRA_RESULTS);
                tv_Speech_to_text.setText(
                    Objects.requireNonNull(result).get(0));
            }
        }
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por introidx y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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