我正在尝试在我的Android应用程序中实现继续语音识别。我已经遵循了这个链接编码。这个继续语音识别在两天前工作。但是现在语音识别工作不好,它将需要更多的时间进行语音监听。如何解决这个问题。请指导我。谢谢
识别编码:
// starts the service
protected void startListening() {
try {
initSpeech();
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
//intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
if (!intent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE))
{
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
"com.dummy");
}
sr.startListening(intent);
} catch(Exception ex) {
Log.d("SpeechRecognitionService", "Bei der Initialisierung des SpeechRecognizers ist ein Fehler aufgetreten");
}
}
// stops the service
protected void stopListening() {
if (sr != null) {
sr.stopListening();
sr.cancel();
sr.destroy();
}
sr = null;
}
protected void initSpeech() {
if (sr == null) {
sr = SpeechRecognizer.createSpeechRecognizer(this);
if (!SpeechRecognizer.isRecognitionAvailable(context)) {
Toast.makeText(context, "Speech Recognition is not available",
Toast.LENGTH_LONG).show();
finish();
}
sr.setRecognitionListener(VoiceRecognitionListener.getInstance());
}
}
用户开始说话
public void onBeginningOfSpeech() {
System.out.println("Starting to listen");
}
public void onBufferReceived(byte[] buffer) { }
// User finished speaking
public void onEndOfSpeech() {
System.out.println("Waiting for result...");
}
我找到了减少说话和收到结果之间时间的解决方案。
请求部分结果,因为这些结果在全部结果之前交付。
我用了这些额外的东西:-
mRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, Locale.getDefault().getLanguage().trim());
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, this.getPackageName());
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, 100);
mRecognizerIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
mSongSpeechRecognitionListener = new SongSpeechRecognitionListener(mRippleBackground, mFloatingActionButton);
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mSpeechRecognizer.setRecognitionListener(mSongSpeechRecognitionListener);
然后在部分结果中
public void onPartialResults(final Bundle partialResults) {
Log.i(LOG_TAG, "onPartialResults()");
final List<String> partialResultList = partialResults.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
for (final String result : partialResultList) {
if (result.isEmpty()) {
} else {
mPartialResults++;
if (mPartialResults == mPartialResultsMAX) {
Log.i(LOG_TAG, "onPartialResults() EXECUTE");
mFloatingActionButton.setEnabled(true);
mAsyncTask.execute(result);
break;
}
}
}
}
我将mPartialResultsMAX
设置为2,因为第一个部分结果似乎只有一个单词
当您收到部分结果时,可能需要取消语音识别器。
我想在我的Android应用程序中添加一个语音界面。两个要求: > 我只需要在任何时候从一个小字典中识别单词——基本上是屏幕上的任何可点击元素,并且大多数可点击元素已经有文本,所以从字面上看就是“说你看到的”。 在应用程序可见的情况下进行连续语音识别,尽管我可以忍受在演讲之前说“Ok app”。 实现这一点的最佳方式是什么? 谢谢NickB
我想在我的应用程序中使用脱机语音识别。设置- 嗯,这里我通过语音向相机发送意图。所以,我对词汇量的要求有限。
我有一个工作应用程序,我想添加语音命令。当前应用程序定期(定时器)通过蓝牙来回传输数据。用户可以按按钮和NumberPickers来修改通过蓝牙发送的数据。还有从蓝牙链接接收到的数据,并显示在文本视图中。此应用程序目前工作正常。 我想做的是添加语音命令功能,以便用户可以选择按下按钮/数字选择器,或者可以仅使用语音命令更改值。 我测试了一些可以在各种网站上找到的从语音到文本的例子。我成功地测试了一个
我正在考虑做一个语音屏幕锁/解锁Android应用程序,作为我的最后一个毕业设计,我遇到了一些问题,当一个按下锁按钮时,我如何打开麦克风,这样它就可以一直听下去,直到密码说出来。 我已经搜索了它,但我只找到了使用RecognizerIntent和其他类Google Speech API的技术。 我需要知道当锁定屏幕显示时,我如何开始收听麦克风,这样我就可以捕捉音频流。不允许我使用任何api,没有谷
我正在从事一个关于“家庭自动化”系统的项目,该系统使用Android应用程序和微控制器,通过蓝牙模块将它们连接起来。我已经将“语音到文本”合并到语音命令中。尽管如此,它与内置的谷歌语音识别api配合得很好。我所需要的只是一个连续的语音识别,而不需要谷歌语音弹出窗口。我在playstore“speechnotes”上看到了一个类似的应用程序,这正是我想要开发的。它完全离线工作。
我制作了一个简单的Android应用程序,其中有一个登录活动和一个片段(BottomSheetDialogFragment)。我正试图通过片段(有多个按钮)向主活动(登录活动)添加多种语言,但它在代码下面不起作用。有人能帮我吗? 登录活动 碎片 登录活动片段