【问题标题】:Android: Check if TTS voice data package is installedAndroid:检查是否安装了TTS语音数据包
【发布时间】:2018-03-31 08:01:06
【问题描述】:

我在我的应用程序中使用文本转语音。安装语音数据包后,它工作正常。但是,当没有安装语音数据并且我调用以下方法时,没有播放音频:

_textToSpeech.speak( text, TextToSpeech.QUEUE_ADD, null );

因此我想检查是否安装了软件包以向用户发出通知,但我发现没有办法做到这一点。 “TextToSpeech”类提供了“isLanguageAvailable()”方法。但是无论是否安装了语音数据,该方法的结果总是相同的。

_textToSpeech.isLanguageAvailable(Locale.GERMANY) // result is 1 (LANG_COUNTRY_AVAILABLE)

_textToSpeech.isLanguageAvailable(Locale.GERMAN) // result is 0 (LANG_AVAILABLE)

在我的 Android 设置中,首选的 TTS 引擎是“Google 文字转语音”。

有没有人知道如何检查是否安装了 TTS 语音数据?

谢谢..

【问题讨论】:

  • 你解决了吗?
  • 很高兴终于找到了这个问题,因为我也遇到了同样的问题……但是太烦人了,没有答案。如果我弄清楚了,我肯定会回答。目前,我能想到的只是使用 setUtteranceProgressListener 并测试错误......但这似乎是一个糟糕的主意。
  • 其他人已经决定了这个问题吗?我已在手机上安装了 Google TTS,但 TTS 无法正常工作。我需要发音俄语句子。
  • 我已经解决了这个问题。在我的手机上使用的是 Pico TTS 的默认 TTS。我将其更改为 Google TTS 并解决了问题。您必须转到设置 -> 语言和输入 (язык и ввод) -> 语音 (голосовой ввод) -> 语音合成 (синтез речи)。您必须先安装 google tts。

标签: android text-to-speech


【解决方案1】:

这是我用来检查语音数据是否可用的方法。

private val ttsCheckCode = 1000

// Check by launching intent whether TTS is available or not
val checkIntent = Intent()
checkIntent.action = TextToSpeech.Engine.ACTION_CHECK_TTS_DATA
startActivityForResult(checkIntent, ttsCheckCode)

这将检查语音数据是否可用。检查 android.speech.tts.TextToSpeech 中的文档以获得更清晰的信息。上面的代码会给我 CHECK_VOICE_DATA_PASS 或 CHECK_VOICE_DATA_FAIL。一旦我收到 CHECK_VOICE_DATA_PASS 作为结果,我就可以在 onActivityResult() 中进行初始化等操作。

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == ttsCheckCode) {
        if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
            // success, create the TTS instance and do other things
        }
    }
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2011-10-06
    相关资源
    最近更新 更多