English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Implementación sencilla de reconocimiento de voz en Android y código de ejemplo

Llamar al programa de reconocimiento de voz utilizando Intent

Descripción

En Android, el reconocimiento de voz se realiza principalmente a través de RecognizerIntent, en realidad el código es bastante simple, pero si no se puede encontrar el dispositivo de reconocimiento de voz, se lanzará una excepción ActivityNotFoundException, por lo que necesitamos capturar esta excepción. Además, el reconocimiento de voz no se puede probar en el emulador, porque el reconocimiento de voz accede a los datos en la nube de Google, por lo que si el teléfono no tiene activada la red, ¡no se puede realizar el reconocimiento de voz! ¡Es muy importante activar la red del teléfono, incluso si el teléfono no tiene la función de reconocimiento de voz, también no se puede activar!

Atención: antes de usarlo, es necesario instalar el programa de reconocimiento de voz. Por ejemplo, 'Búsqueda de Voz', que utiliza la tecnología de reconocimiento de voz de Google, y el Intent puede identificar este programa.

Este ejemplo se refiere a los ejemplos de android:

desarrollo/samples/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java

Código y descripción del núcleo

package com.example.test;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends Activity implements OnClickListener {
 private static final int VOICE_RECOGNITION_REQUEST_CODE = 1234;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  Button btn = (Button) findViewById(R.id.btn); // Botón de reconocimiento
  PackageManager pm = getPackageManager();
  List activities = pm.queryIntentActivities(new Intent();
    RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); // programa de reconocimiento local
  // new Intent(RecognizerIntent.ACTION_WEB_SEARCH), 0); // programa de reconocimiento en línea
  /*
   * en lugar de capturar la excepción, se verifica si hay un programa de reconocimiento de voz
   * también se puede capturar la excepción ActivityNotFoundException en el método startRecognizerActivity()
   */
  if (activities.size() != 0) {
   btn.setOnClickListener(this);
  } else {
   // si no se detecta el programa de reconocimiento de voz instalado en el dispositivo, se desactivará el botón
   btn.setEnabled(false);
   btn.setText("No se detectó dispositivo de reconocimiento de voz");
  }
 }
 public void onClick(View v) {
  if (v.getId() == R.id.btn) {
   startRecognizerActivity();
  }
 }
 // comenzar el reconocimiento
 private void startRecognizerActivity() { 
  // transmitir el modo de reconocimiento de voz a través de Intent, iniciando el reconocimiento
  Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
  // modelos de lenguaje y reconocimiento de voz en modo libre
  intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
    RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
  // indicar el inicio del reconocimiento de voz
  intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Comenzar reconocimiento de voz");
  // comenzar el reconocimiento de voz
  startActivityForResult(intent, VOICE_RECOGNITION_REQUEST_CODE);
  // invocar la interfaz de reconocimiento
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  // se obtienen datos de Google
  if (requestCode == VOICE_RECOGNITION_REQUEST_CODE
    && resultCode == RESULT_OK)
   // Obtener los caracteres de voz
   ArrayList<String> results = data
     .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
   String resultString = "";
   for (int i = 0; i < results.size(); i++) {
    resultString += results.get(i);
   }
   Toast.makeText(this, resultString, Toast.LENGTH_SHORT).show();
  }
  // Vuelta de llamada después del reconocimiento de voz, mostrará la cadena reconocida con Toast
  super.onActivityResult(requestCode, resultCode, data);
 }
}

Su principio principal es enviar el audio al nube de Google, luego procesar en la nube, coincidir con los datos correspondientes y enviarlos al cliente.

No olvide agregar el permiso de acceso a la red en el manifest:

<uses-permission android:name="android.permission.INTERNET" />

Efecto después de ejecutar:

Aquí está la recopilación de información sobre la implementación de reconocimiento de voz en Android, continuaremos complementando información relevante, ¡gracias por el apoyo a este sitio!

Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial manual y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará