我正在以英语,北印度语和旁遮普语在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 =新的TextToSpeech(this,new OnInitListener ...,“ com.samsung.SMT”);
但是用户必须已安装所需的引擎,否则它将默认使用他们所安装的任何引擎。
不幸的是,尽管Google和/或三星将来可能会支持旁遮普语,但上述提到的引擎目前都不支持旁遮普语,但是如果用户安装了eSpeak引擎(程序包名称:“ com.redzoc.ramees.tts。 espeak”),那么他们已经安装了旁遮普语语言包,那么它应该可以工作了。
似乎最好的做法是检测用户A)是否想要旁遮普语,而B)是否未安装espeak(或您知道的其他支持旁遮普语的引擎),然后使用意图/警报对话框进行安装它。
PS-在创建语言环境并设置语言代码时,根据语言环境文档,应使用两个字母的缩写,“ pa”而不是“ pan”。
“ ...正确的语言环境将使用两个字母的ISO 639-1代码。” -link。
“当一种语言同时具有alpha-2代码和alpha-3代码时,必须使用alpha-2代码。” -link。