Quiero usar la API de texto a api en Android, pero no quiero que me frenen esos cuadros de diálogo. ¿Es posible usar la funcionalidad sin ellos?¿Es posible utilizar el reconocimiento de voz de Android sin mostrar el cuadro de diálogo?
Respuesta
Nº
The Intent para el reconocimiento de voz muestra el diálogo y no hay opciones para desactivar mostrarlo.
También debe saber que la función de reconocimiento de voz requiere una conexión a Internet para que el sonido pueda cargarse en Google para su reconocimiento.
¿Qué hay de la API de Google? ¿Existe como un servicio web para convertir audio a texto? Si es así, ¿es eso lo que usa el intento de Android? – mobibob
http://stackoverflow.com/a/10200568/679180 – srf
Estoy bastante seguro de que la cosa sobre la necesidad de conectarse a Internet es incorrecta. Apagué el wifi de mi dispositivo y lo puse en modo wifi, y aún así funcionó. Si usa FREE_FORM para RecognitionIntent, no debería requerir internet. – FateNuller
sí es posible:
Usted puede utilizar la clase SpeechRecognizer de la API. Asegúrate de que se usa en el hilo principal, según se requiera de acuerdo con la API, y que tu clase implemente el RecognitionListener.
private SpeechRecognizer speech;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "en");
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
speech.startListening(intent);
}
@Override
public void onBeginningOfSpeech()
{
}
@Override
public void onBufferReceived(byte[] arg0)
{
}
@Override
public void onEndOfSpeech()
{
}
@Override
public void onError(int e)
{
}
@Override
public void onEvent(int arg0, Bundle arg1)
{
}
@Override
public void onPartialResults(Bundle arg0)
{
}
@Override
public void onReadyForSpeech(Bundle arg0)
{
}
@Override
public void onResults(Bundle data)
{
ArrayList<String> matches = data.getStringArrayList(
SpeechRecognizer.RESULTS_RECOGNITION);
// Do something useful with the matches =)
// ...
}
@Override
public void onRmsChanged(float arg0)
{
}
esto reconocerá el habla solo la primera vez, cómo continuar reconociendo el habla .... –
@PradeepSodhi ¿Lo descubriste pradeep? ¡Por favor hagamelo saber! –
Podría volver a llamar a speech.startListening (...) si definió la intención de proporcionarse y el SpeechRecognizer dentro de la clase, en lugar del método onCreate. (Ya no estoy usando el habla, así que es solo una suposición.) – Knots
tratar este código
import java.util.ArrayList;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.ToggleButton;
public class VoiceRecognitionActivity extends Activity implements RecognitionListener {
private TextView returnedText;
private ToggleButton toggleButton;
private ProgressBar progressBar;
private SpeechRecognizer speech = null;
private Intent recognizerIntent;
private String LOG_TAG = "VoiceRecognitionActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_voice_recognition);
returnedText = (TextView) findViewById(R.id.textView1);
progressBar = (ProgressBar) findViewById(R.id.progressBar1);
toggleButton = (ToggleButton) findViewById(R.id.toggleButton1);
progressBar.setVisibility(View.INVISIBLE);
speech = SpeechRecognizer.createSpeechRecognizer(this);
speech.setRecognitionListener(this);
recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE,"en");
recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,this.getPackageName());
recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
recognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
progressBar.setVisibility(View.VISIBLE);
progressBar.setIndeterminate(true);
speech.startListening(recognizerIntent);
} else {
progressBar.setIndeterminate(false);
progressBar.setVisibility(View.INVISIBLE);
speech.stopListening();
}
}
});
}
@Override
public void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
if (speech != null) {
speech.destroy();
Log.i(LOG_TAG, "destroy");
}
}
@Override
public void onBeginningOfSpeech() {
Log.i(LOG_TAG, "onBeginningOfSpeech");
progressBar.setIndeterminate(false);
progressBar.setMax(10);
}
@Override
public void onBufferReceived(byte[] buffer) {
Log.i(LOG_TAG, "onBufferReceived: " + buffer);
}
@Override
public void onEndOfSpeech() {
Log.i(LOG_TAG, "onEndOfSpeech");
progressBar.setIndeterminate(true);
toggleButton.setChecked(false);
}
@Override
public void onError(int errorCode) {
String errorMessage = getErrorText(errorCode);
Log.d(LOG_TAG, "FAILED " + errorMessage);
returnedText.setText(errorMessage);
toggleButton.setChecked(false);
}
@Override
public void onEvent(int arg0, Bundle arg1) {
Log.i(LOG_TAG, "onEvent");
}
@Override
public void onPartialResults(Bundle arg0) {
Log.i(LOG_TAG, "onPartialResults");
}
@Override
public void onReadyForSpeech(Bundle arg0) {
Log.i(LOG_TAG, "onReadyForSpeech");
}
@Override
public void onResults(Bundle results) {
Log.i(LOG_TAG, "onResults");
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
String text = "";
for (String result : matches)
text += result + "\n";
returnedText.setText(text);
}
@Override
public void onRmsChanged(float rmsdB) {
Log.i(LOG_TAG, "onRmsChanged: " + rmsdB);
progressBar.setProgress((int) rmsdB);
}
public static String getErrorText(int errorCode) {
String message;
switch (errorCode) {
case SpeechRecognizer.ERROR_AUDIO:
message = "Audio recording error";
break;
case SpeechRecognizer.ERROR_CLIENT:
message = "Client side error";
break;
case SpeechRecognizer.ERROR_INSUFFICIENT_PERMISSIONS:
message = "Insufficient permissions";
break;
case SpeechRecognizer.ERROR_NETWORK:
message = "Network error";
break;
case SpeechRecognizer.ERROR_NETWORK_TIMEOUT:
message = "Network timeout";
break;
case SpeechRecognizer.ERROR_NO_MATCH:
message = "No match";
break;
case SpeechRecognizer.ERROR_RECOGNIZER_BUSY:
message = "RecognitionService busy";
break;
case SpeechRecognizer.ERROR_SERVER:
message = "error from server";
break;
case SpeechRecognizer.ERROR_SPEECH_TIMEOUT:
message = "No speech input";
break;
default:
message = "Didn't understand, please try again.";
break;
}
return message;
}
}
activity_voice_recognition.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@drawable/ic_launcher" />
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/toggleButton1"
android:layout_marginTop="28dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/progressBar1"
android:layout_centerHorizontal="true"
android:layout_marginTop="47dp" />
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"
android:text="ToggleButton" />
</RelativeLayout>
AndroidManifest.xml
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rakesh.voicerecognitionexample"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".VoiceRecognitionActivity"
android:label="@string/title_activity_voice_recognition" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
- 1. ¿Cómo puedo usar el reconocimiento de voz sin el molesto diálogo en teléfonos Android
- 2. Reconocimiento de voz sin Internet en Android
- 3. Reconocimiento continuo de voz Android
- 4. Reconocimiento de voz para android
- 5. C# reconocimiento de voz
- 6. Mostrar el cuadro de diálogo "abrir con" en Android
- 7. ¿Está ocupado el servicio de reconocimiento de voz de Android?
- 8. Cómo mostrar el icono apropiado en el cuadro de diálogo
- 9. cómo funciona el reconocimiento de voz en android?
- 10. reconocimiento de voz Java
- 11. Mostrar el teclado virtual para el cuadro de diálogo
- 12. Gramática simple para el reconocimiento de voz
- 13. Mejore el reconocimiento de voz, C#
- 14. C# Reconocimiento de voz
- 15. C# reconocimiento de voz
- 16. ¿Por qué es difícil el reconocimiento de voz?
- 17. Android IME: ¿cómo mostrar un cuadro de diálogo emergente?
- 18. Mostrar el cuadro de diálogo del selector de archivos
- 19. En el cuadro de diálogo de la IU de jquery, es posible colocar un cuadro de diálogo modal sobre otro cuadro de diálogo modal
- 20. Reconocimiento de voz en Kinect
- 21. Reconocimiento de voz en iPhone
- 22. API de reconocimiento de voz Java
- 23. ¿es posible reemplazar el cuadro de diálogo predeterminado "Forzar cierre" en Android?
- 24. Reconocimiento de voz en PHP?
- 25. ¿Puedo usar el dictado/reconocimiento de voz de OS X 10.8 sin una GUI?
- 26. Cuadro de diálogo de alerta en android
- 27. ¿Cómo puedo mostrar el cuadro de diálogo "Abrir con"?
- 28. Android: cuadro de diálogo sin sombra alrededor de él
- 29. Vista Reconocimiento de voz en Delphi
- 30. Android: mostrar el cuadro de diálogo personalizado en el centro del contenedor
posible duplicado de [¿Cómo puedo utilizar el reconocimiento de voz sin la molestia de diálogo en teléfonos Android ] (http://stackoverflow.com/questions/6316937/how-can-i-use-speech-recognition-without-the-annoying-dialog-in-android-phones) –