Est-ce possible sans modifier les API Android? J'ai trouvé un article à ce sujet. Il y a un commentaire selon lequel je devrais apporter des modifications aux API Android. Mais il n'a pas dit comment faire la modification. Quelqu'un peut-il me donner des suggestions sur la façon de procéder? Merci!
J'ai trouvé cet article; SpeechRecognizer Ses besoins sont presque les mêmes que les miens. C'est une bonne référence pour moi!
J'ai totalement résolu ce problème.
J'ai recherché sur Google un exemple de code utilisable sur ce site Web chinois
Voici mon code source
package voice.recognition.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import android.util.Log;
public class voiceRecognitionTest extends Activity implements OnClickListener
{
private TextView mText;
private SpeechRecognizer sr;
private static final String TAG = "MyStt3Activity";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button speakButton = (Button) findViewById(R.id.btn_speak);
mText = (TextView) findViewById(R.id.textView1);
speakButton.setOnClickListener(this);
sr = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener(new listener());
}
class listener implements RecognitionListener
{
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech");
}
public void onBeginningOfSpeech()
{
Log.d(TAG, "onBeginningOfSpeech");
}
public void onRmsChanged(float rmsdB)
{
Log.d(TAG, "onRmsChanged");
}
public void onBufferReceived(byte[] buffer)
{
Log.d(TAG, "onBufferReceived");
}
public void onEndOfSpeech()
{
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error)
{
Log.d(TAG, "error " + error);
mText.setText("error " + error);
}
public void onResults(Bundle results)
{
String str = new String();
Log.d(TAG, "onResults " + results);
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (int i = 0; i < data.size(); i++)
{
Log.d(TAG, "result " + data.get(i));
str += data.get(i);
}
mText.setText("results: "+String.valueOf(data.size()));
}
public void onPartialResults(Bundle partialResults)
{
Log.d(TAG, "onPartialResults");
}
public void onEvent(int eventType, Bundle params)
{
Log.d(TAG, "onEvent " + eventType);
}
}
public void onClick(View v) {
if (v.getId() == R.id.btn_speak)
{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);
sr.startListening(intent);
Log.i("111111","11111111");
}
}
}
Assurez-vous de supprimer les journaux ennuyeux après le débogage!
android
speech-recognition
speech
Jim31837
la source
la source
<uses-permission android:name="android.permission.RECORD_AUDIO" />
dans votre fichier AndroidManifest.xml sinon SpeechRecognizer ne capturera aucun audioRéponses:
Utilisez l' interface SpeechRecognizer . Votre application doit disposer de l'autorisation RECORD_AUDIO, et vous pouvez ensuite créer un SpeechRecognizer, lui attribuer un RecognitionListener , puis appeler sa
startListening
méthode. Vous obtiendrez des rappels à l'auditeur lorsque le module de reconnaissance vocale sera prêt à commencer à écouter la parole et lorsqu'il recevra la parole et la convertira en texte.la source
has leaked ServiceConnection android.speech.SpeechRecognizer$Connection@414f0e40 that was originally bound here
erreurGAST a une classe abstraite pratique que vous pouvez utiliser pour utiliser la
SpeechRecognizer
classe avec très peu de nouveau code. Il existe également un exemple d'exécution duSpeechRecognizer
service d'arrière-plan en utilisant ceci et celala source
Merci d'avoir publié ceci! J'ai trouvé utile de définir l'écouteur onclick dans oncreate:
la source
Je finis par faire un projet Github pour convertir du texte en parole et de la parole en texte sans dialogue ennuyeux,
https://github.com/hiteshsahu/Android-TTS-STT/tree/master/app/src/main/java/com/hiteshsahu/stt_tts/translation_engine
la source