Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) 간단하게 TTS(Text-To-Speech) 구현하기

안드로이드 개발
반응형

안드로이드(Android) 간단하게 TTS(Text-To-Speech) 구현하기

 

개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2

 

안드로이드에서는 텍스트를 소리로 바꿔주는

기능이 존재합니다. 1.6 버전부터 지원하고 있는데

거의 완벽하게 소리로 전환이 가능합니다.

이 기능에 대해서 간단하게 구현된 것입니다.


 

TTS 를 사용하기 위해 두개의 클래스를 사용합니다.

실질적인 기능을 하는 TextToSpeech, 이벤트를

구현할 인터페이스 OnInitListener 입니다.

 

android.speech.tts.TextToSpeech;
android.speech.tts.TextToSpeech.OnInitListener;

 

TextToSpeech 객체를 생성하는데 인수로 Context

OnInitListener 를 요구하므로 메인 Activity

OnInitListener 인터페이스를 상속합니다.

 

@Override
protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_sample_activity6);

	myTTS = new TextToSpeech(this, this);
}

 

그리고 OnInitListener 인터페이스 클래스에 제공되는

하나의 함수가 있는데 onInit 입니다.

이 함수를 구현하는데 이곳에 소리로 전환할

텍스트를 넣으면 됩니다.

 

onInit  함수는 텍스트를 소리로 전환하기 위해

speak() 라는 함수를 사용합니다. 여기에 옵션으로

들어가는 TextToSpeech.QUEUE_FLUSH 는 큐에 모든

값을 없애고 초기화한후 값을 넣는 옵션입니다.

TextToSpeech.QUEUE_ADD 는 현재 있는 큐값에

추가하는 옵션입니다.

 

public void onInit(int status) {
	String myText1 = "안녕하세요 안드로이드 블로그 녹두장군 입니다.";
	String myText2 = "말하는 스피치 입니다.";
	myTTS.speak(myText1, TextToSpeech.QUEUE_FLUSH, null);
	myTTS.speak(myText2, TextToSpeech.QUEUE_ADD, null);
}

 

Activity 가 소멸되면 TTS 객체는 소멸해야 합니다.

그래서 onDestory() 함수에 그 소스가 있습니다.

 

@Override
protected void onDestroy() {
	super.onDestroy();
	myTTS.shutdown();
}
이것을 구현한 메인 Activity 전체 소스 입니다.
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;

public class SampleActivity7 extends Activity implements OnInitListener {

	private TextToSpeech myTTS;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_sample_activity6);

		myTTS = new TextToSpeech(this, this);
	}

	public void onInit(int status) {
		String myText1 = "안녕하세요 안드로이드 블로그 녹두장군 입니다.";
		String myText2 = "말하는 스피치 입니다.";
		myTTS.speak(myText1, TextToSpeech.QUEUE_FLUSH, null);
		myTTS.speak(myText2, TextToSpeech.QUEUE_ADD, null);
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		myTTS.shutdown();
	}
}

 

반응형
Posted by 녹두장군1
,