【发布时间】:2018-12-10 06:15:41
【问题描述】:
我正在尝试通过谷歌 TTS 语音合成器大声朗读印地语文本,它在我的设备上运行良好,因为我已经手动安装了印地语语音数据,但是在另一台不包含印地语语音的设备上进行测试时,它没有显示下载特定语音数据的提示。这是部分代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == ACT_CHECK_TTS_DATA) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// Data exists, so we instantiate the TTS engine
textToSpeech = new TextToSpeech(this, this);
} else {
// Data is missing, so we start the TTS
// installation process
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
所以,TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA 似乎不起作用,但是我不知道它到底做了什么,我相信其余的代码都很好。
我的问题有什么解决办法吗?
【问题讨论】:
-
在您开始安装 TTS 数据的活动后,日志会告诉您什么?顺便说一句,第一个 if-case 的常量应该是:
ACTION_CHECK_TTS_DATA -
我无法像谷歌翻译那样使用网络阅读。顺便说一句,我没有收到任何错误。所以日志什么也没说。
-
在 if 子句中,ACT_CHECK_TTS_DATA 只是用户定义的常量,用于跟踪 onActivityResult ID。其值为 1000。
-
我只是想知道,如果目标设备缺少所需的语音数据,如何提示下载?实时。
-
您应该在每个 if-branch 中添加调试消息,以查看程序流程是否正确。另外,您是否指定了要下载的语言(即印地语)?您可能不想下载所有语言,对吧?