我正在尝试将我的 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") 或 "nl_NL"
即可).
在我的代码中,当 TTS.speak
被调用时,我总是检查荷兰语是否为真,然后为 speak 方法提供荷兰语字符串,否则提供英语字符串。
如何解决这个问题,我可以在没有互联网连接的情况下将 TextToSpeech 语言设置为荷兰语?
编辑:对于遇到我的问题的其他人,请查看下面我的答案的编辑部分。
最佳答案
经过大量研究,似乎随 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
以及显示安装了哪些语言的图像:
编辑:从 Google Play 商店更新“Google TTS”应用后,荷兰语 BECAME 可用。如果您正在寻找荷兰语离线 TTS 并且您使用的是 Google TTS,只需将其更新到最新版本即可。
关于java - Android - TTS 将语言设置为 Locale.getDefault 没有互联网不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28765546/