【问题标题】:Available languages for TTS on AndroidAndroid 上 TTS 的可用语言
【发布时间】:2015-10-07 00:50:58
【问题描述】:

我正在尝试使用isLanguageAvailable() 检查某种语言是否可用于 TTS。 该方法可能的返回值如下。

LANG_AVAILABLE

LANG_COUNTRY_AVAILABLE

LANG_COUNTRY_VAR_AVAILABLE

LANG_MISSING_DATA

LANG_NOT_SUPPORTED

很容易理解,我不必关心最后两个的名字。但是即使在阅读了here的解释后,我仍然很困惑其余的意思。

public static final int LANG_AVAILABLE

表示该语言可用于该语言的语言环境,但 不是国家和变体。

public static final int LANG_COUNTRY_AVAILABLE

表示该语言和国家/地区可用的语言 由语言环境指定,但不是变体。

public static final int LANG_COUNTRY_VAR_AVAILABLE

表示语言完全符合区域设置的规定。

这是什么意思?所有三个都可用于 TTS?

我不明白“按语言环境,但不是国家和变体”这句话。

我正在使用类似这样的代码测试 TTS。

for( Locale each : Locale.getAvailableLocales() )
    if( TextToSpeech.LANG_AVAILABLE == myTTS.isLanguageAvailable(each)
    && SOME_OTHER_ADDITIONAL_CONDITIONS ) {    
        myTTS.setLanguage(each);
        break;
    }

如您所见,我只放了一个常量 LANG_AVAILABLE。

我是否也需要另外两个常量,以防万一?

【问题讨论】:

    标签: java android locale constants text-to-speech


    【解决方案1】:

    嗯,正如您在此处 (http://developer.android.com/reference/java/util/Locale.html) 所看到的,有一个名为 en(英语)的语言环境,还有 en_GB 和 en_US,因此英语是基本语言环境,而 GB 和 US 为语言环境指定国家/地区。如果您查看语言环境的三参数构造函数,还有一个称为变体的参数。我猜可能有类似 en_US_southern 的东西,而 south 是美式英语的变体。

    要回答您的问题,如果您只想查看 TTS 是否会说某种语言,而不管国家或方言如何,您只需检查一下 myTTS.isLanguageAvailable(each) >= 0 因为这将检查所有三个可能的“成功”结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多