Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Text to Speech 사용법

3,612 views

Published on

Usage of Text to speech in Android(4.0+)

Published in: Software
  • Be the first to comment

  • Be the first to like this

Text to Speech 사용법

  1. 1. How to use TextToSpeech Android (4.0+)
  2. 2. What is a Text to speech! I love you!
  3. 3. TextToSpeech Methods TextToSpeech(Context context, OnInitListener onInitListener) 시스템 설정에서 선택된 Default Engine을 기준으로 생성 TextToSpeech(Context context, OnInitListener onInitListener, String Engine) 시스템 설정과는 별도로 사용하고자 하는 Engine을 사용하여 생성 * SDK 15 이상부터 지원
  4. 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. 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. 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. 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. 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. 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. 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 매칭되는 경우가 아니면 아무런 소리도 출력되지 않음
  11. 11. playSilence ttsEngine.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!
  12. 12. synthesizeToFile ttsEngine.speak(“Hello world!”, null, “/mnt/sdcard/test.wav”); SPEAK > No Speak FILE > /mnt/sdcard/test.wav 생성

×