android - 在旁遮普语言上实现文本转语音 (TTS) 不起作用

标签 android text-to-speech

我正在 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/

相关文章:

android - fragment 中的文本到语音

python - 为什么在目录中循环访问.wav文件时显示错误,但在不循环时工作正常?

android - 从广播接收器或服务启动 Android TTS

c# - 提高语音合成的性能

android - 通过覆盖 View Pager 的 PageTransformer 类的 transformPage(View view, float position) 方法自定义动画

java - Android 定位应用程序崩溃

javascript - 如何结束移动设备上当前的预测文本单词?

android - Ionic 如何决定启动哪个 Android 模拟器?

java - 为什么我的同步代码块似乎忽略了同一对象上另一个正在等待的同步块(synchronized block)?

python - 如何让pyttsx模块的语音变慢