理解语音识别服务

5
我正在尝试理解RecognitionServiceRecognitionService.Callback的功能。我对这个框架还不太熟悉,想知道如何调用RecognitionService中的onStartListening()函数。我看到了如何注册自定义语音识别服务?的帖子,但我在所有主要函数中插入了日志消息,以查看调用哪个函数。
我还查看了sdk中的示例应用程序,但它并没有很好地解释事情是如何发生的。我想从活动中调用startService。
我使用以下意图。
Intent startServiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startServiceIntent.setClass(this, SimpleVoiceService.class);

    startService(startServiceIntent);

请问有人能帮我让这个工作起来吗?如果有人能指点我一个关于此的教程,或者描述一下如何进行一般流程,那就太好了。

非常感谢。

1个回答

1
基本思路是使用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方法的实现,以便在语音识别事件发生时更新UI(用户开始说话、部分结果可用、用户停止说话、转录仍在进行中、发生错误等)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接