TTS 는 TextToSpeech의 약자로 글자를 음성으로 변경해 주는 것을 의미한다. 전에 올린 음성을 글자로 변경하는 SpeechToText의 반대 개념이다.
TTS 는 말을 못하는 장애를 가진 사람들에게 유용하게 쓰이고 또 책을 읽어주는 프로그램, 안내방송 등 사용가능한 분야도 많이 있다.
2. TTS 사용하기 전 준비사항
사용자는 단말에 TTS엔진에 따른 언어가 설치되어 있는지 확인해야 한다. 단말의 설정 -> 음성입력 & 출력에 들어가면 TextToSpeech에 대한 설정을 할 수 있다. 엔진을 선택할 수 있고 각 엔진별 언어 설치 상태도 확인할 수 있다. 해당 언어가 설치되어 있지 않으면 TTS를 사용할 수 없다.
참고로 안드로이드에서 기본적으로 설치된 pico엔진은 한국어를 사용할 수 없다. 삼성 기기의 경우 samsung 엔진이 탑재되어 있어 삼성엔진을 사용하면 한국어로 TTS를 사용할 수 있다.
3. TTS 예제 UI 구성
화면은 언어를 선택할 수 있고 사용자의 글을 입력 받거나 샘플 텍스트를 선택하여 음성 출력을 할 수 있게 만들었다. 추가적으로 pitch(목소리 톤)와 rate(속도) 를 조절할 수 있는 seek bar가 있다.
4. 소스 적용
*TTS 객체 생성 및 음성 출력
객체 생성시 onInitListener를 넘겨줘서 초기화 결과를 받아서 초기화에 성공했는지 실패했는지 알 수 있다.
TTS 객체 생성 후 언어를 설정 후 텍스트를 음성 출력하면된다.
public class TextToSpeechActivity extends Activity implements onInitListener {
private TextToSpeech mTTS;
private boolean isInit
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTTS = new TextToSpeech(this, this);
String text = "Hello World";
mTTS.setLanguage(Locale.US); //언어 설정.
mTTS.speak(text, TextToSpeech.QUEUE_FLUSH, null); //해당 언어로 텍스트 음성 출력
}
/**
* TextToSpeech 초기화 리스너 구현 메소드
* @param status - 상태 코드
*/
public void onInit(int status) {
isInit = status == TextToSpeech.SUCCESS; //성공여부 저장
int msg = isInit ? R.string.msg_success_init : R.string.msg_fail_init; //메시지 설정
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); //메시지 출력
}
}
*기타 설정
- isLanguageAvailable : 단말에서 지원가능한 언어인지 판단하는 메소드. int형을 반환.
- setPitch : 목소리 톤 설정. 1.0 이 보통의 톤. 숫자가 작으면 톤이 낮아짐.
- setSpeechRate : 속도 설정. 1.0 이 보통의 속도. 숫자가 작으면 속도는 느려짐.
- getEngines : 단말에 설치된 엔진을 가져온다. TTS 생성할 때 엔진을 설정할 수 있다.
전체 샘플 코드 첨부하였습니다.
*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다.
'Dev. > Android' 카테고리의 다른 글
GCM 사용하기 1 (GCM 서비스 신청하기) (0) | 2012.07.18 |
---|---|
화면 잠금(Screen off) 어플을 만들자 (0) | 2012.07.02 |
동적으로 아이템이 추가되는 ViewPager (0) | 2012.05.18 |
무한 스크롤 되는 ViewPager (0) | 2012.04.30 |
JDK 1.7 에서 맵 키 발급 받기 (0) | 2012.02.02 |