不同语言的Android文字转语音

9
我想制作一个能够支持不同语言的应用程序。
“默认”语言没有问题:
tts.setLanguage(Locale.ENGLISH);

还有其他一些:
Locale l = new Locale("ru","RU");
tts.setLanguage(l);

但是很多其他的不起作用,例如:
Locale l = new Locale("hu","HU");
tts.setLanguage(l);

我也尝试过 "hu"、"hu-HU"、"hu-rHU"、"HU" 等,但都没有成功...
此外,它在土耳其语、希腊语、荷兰语和捷克语中也无法工作...

附加:SM-T867无法运行Locale.ITALY和Locale.ITALIAN,但SM-N950F可以运行Locale.ITALY和Locale.ITALIAN。此外,随着新的Android版本,声音库也发生了变化,即使是英语说话者的声音也不同,其他语言的声音也不同。我真的希望Android团队能够致力于改进这些翻译服务。 - Bay
4个回答

6

1
当您键入Locale.时,下拉列表会打开,并列出可用的语言如下:
  1. 韩语
  2. 意大利语
  3. 德语
  4. 日语
  5. 法语
  6. 英语
  7. 加拿大法语
  8. 中文
  9. 简体中文
  10. 台湾
  11. 繁体中文
  12. 英国
  13. 美国
目前尚无匈牙利语(Magyarul)和土耳其语(Türkçe)可用。

enter image description here


0

第一个参数必须使用ISO 639 alpha-2alpha-3代码。对于俄语,它是"rus"。第二个参数使用ISO 3166 alpha-2。它是正确的("RU")。

以下是ISO国家代码列表:

ISO 639

ISO 3166


0

你需要将手机的系统语言更改为希腊语、土耳其语、荷兰语或任何你想要的语言,以便Locale使用你的默认本地化语言。

我写了println来检查程序是否正确获取到你的系统语言。

println(Locale.getDefault().country)
tts!!.setLanguage(Locale.getDefault())

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