2015-01-11 4 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가 느린 Android입니다.] (http://stackoverflow.com/a/24398365/2584794) – Anup

답변

1

조금 늦 았지만 간단히 말해서 장치에서 무슨 일이 일어나고 있는지 말할 수 있습니다. 높은 우선 순위를 갖는 다른 것들은 프로세서 시간을 갖는다. 나는 맹인이 거기에 많은 앱을 필요로하지 않을 것이라고 생각한다. 또한 자동 시작 응용 프로그램을 고려하십시오. 자동으로 앱을 시작합니다.

관련 문제