¿El reconocedor de voz de Google en Android necesita Internet?
Utilizo el siguiente código para invocar el reconocimiento de voz por google:
// This is a demonstration of Android's built in speech recognizer package com.example.voiceinputbuiltintest; import java.util.ArrayList; import java.util.Locale; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.speech.RecognizerIntent; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private static final int VOICE_RECOGNITION = 1; Button speakButton ; TextView spokenWords; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); speakButton = (Button) findViewById(R.id.button1); spokenWords = (TextView)findViewById(R.id.textView1); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION && resultCode == RESULT_OK) { ArrayList<String> results; results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); // TODO Do something with the recognized voice strings Toast.makeText(this, results.get(0), Toast.LENGTH_SHORT).show(); spokenWords.setText(results.get(0)); } super.onActivityResult(requestCode, resultCode, data); } public void btnSpeak(View view){ Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); // Specify free form input intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_PROMPT,"Please start speaking"); intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.ENGLISH); startActivityForResult(intent, VOICE_RECOGNITION); } }
Esto funciona sin conexión de red en mi máquina de prueba que es Nexus 7 con Android 4.3. Pensé que funcionaría igual en cualquier dispositivo androide. Sin embargo, cuando lo pruebo en Samsung Galaxy S2 con la versión de Android gingerbread.el21, la actividad de reconocimiento de voz aparece, pero dice que necesita conexión a la red y se niega a trabajar. ¿Por qué funciona en Nexus 7 y no en Galaxy S2? ¿Funciona sin conexión o necesita conexión de red? Funciona en el Nexus 7 incluso cuando paro el wifi.
- RecognizerIntent no funciona; "Falta paquete de llamada extra"
- Código fuente de reconocimiento de voz google
- Segmentación de una voz
- RecognitionListener callback to onError llamado varias veces con el mismo código de error
- ¿Cómo mantiene Google Keep Speech Recognition mientras se guarda la grabación de audio al mismo tiempo?
- Reconocimiento de voz activado por palabra clave en android
- Aplicación de Android integrada con OK Google
- ¿Cómo crear una acción de voz personalizada para mi aplicación?
- Cómo implementar un reconocedor de voz en android- "Reconocimiento no presente"?
- ¿Puedo usar Android SpeechRecognition en un Kindle Fire HD?
- Desarrollo de la nueva acción "Escuchar" en Android
- API de detección de hotword sin conexión en Android
- ¿Hay algún equivalente para el uso RemoteInput.setChoices, pero para el teléfono?
En jellybean el usuario necesita descargar el paquete de reconocimiento de voz offline.
Este artículo dice:
Anteriormente, cuando pulsó el icono de voz y pronunció un comando o una consulta, Android tuvo que digitalizar su voz, subirla a la nube, procesar la forma de onda, convertirla en texto y enviar el texto a su teléfono. Ahora los teléfonos son lo suficientemente potentes como para poder ser incorporados en el dispositivo, sin necesidad de red adicional de E / S. Como se puede imaginar esto se traduce en un reconocimiento de voz mucho más rápido que las versiones anteriores.
El usuario de la aplicación tendrá que hacer esto :
- Vaya a "Idioma y entrada" en el ajuste
- Pulse en "Descargar reconocimiento de voz en línea" en la sección "Búsqueda de voz"
- Elija el paquete de idioma que desea que su dispositivo Android reconozca
- Descargue el paquete y disfrute de la escritura de voz sin conexión
Otro enlace auxiliar:
Google ha restringido ciertos dispositivos Jelly Bean de usar el reconocimiento offline debido a restricciones de hardware.
- Obtención de velocidad de datos de la red wifi / móvil mediante programación
- Filtra una lista de objetos en Android usando gradle-retrolambda y Lightweight-Stream-API