3. TextToSpeech Methods
TextToSpeech(Context context, OnInitListener onInitListener)
시스템 설정에서 선택된 Default Engine을 기준으로 생성
TextToSpeech(Context context, OnInitListener onInitListener, String Engine)
시스템 설정과는 별도로 사용하고자 하는 Engine을 사용하여 생성
* SDK 15 이상부터 지원
4. TextToSpeech Methods
areDefaultsEnforced()
해당 값이 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
(두가지 방식을 모두 지원할 수 있음)
5. setLanguage(Locale loc)
해당 Locale 데이터로 설정. 설정 결과 return
LANG_AVAILABLE, LANG_COUNTRY_AVAILABLE, LANG_COUNTRY_VAR_AVAILABLE, LANG_MISSING_DATA, LANG_NOT_SUPPORTED.)
getLanguage()
선택된 Locale 정보를 Return
isLanguageAvailable(Locale loc)
지원 가능한 Locale 인지 확인 후 값 return
LANG_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
6. 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
7. 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”);
addSpeech
TTS Engine 외에 Text 를 외부 wav를 통해 발성하도록 하기 위해 사용
addSpeech(“@#@$”, “/mnt/sdcard/audio/spacial_char.wav”);
playSilence(long durationInMs, int queueMode, HashMap<String, String> params)
쉼표나 마침표 등에서 조용한 음성이 Speak
TextToSpeech Methods
8. Utterance Listener
HashMap<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);
9. QUEUE_FLUSH/QUEUE_ADD
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 Speech
ttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_FLUSH, params); // #02 Speech
ttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_FLUSH, params); // #LAST Speech
SPEAK > See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_ADD, params); // #01 Speech
ttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 Speech
ttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > Hello Everyone! See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 Speech
ttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 Speech
ttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > Hello Everyone! See you later!
ttsEngine.speak(“Hello”, TextToSpeech.QUEUE_FLUSH, params); // #01 Speech
ttsEngine.speak(“Everyone!”, TextToSpeech.QUEUE_ADD, params); // #02 Speech
ttsEngine.stop();
ttsEngine.speak(“See you later!”, TextToSpeech.QUEUE_ADD, params); // #LAST Speech
SPEAK > See you later!
10. addSpeech / addEarcon
ttsEngine.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 매칭되는 경우가 아니면 아무런 소리도 출력되지 않음