如何隐藏吐司“您的音频将被发送到谷歌提供语音识别服务。”在语音识别器中?

时间:2018-05-17 13:05:52

标签: android speech-recognition

enter image description here

我正在使用谷歌语音识别器在Android中集成语音服务,但在按下麦克风时,这个恼人的吐司信息正在显示。请给我一个隐藏此信息的方法。

由于

2 个答案:

答案 0 :(得分:1)

如果您的设备已植根,则可以隐藏通知,但不能阻止将音频发送给Google。

安装Xposed框架和模块UnToaster Xposed,然后添加: com.google.android.googlequicksearchbox

答案 1 :(得分:0)

因此,您可以通过自己构建语音识别器来自定义语音识别器。我在xamarin.android上编写了这段代码,所以它应该非常相似。

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
  }

我的代码是一种连续识别类型,这就是为什么每当语音结束时我都会 startover()。但您可以通过创建自己的UI等来自定义此功能,只需调用 startover(); 即可开始演讲。