我在Android上用英语,印地语和旁遮普语实现Text-to-Speech(TTS)
。
TTS
在英语和印地语中工作正常,但它没有使用旁遮普语。
对于旁遮普语言,我使用下面的代码
tts.setLanguage(new Locale("pan"));
tts.speak(output, TextToSpeech.QUEUE_FLUSH, null);
答案 0 :(得分:1)
您创建的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(此为新的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。
答案 1 :(得分:1)
有一种变通方法来支持旁遮普文字在Android中的语音转换,因为Google目前不正式支持它。我们先翻译了印度文中的旁遮普文字,然后使用印地文文字转语音功能来实现所需的行为。
要说旁遮普语中的ਜੀਜੀਜੀਜੀ文字,我们必须在印地文中使用हरी्््््ययययओजीओ文字。谢谢
答案 2 :(得分:0)
Andorid尚未启用旁遮普文字转语音功能。我认为,您必须为旁遮普TTS使用Hear2Read应用。