Android 文本到语音的初始化速度很慢
Android text to speech is very slow to initialize
我的应用程序供视障人士使用,因此它严重依赖文本到语音。该应用程序调用 API 并向用户读出负载(使用 android.speech.tts.TextToSpeech)一些相关信息。
一切正常,除了我注意到有时文本到语音的初始化需要 10 秒或更长时间,这是我的应用程序的主要瓶颈。
我想知道是否有人对我如何优化我的代码来缓解这个问题有任何想法。
首先,我的应用程序启动 activity 来检查 TTS 数据。
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
然后,使用 activity 的结果调用此方法。根据结果,文字转语音要么刚刚初始化(这几乎总是发生),要么文字转语音安装在设备上(非常罕见)。
private TextToSpeech mTts;
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
最后,当所有这些都完成后,我的应用程序调用了一个 API 并且有几行如下所示:
mTts.speak("<Useful output here>", TextToSpeech.QUEUE_FLUSH, null);
感谢您的帮助!
今天有点晚了,但我想说的是,这只是设备中发生了什么。其他具有更高优先级的事情占用处理器时间。我认为盲人不需要在设备上安装很多应用程序。还要考虑自动启动应用程序。自动启动您的应用程序。
我的应用程序供视障人士使用,因此它严重依赖文本到语音。该应用程序调用 API 并向用户读出负载(使用 android.speech.tts.TextToSpeech)一些相关信息。
一切正常,除了我注意到有时文本到语音的初始化需要 10 秒或更长时间,这是我的应用程序的主要瓶颈。
我想知道是否有人对我如何优化我的代码来缓解这个问题有任何想法。
首先,我的应用程序启动 activity 来检查 TTS 数据。
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
然后,使用 activity 的结果调用此方法。根据结果,文字转语音要么刚刚初始化(这几乎总是发生),要么文字转语音安装在设备上(非常罕见)。
private TextToSpeech mTts;
@Override
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
最后,当所有这些都完成后,我的应用程序调用了一个 API 并且有几行如下所示:
mTts.speak("<Useful output here>", TextToSpeech.QUEUE_FLUSH, null);
感谢您的帮助!
今天有点晚了,但我想说的是,这只是设备中发生了什么。其他具有更高优先级的事情占用处理器时间。我认为盲人不需要在设备上安装很多应用程序。还要考虑自动启动应用程序。自动启动您的应用程序。