私のアプリケーションは視覚障害のある人が使用するため、テキストに大いに依存します。アプリケーションはAPIへの呼び出しを行い、関連する情報をユーザーに(android.speech.tts.TextToSpeechを使用して)読み込みます。Androidのテキストから音声への初期化は非常に遅い
音声をテキストに初期化するのに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);
が助けてくれてありがとう!
このスレッドをチェックしてください[Text To SpeechアプリのUIは遅くなりました](http://stackoverflow.com/a/24398365/2584794) – Anup