Amazon Alexa 분석

알렉사는 아마존이 판매하고 있는 에코(Echo)라는 스피커에 들어있는 음석인식 솔루션이다. 구글 보이스, 애플 시리와 비슷하게 음성 인식을 통한 명령을 인식하고 그 에 맞는 응답을 제공한다

알렉사는 서드파티 업체가 사용할 수 있도록 SDK가 공개 되었다. 여기에서는 서드 파티가 알렉사를 어떻게 사용할 수 있는지 살펴본다.

현재 아마존은 총 2가지의 알렉사 기능을 제공한다. Alexa Skills Kit(ASK) 와 Alexa Voice Service(AVS)가 그것이다.

Alexa Skills Kit

알렉사에게 새로운 음성 능력을 부여할 수 있게 해주는 기능이다.

askarchitecture.png

  1. 사용자가 명령을 내리면
  2. 알렉사가 사용자의 요청을 분석해서 구조화한 후 서비스로 전송한다.
  3. 서비스는 요청을 처리해서 텍스트 또는 그래피컬한 응답을 한다.
  4. 알렉사가 리턴받은 텍스트를 음성으로 변환한 후 장치로 스트림 한다.
  5. 장치는 응답받은 알렉사의 보이스를 플레이한다

위 구조에서 2,3,4 번은 Device 가 아닌 Server에서 처리하는 것으로 보인다.

예를 들어 보면, 사용자가 아래 음성을 말했다면

“Alexa, ask Greeter to say hello”

  1. Alexa는 에코를 깨우는 단어이다. 이 단어에서 부터 대화가 시작된다.
  2. ask … to 는 알렉사가 지원하는 표현법중 하나이다. 알렉사에서 지원되는 표현법은 여기를 참조
  3. Greeter 가 사용자가 원하는 능력을 선택하는 식별단어이다
  4. Say Hello 는 실제 요청,질문,명령에 해당되고 서비스에게 세부적인 의미로 매핑되서 서비스에게 전달된다

Alexa Skills Kit Voice Design Handbook 문서에 있는 예제를 살펴보면,

  1. Asks a question and the Alexa skill gives a response.
    • User: “Alexa, ask Astrology Daily for the horoscope for Leo.”
    • Astrology Daily: Today’s outlook for Leo: An opportunity presents itself at work.
  2. Tells the Alexa skill to do something, and the skill provides confirmation that action has been taken.
    • User: “Alexa, tell Score Keeper to give Tom five points.”
    • Score Keeper: Five points for Tom.

예제에서 보듯이 Alexa Skills Kit을 활용하려면 아래와 같은 구조를 가져야 한다.

  1. Alexa로 시작해야 한다
  2. 대상을 지정한다(위 예제에서는 Astrology, Score Keeper)
  3. 명령을 지정한다(위 예제에서는 ask to, tell to)
  4. 세부정보를 지정한다. 이 부분은 사용자가 작성한 서비스에 의존적이다(위 예제에서는 horoscope for leo, five tom five point)

세부 정보도 의미를 파악하기 위해서는 더 의미가 분리되어야 한다.

이때 사용할 문장 정보를 정의해줘야 한다


GetHoroscope what is the horoscope for {Sign} 

GetHoroscope what will the horoscope for {Sign} be on {Date} 

GetHoroscope get me my horoscope GetHoroscope {Sign}

 ... 

GetLuckyNumbers what are my lucky numbers 

GetLuckyNumbers tell me my lucky numbers 

... 

MatchSign do {FirstSign} and {SecondSign} get along 

MatchSign what is the relationship between {FirstSign} and {SecondSign}

위 정보를 토대로 문장을 분석해서 Alexa는 사용자 음성을 분석해서 서비스에게 JSON 포맷으로 세분화된 정보를 전송한다

{
intents : [
    intent : {
      GetHoroscope,
      slots : [
        {
          name : Sign,
          type : LIST_OF_SIGNS
        },
        {
          name : Date,
          type : AMAZON.DATE
        }
      ]
    },
    {
      intent: GetLuckyNumbers
    }
  ]
}

 

Alexa Voice Service

알렉사 보이스 서비스는 서드 파티가 만든 새로운 디바이스에 알렉사의 능력을 제공하기 위한 서비스이다. 이렇게 되면 Amazon Echo와 동일한 능력을 가지게 된다.

예를 들어, 당신이 새로운 스마트 워치를 만들었다고 하자. 당신의 사용자가 스마트 워치에 대고 “what’s the weather” 또는 “how’s traffic”이라고 물어봤다면, AVS는 알렉사의 능력을 이용해서 날씨를 검색해서 사용자가 장치를 통해서 들을수 있는 오디오 정보를 리턴한다.

당신은 AVS 와 ASK를 동시에 사용해서 더 복잡한 인터렉션을 구현할 수 있다.  스마트 워치 예제를 다시 살펴보면, 당신은 ASK(Alexa Skills Kit)을 이용해서 알렉사를 학습시킨 후에 아래 명령을 인식하게 할 수 있다.

"Start my run"
"Stop my run"
"What's my heart rate"
"How far have I run"
"How long was my run"
"Compare this run to my personal best"

avs_getting_started_1 (1).png

위 그림은 AVS를 이용해서 새로운 장치가 Alexa 서비스를 이용하는 구조를 보여준다. 위 그림에서 보듯이 장치는 알렉사에게 Audio 데이터 그 자체를 전송한다. Alexa는 결과값으로 Audio 데이터를 다시 리턴한다.

위 구조에서 Audio Capture 규칙은 Your Device가 알아서 정해야 한다. 아마존은 Push-to-talk 를 추천한다. 만약 voice trigger를 사용하고 싶다면 아마존에 연락하라고 적혀 있다.

Push-to-talk devices and applications are currently permitted by the Alexa Voice Service. If you are interested in building far-field voice recognition or using a spoken word to trigger activation of the Alexa Voice Service in your device or application, pleasecontact Amazon.

 

결론

  • 알렉사 서비스는 명령/응답 구조를 가지고 있다
    • 알렉사가 먼저 말을 걸지는 않는다
  • 알렉사 서비스의 99%는 서버에서 수행된다. Device가 하는거라곤 음성 녹음 및 재생 뿐이다
  • 알렉사에 새로운 명령을 추가하려면 서버쪽에 처리 서비스를 구현해주어야 한다
  • ASK 랑 AVS를 같이 쓰면 Alexa로 시작 안해도 되고, 식별 단어도 따로 없어도 되는 것 같다.
  • 서드 파티 제품에 알렉사를 넣는다고 하면 알렉사의 여자 목소리를 바꿀수 없다

 

 

Advertisements

Amazon Alexa 분석”에 대한 답글 1개

  1. 김다래 2017년 2월 7일 / 11:33 오전

    질문이 있는데요. 아마존 스킬즈라는 것은 회사(SmartThings나 Hue)에서도 등록할 수 있는 개념이며, 이미 등록되어 있어도 명령을 추가하고 싶으면 스킬즈를 통해 더 추가할 수 있는 그런 개념일까요?

    좋아요

    • jundols 2017년 2월 13일 / 11:38 오전

      Skill Kit말씀하시는 건가요? 알렉사를 이용해서 음성 인식이 되는 제품을 만들려는 회사가 자신만의 명령을 알렉사에게 등록하고 싶을때 사용합니다. 예를 들어서 자동차에 설치해서 음성인식이 되는 방향제를 만든다고 합시다. 자동차에 관련된 명령이 필요할 텐데 이때 Skill kit에 해당 제품에 필요한 명령들을 넣어주는겁니다.

      좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

w

%s에 연결하는 중