Android - TTS 将语言设置为 Locale.getDefault 没有互联网是不可能的?
Android - TTS set language to Locale.getDefault not possible without internet?
我正在尝试将我的 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
被调用时,我总是检查荷兰语是否为真,然后为 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,只需将其更新到最新版本即可。
尝试
tts.setLanguage(new Locale("nl", "NL"));
我正在尝试将我的 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
被调用时,我总是检查荷兰语是否为真,然后为 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,只需将其更新到最新版本即可。
尝试
tts.setLanguage(new Locale("nl", "NL"));