2014-09-13 2 views
1

oncreate 메서드 중 일부 텍스트를 음성으로 변환하고 싶습니다. 활동이 시작되면 텍스트가 나옵니다. 어떻게 할 수 있습니까 ???안드로이드에서 OnCreate 메서드로 TTS를 시작하는 방법

나는 tts에서 정상적으로 작동하는 법을 알고있다. 다음은 샘플 코드입니다. 그러나 활동이 시작될 때는 작동하지 않습니다.

public class AndroidTextToSpeechActivity extends Activity implements 
    TextToSpeech.OnInitListener { 
/** Called when the activity is first created. */ 

private TextToSpeech tts; 
private Button btnSpeak; 
private EditText txtText; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tts = new TextToSpeech(this, this); 

    btnSpeak = (Button) findViewById(R.id.btnSpeak); 

    txtText = (EditText) findViewById(R.id.txtText); 

    // button on click event 
    btnSpeak.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      speakOut(); 
     } 

    }); 
} 

@Override 
public void onDestroy() { 
    // Don't forget to shutdown tts! 
    if (tts != null) { 
     tts.stop(); 
     tts.shutdown(); 
    } 
    super.onDestroy(); 
} 

@Override 
public void onInit(int status) { 

    if (status == TextToSpeech.SUCCESS) { 

     int result = tts.setLanguage(Locale.US); 

     if (result == TextToSpeech.LANG_MISSING_DATA 
       || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
      Log.e("TTS", "This Language is not supported"); 
     } else { 
      btnSpeak.setEnabled(true); 
      speakOut(); 
     } 

    } else { 
     Log.e("TTS", "Initilization Failed!"); 
    } 

} 

private void speakOut() { 

    String text = txtText.getText().toString(); 

    tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); 
} 

}

+0

음성 코드를 onResume 메소드에 넣으려고 시도하면이 메소드는 사용자가 활동을 볼 수 있고 상호 작용할 수있을 때 호출됩니다. –

답변

0

귀하의 코드 당신이 화재 콜백 인의 onInit() 방법에 speakOut()를 호출하기 때문에, 즉시 가능하게 할 수있는 동적으로 생성 된 음성을 재생할 때 텍스트 음성 변환 신디사이저를 사용할 준비가되었습니다.

음성을 빨리 생성하고 말하기 구 및 말하기 로캘을 미리 알고 싶으면 합성 음성을 미리 생성하고 WAV 파일에 저장 한 다음 나중에 다시 재생할 수 있습니다 MediaPlayer로 :

HashMap<String, String> myHashRender = new HashMap(); 
String wakeUpText = "Are you up yet?"; 
String destFileName = "/sdcard/myAppCache/wakeUp.wav"; 
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, wakeUpText); 
mTts.synthesizeToFile(wakuUpText, myHashRender, destFileName); 

은 자세한 내용은 the article를 참조하십시오.

관련 문제