当前位置: 首页 > 知识库问答 >
问题:

使用嵌入式TTS在Android上进行离线语音识别

邢寒
2023-03-14

我很想知道在Android上使用谷歌TTS是否可以进行离线语音识别,并试图实现这一点,但没有成功。我正在开发一款Android应用程序,它要求用户对着手机说出一个“神奇的单词”,当听到正确的单词时,手机会做出响应。当我连接到网络时,语音识别可以完美工作,但我需要使其脱机工作。

我正在浏览Android留档并发现了这个:[KEY_FEATURE_EMBEDDED_SYNTHESIS][1]留档说使用getFeature(Locale)检索功能以查看引擎支持哪些功能。它返回了两个功能:Google文本到语音引擎的嵌入Tts和networkTts,因此嵌入Tts功能是可用的。在下面代码的第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);
}

共有1个答案

顾磊
2023-03-14

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

 类似资料:
  • 我已经使用HTK(Hidden Markov Model Tool Kit)来识别用于控制Android应用程序的特定命令,但在这种情况下,我需要将一些语音数据传递给服务器,这可能会耗费更多时间。 为了防止这种延迟,我正在考虑使用pocketsphinx通过Android应用程序在本地识别语音数据,这样我就不需要将音频传递给服务器。 如果这是一个好主意,那么从头开始学习pocketsphinx容易

  • 我正在开发一个android应用程序,它将监听语音命令并相应地触发动作。 以下是一些疑问: > 谷歌语音识别离线库是否可用于android应用程序 我们能创建自己的词汇词典吗 应用程序应在脱机模式下工作(无Internet)。

  • 我想在我的应用程序中使用语音识别。从android jellybean开始,我知道android系统支持离线语音识别(听写?)! 到目前为止,我只能使用内置键盘的离线识别来键入一些东西,即按下键盘上的麦克风按钮然后说话,但这种用途有限,因为用户每次都需要按下按钮并且需要一个文本字段 我希望能够使用语音识别在程序需要时开始收听,并在识别完成后调用一些回调函数。谷歌的在线语音识别确实可以做到这一点,但

  • 在线语音合成(tts) 概述 该API将文本转换为语音文件,支持不同编码格式和采样率. 调用示例 curl -sSL -v -X POST "https://ai.nationalchip.com/api/v1/tts" -H "accept: */*" -H "Authorization: Bearer ${access_token}" -H "Content-Type: applicatio

  • 在飞行模式下,按下按钮,一个声音退出输入屏幕,输入出现的声音请重新输入,上周可以正常使用,谷歌很长时间找不到解决方案,希望帮助离线谷歌语音已经设置好 公共void onclick1(视图v) { } 受保护的void onActivityResult(int requestCode、int resultCode、Intent data){ }

  • 我做了很多研究,并尝试了离线pocket sphinx,但它接收了周围的声音,对我的应用程序做出了不同的反应。以上kitkat 4.4是否有谷歌离线应用程序。。我从两周后就开始尝试了。感谢您宝贵的回答。 详细信息:当活动开始时,第一个文本必须在完成后读取内容(文本到语音),读取语音识别必须根据命令例如:(下一步、上一步、前进、选项、1、2、3、4等)进行语音和语音识别。根据命令,它必须在on结果方