【问题标题】:Android TTS LanguagesAndroid TTS 语言
【发布时间】:2014-04-25 16:56:44
【问题描述】:

我正在使用 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 服务扩展。如果我将语言设置为西班牙语[es] 或西班牙语-拉丁美洲。无论哪种方式,当我点击“收听预览”时,我都会得到预期的“Hola”。但是从我的应用程序中,我得到的是“Heyyo”而不是“Hola”。谁能看到我在设置语言时做错了什么?

【问题讨论】:

    标签: android text-to-speech


    【解决方案1】:

    我使用了以下代码,它在西班牙语中运行良好。

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

    【讨论】:

    • 非常适合我.. 谢谢
    • 对我来说无法处理此错误:尝试在空对象引用上调用虚拟方法 'int android.speech.tts.TextToSpeech.setLanguage(java.util.Locale)'
    【解决方案2】:

    我还没有在 Android 上使用过 TTS,所以我不知道这是否相关,但 Locale constructor 需要 2 个字母的国家/地区代码,the ISO country code for Mexico 是 MX。

    【讨论】:

      【解决方案3】:

      如果它想要 2 个字母或 3 个字母的国家代码,这有点令人困惑。 Locale 文档说 2 个字母,因此它将是 sp-MX,但 TTS doc 显示了一个带有 3 个字母代码的示例,因此 spa-MEX 是正确的。

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

      【讨论】:

      • 我已经在运行 2.2 的 Nexus One 和运行 1.6 的 Mytouch 上进行了测试。该应用程序是根据 SDK 版本 1.6 构建的。我刚刚尝试了 2 和 3 字母代码,结果仍然相同。
      • 您是否尝试下载特定语言的资源?
      • 到 TTS 文档的链接已损坏
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      相关资源
      最近更新 更多