음성 인식 및 합성 과정에 대해 안드로이드에서 기본으로 제공하는 것 대한 정리입니다.

네이버 음성합성기 등 잘 정리되있는 인식, 합성기 예제들도 있지만 naver developers api 및 다른 api 들은 정리가 잘 되있기에

android 의 구글 음성 인식, 합성에 대해 알아보겠습니다.




ANDROID 음성 인식


string.xml에 <string name="speech_prompt">Say something&#8230;</string> 선언 


promptSpeechInput() 사용하시면 음성인식기가 출력됩니다.


 private void promptSpeechInput() {

    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, getString(R.string.speech_prompt));

startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {
case REQ_CODE_SPEECH_INPUT:
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(
RecognizerIntent.EXTRA_RESULTS);
//txtSpeechInput.setText(result.get(0));

Log.d("speech", "speech" + result.get(0));

String speechtext = result.get(0); //인식한 것에 대해 저장한 값




}
}
}



ANDROID 음성 합성 기본 예제


//추후 변환된 음성 MP3파일로 저장 구현


public class MainActivity extends AppCompatActivity implements TextToSpeech.OnInitListener {
private TextToSpeech myTTS;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

myTTS = new TextToSpeech(this, this);

}

public void onInit(int status) {
String myText1 = "hello android.";
String myText2 = "말하는 스피치 입니다.";
Locale enUs = new Locale("korea"); //Locale("en_US");
if (myTTS.isLanguageAvailable(enUs) == TextToSpeech.LANG_AVAILABLE)
{myTTS.setLanguage(enUs);
System.out.println("us나옴");}
else{
myTTS.setLanguage(Locale.KOREA);
}


//myTTS.setLanguage(Locale.US); // 언어 설정 , 단말기에 언어 없는 버전에선 안되는듯
myTTS.setPitch((float) 0.1); // 높낮이 설정 1이 보통, 6.0미만 버전에선 높낮이도 설정이 안됨
myTTS.setSpeechRate(1); // 빠르기 설정 1이 보통


//myTTS.setVoice();

myTTS.speak(myText1, TextToSpeech.QUEUE_FLUSH, null); // tts 변환되어 나오는 음성
myTTS.speak(myText2, TextToSpeech.QUEUE_ADD, null); //QUEUE_FLUSH 다음에 나오는 QUEUE_ADD
}

@Override
protected void onDestroy() {
super.onDestroy();
myTTS.shutdown(); //speech 리소스 해제
}

} 







+ Recent posts