web-dev-qa-db-fra.com

Comment masquer le pain grillé "Votre audio sera envoyé à Google pour fournir un service de reconnaissance vocale." dans la reconnaissance vocale?

enter image description here

J'utilise Google Recognizer pour l’intégration de services vocaux dans Android, mais en appuyant sur le bouton micro, ce message de pain grillé gênant s’affiche. Veuillez me suggérer un moyen de le cacher.

Merci

3

Si votre appareil est enraciné, vous pouvez masquer la notification, mais pas empêcher le son d'être envoyé à Google.

Installez Xposed Framework et le module UnToaster Xposed, puis ajoutez: Com.google.Android.googlequicksearchbox

1
dzhimc

Vous pouvez donc personnaliser votre outil de reconnaissance vocale en le construisant vous-même. J'ai écrit ce code sur xamarin.Android, il devrait donc être assez similaire.

Public class CustomRecognizer : Java.Lang.Object, IRecognitionListener, 

TextToSpeech.IOnInitListener
{
private SpeechRecognizer _speech;
private Intent _speechIntent;


public string Words;


public CustomRecognizer(Context _context)
{
    this._context = _context;
    Words = "";
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);
    _speechIntent.PutExtra(RecognizerIntent.ActionRecognizeSpeech, RecognizerIntent.ExtraPreferOffline);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000); 
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
}

void startover()
{
    _speech.Destroy();
    _speech = SpeechRecognizer.CreateSpeechRecognizer(this._context);
    _speech.SetRecognitionListener(this);
    _speechIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1000);
    _speechIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 1500);
StartListening();
}
public void StartListening()
{
    _speech.StartListening(_speechIntent);
}

public void StopListening()
{
    _speech.StopListening();
}

public void OnBeginningOfSpeech()
{

}

public void OnBufferReceived(byte[] buffer)
{
}

public void OnEndOfSpeech()
{
  startover();
}

public void OnError([GeneratedEnum] SpeechRecognizerError error)
{
    Words = error.ToString();
    startover();
}

  public void OnResults(Bundle results)
  {
    var matches = results.GetStringArrayList(SpeechRecognizer.ResultsRecognition);
    //do whatever you want for the result
  }

Mon code est un type de reconnaissance continue, c'est pourquoi j'ai mis startover () à chaque fin du discours. Mais vous pouvez personnaliser cela en créant votre propre interface utilisateur, etc., appelez simplement startover (); pour commencer le discours.