1

我有兴趣看看是否可以在 Android 上使用 Google TTS 进行离线语音识别,并试图使其工作但没有成功。我正在开发一个 Android 应用程序,该应用程序要求用户对着手机说出一个“神奇的词”,手机会在听到正确的词时做出响应。当我连接到网络时,语音识别工作得很好,但我需要让它离线工作。

我正在查看 Android 文档并遇到了这个问题:[KEY_FEATURE_EMBEDDED_SYNTHESIS][1] 文档说使用 getFeatures(Locale) 检索功能以查看引擎支持的功能。它返回了两个功能:用于 Google 文本转语音引擎的 embeddedTts 和 networkTts,因此可以使用 embeddedTts 功能。在下面代码的第 3 行中,我根据 Android 文档启用了此功能,但它似乎没有效果。我还尝试将 networkTts 功能设置为 false,这也没有改变行为。每当我未连接到数据网络时,我都会收到错误消息“目前无法访问 Google”。

我希望这里有人可以帮助我了解如何使用 EmbeddedTts。

我正在运行 Android 4.1.1 的三星 Galaxy S3 上测试我的应用程序

谢谢你。

以下是相关代码:

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        HashMap<String, String> localSpeech = new HashMap<String, String>();
        localSpeech.put(TextToSpeech.Engine.KEY_FEATURE_EMBEDDED_SYNTHESIS, "true");
          if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
        // Fill the list view with the strings the recognizer thought it could have heard
        ArrayList<String> matches = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        if (matches.size() == 0)
        {
            tts.speak("Heard nothing", TextToSpeech.QUEUE_FLUSH, null);

        } else {
            String mostLikelyThingHeard = matches.get(0); 
            String magicWord = "Magic";
            if (mostLikelyThingHeard.equals(magicWord)) {
                //tts.speak("You got it!", TextToSpeech.QUEUE_FLUSH, null);
                tts.speak("You got it!", TextToSpeech.QUEUE_FLUSH, localSpeech);
            } else {
                tts.speak("The magic word is not " + mostLikelyThingHeard + " try again", TextToSpeech.QUEUE_FLUSH, localSpeech);
            }
        }

    }
    else {
        Log.d("APP", "result NOT ok");
    }

    super.onActivityResult(requestCode, resultCode, data);
}
4

1 回答 1

1

您将语音识别(也称为“语音识别”和“语音到文本”)与语音合成(也称为“TTS”和“文本到语音”)混合在一起。要回答您的问题,使用语音合成 API 来实现语音识别是不可能的。

于 2013-02-15T08:17:40.427 回答