Android - TTS将语言设置为Locale.getDefault没有互联网不可能吗?

时间:2015-02-27 12:50:34

标签: java android locale text-to-speech

我正在尝试将我的TextToSpeech - 对象的语言设置为荷兰语。这是我的Android平板电脑的默认语言,应用程序将在该平板电脑上运行,当我记录Locale.getDefault()时,我得到“nl_NL”,所以这是正确的。

我已经读过,对于TTS,您需要在使用Locale设置语言时提供ISO语言代码和ISO国家/地区代码。但问题是:当平板电脑没有互联网连接时,TTS似乎无法将语言设置为荷兰语。这是我设置语言的代码:

int result = tts.setLanguage(new Locale(Locale.getDefault().getISO3Language(),
 Locale.getDefault().getISO3Country()));
// this equals to "nld","NLD"
        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED)
        {
            tts.setLanguage(Locale.UK);
        }else{
            dutch = true;
        }

如果没有Internet连接,语言始终设置为Locale.UK。通过Internet连接,它按预期工作,语言设置为荷兰语(我甚至不需要提供ISO标记,只需new Locale("nl_BE") or "nl_NL"即可。)

此外,在调用TTS.speak的代码中,我总是检查Dutch是否为true,然后为speak方法提供荷兰语字符串,否则提供英文字符串。

如何解决此问题,我可以将TextToSpeech语言设置为荷兰语而无需连接Internet?

编辑:对于遇到我的问题的其他人,请查看下面我的答案的已编辑部分。

2 个答案:

答案 0 :(得分:1)

经过大量研究后,似乎与TTS一起安装的标准语言不包含荷兰语。 我使用方法isLanguageAvailable(Locale loc)运行了一些测试,从而检查荷兰语等,似乎不支持荷兰语(返回值为LANG_NOT_SUPPORTED)。

我必须找到另一个TTS客户端来满足我的需求或使用正确的消息播放.mp3文件(这可能有效,因为TTS必须发布的值是预定义的。)

一些帮助我的链接:
http://igordcard.blogspot.be/2014/02/changing-android-text-to-speech-tts.html
Missing languages in TTS android
How to check if a specific language data for Text to Speech(TTS) is installed on a device?
http://code.tutsplus.com/tutorials/android-sdk-using-the-text-to-speech-engine--mobile-8540

显示安装了哪些语言的图像:
TextToSpeech standard installed languages

编辑:在Google Play商店更新" Google TTS" -app后,可以使用荷兰语BECAME。如果您正在寻找荷兰语离线TTS并且您正在使用Google TTS,请将其更新为最新版本。

答案 1 :(得分:0)

尝试

tts.setLanguage(new Locale("nl", "NL"));