알렉사는 아마존이 판매하고 있는 에코(Echo)라는 스피커에 들어있는 음석인식 솔루션이다. 구글 보이스, 애플 시리와 비슷하게 음성 인식을 통한 명령을 인식하고 그 에 맞는 응답을 제공한다
알렉사는 서드파티 업체가 사용할 수 있도록 SDK가 공개 되었다. 여기에서는 서드 파티가 알렉사를 어떻게 사용할 수 있는지 살펴본다.
현재 아마존은 총 2가지의 알렉사 기능을 제공한다. Alexa Skills Kit(ASK) 와 Alexa Voice Service(AVS)가 그것이다.
Alexa Skills Kit
알렉사에게 새로운 음성 능력을 부여할 수 있게 해주는 기능이다.

- 사용자가 명령을 내리면
- 알렉사가 사용자의 요청을 분석해서 구조화한 후 서비스로 전송한다.
- 서비스는 요청을 처리해서 텍스트 또는 그래피컬한 응답을 한다.
- 알렉사가 리턴받은 텍스트를 음성으로 변환한 후 장치로 스트림 한다.
- 장치는 응답받은 알렉사의 보이스를 플레이한다
위 구조에서 2,3,4 번은 Device 가 아닌 Server에서 처리하는 것으로 보인다.
예를 들어 보면, 사용자가 아래 음성을 말했다면
“Alexa, ask Greeter to say hello”
- Alexa는 에코를 깨우는 단어이다. 이 단어에서 부터 대화가 시작된다.
- ask … to 는 알렉사가 지원하는 표현법중 하나이다. 알렉사에서 지원되는 표현법은 여기를 참조
- Greeter 가 사용자가 원하는 능력을 선택하는 식별단어이다
- Say Hello 는 실제 요청,질문,명령에 해당되고 서비스에게 세부적인 의미로 매핑되서 서비스에게 전달된다
Alexa Skills Kit Voice Design Handbook 문서에 있는 예제를 살펴보면,
- 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.
- 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을 활용하려면 아래와 같은 구조를 가져야 한다.
- Alexa로 시작해야 한다
- 대상을 지정한다(위 예제에서는 Astrology, Score Keeper)
- 명령을 지정한다(위 예제에서는 ask to, tell to)
- 세부정보를 지정한다. 이 부분은 사용자가 작성한 서비스에 의존적이다(위 예제에서는 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를 이용해서 새로운 장치가 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로 시작 안해도 되고, 식별 단어도 따로 없어도 되는 것 같다.
- 서드 파티 제품에 알렉사를 넣는다고 하면 알렉사의 여자 목소리를 바꿀수 없다