2015-01-11 8 views
7

私のアプリケーションは視覚障害のある人が使用するため、テキストに大いに依存します。アプリケーションは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); 

が助けてくれてありがとう!

+0

このスレッドをチェックしてください[Text To SpeechアプリのUIは遅くなりました](http://stackoverflow.com/a/24398365/2584794) – Anup

答えて

1

少し遅れていますが、デバイスでは何が起きているのでしょうか?他のものは、プロセッサ時間を優先します。私は盲目の人がそこに多くのアプリを必要としないと思う。また、Auto Startアプリも検討してください。アプリを自動的に起動します。

関連する問題