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