哈玛林.无法在Android语音识别中使用长输入,初始化时出错?



我正在尝试在我的应用程序(启动器(中使用Google语音识别。当我尝试将其用于短命令(如调用 X或说出短数字(如123456789(时,一切正常,但是一旦我尝试提供更长的输入(这需要更多时间说(,语音识别活动就会挂在屏幕上,它什么也没做。

我在日志中找不到任何有用的东西,我不知道初始化语音识别时是否出错了。

这是我初始化它的时候:

var intent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
intent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);
StartActivityForResult(intent, SpeechResult);

这是我使用结果的地方

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);

if (requestCode == SpeechResult && data != null)
{
var text = data.GetStringArrayListExtra(RecognizerIntent.ExtraResults);

getterForNumber = text[0];
getterForNumber = getterForNumber.Replace(" ", String.Empty);
bool inInt = getterForNumber.All(char.IsDigit);
if (!inInt)
{
var activity2 = new Intent(this, typeof(fittizioAct));
activity2.PutExtra("fittizioData", "Cannot Recognise the Number");
activity2.PutExtra("direzione", "vocale");
StartActivity(activity2);
Finish();
}
else
{
var passNameAndNumberRubr = new Intent(this, typeof(VocalSavedAct));
passNameAndNumberRubr.PutExtra("saveNumberRubr", getterForNumber);
passNameAndNumberRubr.PutExtra("saveNameRubr", getterForName);
//sqldbRubrica.AddRecord(getterForName, getterForNumber);
StartActivity(passNameAndNumberRubr);
Finish();
}


}
else if (requestCode == SpeechResult && data == null)
{
AudioManager vol = (AudioManager)this.GetSystemService(Context.AudioService);
int volume = vol.GetStreamVolume(Android.Media.Stream.Music);
CrossTextToSpeech.Current.Speak("Voice Command Canceled",
pitch: 1,
speakRate: speed,
volume: (float)volume,
crossLocale: locale);
}
}

附言代码是 C# 格式的,因为我使用的是 Xamarin。

尝试像这样修改初始化

var voiceIntent = new Intent(RecognizerIntent.ActionRecognizeSpeech);
voiceIntent.PutExtra(RecognizerIntent.ExtraLanguageModel, RecognizerIntent.LanguageModelFreeForm);

voiceIntent.PutExtra(RecognizerIntent.ExtraPrompt, "Speak now");
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputCompleteSilenceLengthMillis, 1500);
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputPossiblyCompleteSilenceLengthMillis, 1500);
voiceIntent.PutExtra(RecognizerIntent.ExtraSpeechInputMinimumLengthMillis, 15000);
voiceIntent.PutExtra(RecognizerIntent.ExtraMaxResults, 1);
voiceIntent.PutExtra(RecognizerIntent.ExtraLanguage, Java.Util.Locale.Default);

相关内容

最新更新