Dev./Android

구글 음성 출력 사용하기(TTS : TextToSpeech)

like miller 2012. 5. 24. 11:42
1. TTS 란?

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 생성할 때 엔진을 설정할 수 있다.


전체 샘플 코드 첨부하였습니다.

*글과 자료는 출처만 밝히시면 얼마든지 가져다 쓰셔도 됩니다.


TextToSpeech.zip



TextToSpeech.zip
0.17MB