【问题标题】:How to check whether a language is downloaded or not for TTS如何检查是否为 TTS 下载了语言
【发布时间】:2019-12-19 06:56:50
【问题描述】:

我想检查是否在用户设备上为 Android TextToSpeech 下载了特定语言

我尝试过这样做:

private void checkVoiceData() {
        if (ttsLang == TextToSpeech.LANG_MISSING_DATA
                || ttsLang == TextToSpeech.LANG_NOT_SUPPORTED
                || !(ttsLang == TextToSpeech.LANG_AVAILABLE)) {

            Log.e("TTS", "The Language is not supported!");
            Toast.makeText(PreviewActivity.this, "Open WI-Fi to Download the Language..", Toast.LENGTH_LONG).show();
        }
    }

但这没有用。我认为这段代码不会检查是否下载了语言,有没有办法检查?

【问题讨论】:

  • 不,不是。他们检查是否支持一种语言或获取所有可用的语言。但是我想要检查是否在用户的设备上下载了一种语言(例如中文)......如果有什么我理解错了,请告诉我!
  • 仅供参考,最新版本的 Google TTS 引擎会自动处理所有这些 - 如果尚未下载该语言,它会在您调用 speak() 时立即下载(只要语言“可用”/受支持)。我在这里有一个相关的答案:stackoverflow.com/questions/53910128/…
  • 是的!但我想告诉用户如果没有下载语言,请打开他们的 wifi,以便他们知道这不是应用程序的问题。
  • 对...所以我认为最好的方法是如果 speak() 调用导致随后的 onError() 调用并带有类似“说话错误”的警报,则将用户发送到 TTS 设置[特定语言]。”这样他们就会明白他们需要 wifi 才能在你不说的情况下下载它。

标签: android text-to-speech google-text-to-speech


【解决方案1】:

所以,我终于找到了一种检查是否安装了语言的方法。代码如下:

private boolean isLanguageInstalled(){
        Voice voice = textToSpeech.getVoice();
        if(voice != null){
            Set<String> features = voice.getFeatures();

            //Simplified if statement that returns true if the condition is met
            return features != null && !features.contains(TextToSpeech.Engine.KEY_FEATURE_NOT_INSTALLED);
        }

        return false;
    }

【讨论】:

  • 在我的例子中, textToSpeech.getVoice();总是返回 null。你能帮我解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 2020-01-03
  • 1970-01-01
  • 2014-09-26
  • 2015-06-02
  • 1970-01-01
  • 2011-04-01
相关资源
最近更新 更多