text to speech 사용법
TRANSCRIPT
TextToSpeech MethodsTextToSpeech(Context context, OnInitListener onInitListener)시스템 설정에서 선택된 Default Engine을 기준으로 생성
TextToSpeech(Context context, OnInitListener onInitListener, String Engine)시스템 설정과는 별도로 사용하고자 하는 Engine을 사용하여 생성* SDK 15 이상부터 지원
TextToSpeech MethodsareDefaultsEnforced()해당 값이 true 이면 app에서의 tts engine 설정을 무시(ICE 이상부터 false)
getDefaultEngine()System 에서 사용자가 설정한 Engine (ex, com.samsung.SMT, com.google.android.tts, etc.) 의 pakcage name 을 String Type으로 return
getDefaultLanguage()System 에서 사용자가 설정한 Locale 정보를 return
getEngines()System 에 설치되어 있는 TTS Engine Profile 정보의 List<EnginInfo>를 return
getFeatures(Locale locale)locale 데이터 위치가 내장(embedded)인지 Network 인지 Set<String>를 return(두가지 방식을 모두 지원할 수 있음)
setLanguage(Locale loc)해당 Locale 데이터로 설정. 설정 결과 returnLANG_AVAILABLE, LANG_COUNTRY_AVAILABLE, LANG_COUNTRY_VAR_AVAILABLE, LANG_MISSING_DATA, LANG_NOT_SUPPORTED.)
getLanguage()선택된 Locale 정보를 Return
isLanguageAvailable(Locale loc)지원 가능한 Locale 인지 확인 후 값 returnLANG_AVAILABLE, LANG_COUNTRY_AVAILABLE, LANG_COUNTRY_VAR_AVAILABLE, LANG_MISSING_DATA, LANG_NOT_SUPPORTED.)
setPitch(float pitch)음의 높낮이 설정. SUCESS / ERROR 반환pitch == 1.0 normal / pitch < 1.0 lower / pitch > 1.0 higher
setSpeechRate(float speechRate)음의 발음속도 설정. SUCESS / ERROR 반환speechRate == 1.0 normal / speechRate < 1.0 slower / speechRate > 1.0 faster
getMaxSpeechInputLength()file저장/speak String 의 최대 크기 (Android 내부 고정 값)
TextToSpeech Methods
setEngineByPackageName(String enginePackageName)Engine Package (ex. Samsung TTS Engine / Android TTS Engine etc.) 변경 * This method was deprecated in API level 14.
isSpeaking()현재 Speak 상태인지 검사 후 boolean return
setOnUtteranceCompletedListener(OnUtteranceCompletedListener listener)발음과 관련된 Listener (발음 완료 후 체크도 할 수 있음)* This method was deprecated in API level 15.
setOnUtteranceProgressListener(UtteranceProgressListener listener)발음과 관련된 Listener (발음 완료 후 체크도 할 수 있음) * SDK 15 이후 부터 이걸 사용해야함! (4.0.3+)
shutdown()TTS Engine이 사용하는 모든 자원을 Release. * 다시 사용하려면 TextToSpeech를 다시 Assign 해야함
stop()TTS Engine이 현재 Speak 하는 것을 Stop 하기 위해 사용
TextToSpeech Methods
speak(String text, int queueMode, HashMap<String, String> params)음성을 소리로 발성하는 Method. Utterance Listener를 통해 listening함
synthesizeToFile(String text, HashMap<String, String> params, String filename)음성을 파일로 저장하는 Method. Utterance Listener를 통해 listening함
playEarcon(String earcon, int queueMode, HashMap<String, String> params)이미지는 ICON, 소리로 나타내는 물체를 나타내는 것을 Earcon. 등록된 Earcon Play
addEarcon(...)Earcon을 Key와 Wav(Audio파일) 로 해서 등록 addEarcon(“[Tick]”, “/mnt/sdcard/audio/tick.wav”);
addSpeechTTS Engine 외에 Text 를 외부 wav를 통해 발성하도록 하기 위해 사용addSpeech(“@#@$”, “/mnt/sdcard/audio/spacial_char.wav”);
playSilence(long durationInMs, int queueMode, HashMap<String, String> params)쉼표나 마침표 등에서 조용한 음성이 Speak
TextToSpeech Methods
Utterance ListenerHashMap<String, String> params = new HashMap<String, String>();
TextToSpeech ttsEngine = new TextToSpeech(context, onInitListener() { @Override void onInit(int status) { /* initialize */ }
});
…
if (Build.VERSION.SDK_INT >=15) {ttsEngine.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override public void onStart(String utterID) {}@Override public void onDone(String utterID) {}@Override public void onError(String utterID) {}
}} else {
ttsEngine.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {@Override public void onUtteranceCompleted(String utterID) {}
});}
…
params.put(Engine.KEY_PARAM_UTTERANCE_ID, “This is your hoped ID”);ttsEngine.speak(text, TextToSpeech.QUEUE_FLUSH, params);
QUEUE_FLUSH/QUEUE_ADDttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 SpeechttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_FLUSH, params); // #02 SpeechttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_FLUSH, params); // #LAST Speech
SPEAK > See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_ADD, params); // #01 SpeechttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 SpeechttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > Hello Everyone! See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 SpeechttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 SpeechttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > Hello Everyone! See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 SpeechttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 SpeechttsEngine.stop();ttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > See you later!
addSpeech / addEarconttsEngine.addSpeech(“glass.wav”, “/mnt/sdcard/glass.wav”);ttsEngine.playSpeech(“glass.wav”, TextToSpeech.QUEUE_FLUSH, null);
SPEAK > /* glass.wav 의 녹음된 소리가 재생 됨 */특징 1 : 데이터 영역에 존재하지 않는 것을 별도로 처리할 수 있음특징 2 : 데이터 영역에 존재 하더라도 다른 소리가 나오도록 처리할 수 있음
ttsEngine.addSpeech(“glass.wav”, “/mnt/sdcard/glass.wav”);ttsEngine.playSpeech(“Hello glass.wav”, TextToSpeech.QUEUE_FLUSH, null);
SPEAK > Hello glass.wav특징 1 : 1:1로 매칭되는 경우만 wav 파일이 재생됨
ttsEngine.addEarcon(“[glass.wav]”, “/mnt/sdcard/glass.wav”);ttsEngine.playEarcon(“[glass.wav]”, TextToSpeech.QUEUE_FLUSH, null);
SPEAK > /* glass.wav 의 녹음된 소리가 재생 됨 */특징 1 : playSpeech와는 별도로 UI와 관련된 기능성 Play가 가능
ttsEngine.addEarcon(“[glass.wav]”, “/mnt/sdcard/glass.wav”);ttsEngine.playEarcon(“Hello [glass.wav]”, TextToSpeech.QUEUE_FLUSH, null);
SPEAK > No play any sound!특징 1 : 1:1 매칭되는 경우가 아니면 아무런 소리도 출력되지 않음
playSilencettsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, null);ttsEngine.playSlience(10000L, TextToSpeech.QUEUE_ADD, null);ttsEngine.speak(“World!”, TextToSpeech.QUEUE_ADD, null);
SPEAK > Hello ~~~~ 10 seconds ~~~~ World!