安卓TTS语言

7

我正在使用Android TTS引擎。我尝试将其设置为说墨西哥西班牙语,而不是来自西班牙的西班牙语。

我已经尝试了几种语言代码/国家代码的组合,但我没有成功得到任何西班牙语(来自墨西哥)的结果。这是我当前的代码:

loc = new Locale("es", "MEX");
myTts.setLanguage(loc);
say("Hello");

我还尝试了("es","US"), ("es","LA"), ("spa","US"), ("spa","MEX") 的所有组合,但在日志中显示:

TtsEngine::setLanguage 找到匹配的语言(spa),但没有匹配的国家(MEX)。

成功加载 es-ES

我可以退出我的应用程序并打开TTS Service Extended。如果我将语言设置为西班牙语[es]或西班牙语-拉丁美洲,则无论如何,当我点击“预览”时,都会得到“Hola”,这是预期的结果。 但从我的应用程序中,我得到的是“Heyyo”,而不是“Hola”。有人能看出我设置语言时做错了什么吗?

3个回答

8

我使用了下面的代码,它在西班牙语中可以正常工作。

Locale locSpanish = new Locale("spa", "MEX");
tts.setLanguage(locSpanish);
tts.speak(text, TextToSpeech.QUEUE_ADD, null);

对我来说非常有效。谢谢。 - Mukesh Garg
对我来说无法工作,出现以下错误:尝试在 null 对象引用上调用虚拟方法'int android.speech.tts.TextToSpeech.setLanguage(java.util.Locale)' - Bay

0

0

如果它需要两个字母或三个字母的国家代码,可能会有点混淆。Locale文档说是两个字母,因此应该是sp-MX,但TTS doc显示了一个带有三个字母代码的示例,因此spa-MEX才是正确的。

你使用的是什么设备/sdk版本?如果两者都不起作用,可能是因为你的设备不支持西班牙语-墨西哥。TTS doc的第一部分展示了如何检查特定语言资源,并在不存在时下载它们。


我已经在运行2.2的Nexus One和运行1.6的Mytouch上进行了测试。该应用程序是构建到SDK版本1.6。我刚刚尝试了使用两个和三个字母代码,结果仍然相同。 - Tim
你尝试下载特定语言的资源了吗? - Cheryl Simon
链接到TTS文档已损坏。 - yurin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接