【问题标题】:Android: how to open Speech Input with command voice from my appAndroid:如何使用我的应用程序中的命令语音打开语音输入
【发布时间】:2016-08-30 20:02:52
【问题描述】:

使用此代码:

private void promptSpeechInput() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
    intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
    intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
            getString(R.string.speech_prompt));
    try {
        startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
    } catch (ActivityNotFoundException a) {
        Toast.makeText(getApplicationContext(),
                getString(R.string.speech_not_supported),
                Toast.LENGTH_SHORT).show();
    }
}

通过不同的方式(按钮事件、手势、生命周期),我可以调用此方法来打开语音输入提示,就像我在谷歌搜索字段中单击麦克风图标一样。 好的,很好。

但是现在,我需要使用命令语音调用此方法。就像现在在 google 中一样,我们说“Ok Google”,然后出现语音输入提示。我想在我的应用程序中执行此操作。例如,我在主要活动中,我说“听我说”并调用方法 promptSpeechInput。

我该怎么做?

感谢您的帮助。

【问题讨论】:

    标签: android voice-recognition google-now


    【解决方案1】:

    据我所知,您无法声明自己的唤醒词——您只能使用 OK Google。您可以使用 LychmanIT 引用的 Voice Actions API,但这只会在说 OK Google 之后处理意图。

    CMUSphynx 可能值得研究。它允许您定义自定义侦听器,但不是针对此工作流程的 Google 认可的解决方案,因此它可能不适合您,具体取决于您的要求。不过,我已经成功地使用它进行了原型设计——它工作得很好。

    【讨论】:

    • 谢谢@SimonPhoenix,这似乎对我有帮助。我将使用它创建一个测试项目,我和我来警告你。
    【解决方案2】:

    通过Voice Actions API,您的应用可以注册system actions,其中之一是“搜索”(这样您就可以“在APP上搜索一些问题或命令”)。

    过去,一些开发者可以submit a custom voice action request。获得批准后,用户可以通过语音对您的应用执行特定操作。这不再是一种选择。

    【讨论】:

    • 谢谢@LychmanIT,我已经测试过了,效果很好。不是我认为的解决方案的最佳方法,但我可以做到这一点:我可以在所有屏幕上启用“Ok Google”。当用户在应用程序中时,他现在可以使用 google 进行搜索,我可以获取此命令并调用方法。似乎不是一个漂亮的解决方案,但用户可以只使用语音命令来操作应用程序。
    • 我创建了一个测试项目,但遇到了问题。使用英语进行搜索可以正常工作,但我来自巴西,即使在 YouTube 上也无法进行搜索。所以,我会尝试其他方式。
    • 是的,看来@Simon_Phoenix 的选项比我的要好。祝你好运:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 2019-05-29
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多