12
How to use TextToSpeech Android (4.0+)

Text to Speech 사용법

Embed Size (px)

Citation preview

How to use TextToSpeech

Android (4.0+)

What is a Text to speech!

I love you!

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!

synthesizeToFilettsEngine.speak(“Hello world!”, null, “/mnt/sdcard/test.wav”);

SPEAK > No SpeakFILE > /mnt/sdcard/test.wav 생성