조사가 굉장히 중요하다.
사람'이' 있다. <<- 이게 맞는 말인 반면에
사람'가' 있다. <<- 이것은 틀린 말이다.
'가'를 쓰려면, 글자에 받침이 없어야한다.
즉, 아기'가' 울고있다. <<- 이거처럼....
일반 STT, TTS는 이것을 자동적으로 변환해주지 않는다.
그렇기 때문에 제어를 해줘야하는데
이것을 제어하기 위해 사용된 것이
Normalization이랑 유니코드이다.
String temp = text1.charAt(text1.length()-1)+"";
String temp2 = Normalizer.normalize(temp, Normalizer.Form.NFD);
text1은 사용자가 말한 위치가 들어있따.
우리는 그 text1에서 가장 마지막 글자만 보면 되므로 charAt을 써서
마지막에 있는 글자만 따왔다.
그 다음, Normalizer을 사용해서 temp의 값을 자음 and 모음으로 나눳다.
예를들면 '람' : ㄹ + ㅏ + ㅁ 이고
'이' : ㅇ + ㅣ 이다.
이렇게 나눠서 temp2에 저장되는데.
그전에 봐야할게 Normalizer.Form.NFD 이다.
두가지 형식이 있는데 NFD와 NFC이다. NFD는 위에 말한것처럼 나누는것이고
NFC는 이걸 유니코드 형식으로 보여주는 것이다.
우리는 밑에 받침이 있냐 없냐만 따지면 되기 때문에 NFD를 사용하였다.
이렇게 나누면 temp2에는 2의 길이를 가지거나 또는 3의 길이를 가진 것으로 나눠지게 된다.
if(temp2.length() >= 3){ ... } else { ... }
그래서 이 길이를 조사해서 if, else문으로 조사를 각각 다르게 사용해주면 된다.
Normalize를 몰랐을때는 막막했는데 알고나니 3줄로 끝나는 마술을 봤다..
댓글 없음:
댓글 쓰기