我正在 Android 中实现英语、印地语和旁遮普语的 Text-to-Speech(TTS)
。
TTS
在英语和印地语中工作正常,但在旁遮普语中不工作。
对于旁遮普语,我使用了下面的代码
tts.setLanguage(new Locale("pan"));
tts.speak(output, TextToSpeech.QUEUE_FLUSH, null);
最佳答案
您创建的 TextToSpeech 对象 (tts) 可以使用任何语音引擎。您可能正在使用 Google 引擎。
不同的引擎有不同的能力。
通常设备上的引擎是:
1) 三星语音引擎——“com.samsung.SMT”
2) Google 语音引擎 - “com.google.android.tts”
或 3) PICO - “com.svox.pico”......这个有时用于没有 Google API 的旧设备和 Android Studio 模拟器。
作为开发人员,您可以通过在构造函数的最后一个参数中定义它来选择要使用的引擎,例如,使用三星引擎:
TextToSpeech tts = new TextToSpeech(this, new OnInitListener..., "com.samsung.SMT");
但是用户必须安装你想要的引擎,否则它将默认为他们安装的任何引擎。
不幸的是,虽然谷歌和/或三星将来可能会支持旁遮普语,但目前上述引擎均不支持旁遮普语,但如果用户安装了 eSpeak 引擎(包名称:“com.redzoc.ramees .tts.espeak"),并且他们已经安装了旁遮普语言包,那么它应该可以工作。
似乎最好的做法是检测用户 A) 是否需要旁遮普语,以及 B) 是否 安装了 espeak(或您知道的其他支持旁遮普语的引擎) ,然后使用意向/警报对话框进行安装。
PS - 在创建 Locale 和设置语言代码时,根据 Locale 文档,您应该使用两个字母的缩写,“pa”而不是“pan”。
“...适当的区域设置将使用两个字母的 ISO 639-1 代码。” - link .
“当一种语言同时具有 alpha-2 代码和 alpha-3 代码时,必须使用 alpha-2 代码。” - link .
关于android - 在旁遮普语言上实现文本转语音 (TTS) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47808779/