ISFP의 느리게 굴러가는 개발 블로그

[Unity] 유니티에서 IBM Watson Speech to Text API 사용해서 음성 인식 기능 구현하기 본문

학교 공부/졸업프로젝트

[Unity] 유니티에서 IBM Watson Speech to Text API 사용해서 음성 인식 기능 구현하기

taeeeeun 2021. 3. 1. 18:19

유니티에서 IBM Watson Speech to Text API 사용해서 

음성 인식 기능 구현하기

 

우리 졸업 프로젝트에서 가장 구현할 수 있을까? 와 구현했으면 좋겠던 부분이 바로 물체 인식음성 인식이었다.

우리가 프로젝트에서 타제품들과 차별점을 둔 것이 바로 강아지와 사용자와의 인터랙션이었기 때문이다.

 

원래 내가 맡은 부분은 손을 내밀었을 때 강아지가 앉게끔 하는 것이었는데, 생각보다 손 인식이 힘들어서 이걸 음성 인식으로 하면 어떨까? 하는 생각에 음성 인식을 구현하는 방법을 찾아봤다. 검색을 했을 때 다양한 API들이 나왔는데 돈을 지불해야 하는 경우도 있었고, 한국어 지원이 안되는 경우도 많았다. 그러다가 딱 맞는 것이 바로 이 IBM Watson STT API 였다. 

 

IBM Watson Speech to Text API 사용하기

 

1. github.com/watson-developer-cloud/unity-sdk 에서 하이라이트 된 링크에서 SDK 다운로드하기

 

watson-developer-cloud/unity-sdk

:video_game: Unity SDK to use the IBM Watson services. - watson-developer-cloud/unity-sdk

github.com

unity-sdk-core과 unity-sdk 두개 모두 다운받고 압축 풀어주기

 

2. 프로젝트의 'Assets' 폴더에 불러오기

 

 

3. [File]->[Build Settings]->[Player Settings]->[Api Compatibiltiy Level]을. NET 4.x로 변경

 

(뷰포리아 SDK를 받았다면 위 과정을 실행했을 때 namespace '<global namespace>' contains a definition conflicting with alias 'Utility' 이런 충돌이 일어날 것이다. 이 에러는 이미 Utility라는 변수가 사용되고 있으니 다른 단어로 바꿔주면 된다. (나는 CloudUtility 이런 식으로 바꿔줬다.))

 

3번을 실행하고 다시 유니티 프로젝트를 껐다 켜면 위에 'Watson'이라고 뜨는 것을 확인할 수 있다.

 

4. [Watson]->[Sign up for IBM Cloud]

해당 화면에서 계정을 만든 뒤 'speech to text'를 검색한다.

 

 

5. Lite 플랜 선택 후 작성 클릭

 

6. [관리] 탭을 클릭하면 API 키와 URL이 뜬다.

 

 

7. 다시 유니티로 돌아와서 [unity-sdk]->[Examples]->[ExampleStreaming]의 씬에 있는 오브젝트들을 아래와 같이 내가 구현하고 있는 씬에 추가한다.

(그리고 ExampleStreaming 씬은 그냥 삭제한다.)

 

8. ExampleStreaming Script에 URL과 API 키를 입력한다.

 

여기까지 했다면 이제 Watson API를 사용해서 음성인식이 가능하다. 나는 음성인식한 결과로 강아지의 움직임을 변화시키고자 했다.

 

음성 인식을 통해 물체의 행동 변화시키기

 

강아지의 초기 상태는 barking이고 사용자가 '앉아'라고 말을 하면 강아지가 앉도록 'CorgiSit' 애니메이션을 호출할 것이다.

 

우선 나는 에셋에서 구매한 애니메이션을 사용했기 때문에 애니메이션을 만드는 과정은 생략한다.

내가 만든 animator

위에 불렀던 ExampleStreaming에서 Script를 다음과 같이 수정했다.

 

 

1. Animator 변수 선언

public Animator anim; 

 

2. 언어를 한국어로 변경

 

가능한 언어 목록: cloud.ibm.com/docs/speech-to-text?topic=speech-to-text-models

 

3. 사용자가 '앉아'라고 했을 때 애니메이션 불러오기

 

 

(직접 실행해본 영상)

 

 

이 음성 인식은 처음으로 interim을 인식하고 이걸 정제해서 최종적으로 인식한 것을 final으로 저장하는데, 위처럼 코드를 적으면 코기의 움직임이 2번 바뀐다. 따라서 아래처럼 최종적으로 '앉아'를 인식했을 때 애니메이션을 바꾸도록 코드를 짰다.

 

 

그래서 이렇게 코드를 다듬으면 다음과 같은 결과물이 나온다.

 

 

참고 영상: youtu.be/FgjkqEkcrbA

 

Comments