我试图了解 RecognitionServiceRecognitionService.Callback 的功能。我对这个框架很陌生,想知道如何在 RecognitionService 中调用 onStartListening() 函数。我看到了帖子 How to register a custom speech recognition service? 但我已经在所有主要函数中插入了日志消息,以查看何时调用哪个函数。

我还查看了 sdk 中的示例应用程序,但它在解释事情如何发生方面做得非常糟糕。我想从 Activity 中调用 startService。

我使用以下 Intent

Intent startServiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startServiceIntent.setClass(this, SimpleVoiceService.class);

    startService(startServiceIntent);

有人可以帮助我完成这项工作。如果有人可以向我指出有关此的教程,或者描述如何执行此操作的一般流程,那就太好了。

非常感谢。

最佳答案

基本思路是使用SpeechRecognizer连接用户在一般Android设置中选择的RecognitionService

SpeechRecognizer sr = SpeechRecognizer.createSpeechRecognizer(context);
sr.setRecognitionListener(new RecognitionListener() {
    @Override
    public void onResults(Bundle b) { /* ... */ }

    // other required methods
});

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "");
sr.startListening(intent);

您必须提供 RecognitionListener -methods 的实现,允许您更新 UI 以响应语音识别事件(用户开始说话、部分结果可用、用户停止说话、转录仍在进行、发生错误等) .

请参阅某些键盘应用程序的源代码中的完整实现,例如VoiceInput class in Hacker's Keyboard

10-08 06:15