私のアプリケーションは視覚障害者が使用しているため、テキスト読み上げに大きく依存しています。アプリケーションは API を呼び出し、(android.speech.tts.TextToSpeech を使用して) いくつかの関連情報をユーザーに読み込みます。
テキスト読み上げの初期化に 10 秒以上かかる場合があり、これがアプリケーションの主要なボトルネックになっていることに気付いたことを除いて、すべてがうまく機能します。
この問題を軽減するためにコードを最適化する方法について、誰かアイデアがあるかどうか疑問に思っていました。
まず、私のアプリケーションは、TTS データをチェックするアクティビティを開始します。
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
次に、このメソッドがアクティビティの結果とともに呼び出されます。結果に応じて、テキスト読み上げが初期化されるか (ほとんどの場合発生します)、テキスト読み上げがデバイスにインストールされます (非常にまれです)。
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);
お手伝いありがとう!