요즘 많은 사람들이 집이나 사무실에서 일상 업무를 돕기 위해 음성 비서 소프트웨어를 활용하고 있습니다. 시중에 다양한 스마트 스피커를 구매할 수 있지만, 사실 직접 만들 수도 있다는 사실을 알고 계셨나요? 아마존 개발자(Amazon Developer)에서 제공하는 알렉사(Alexa) 소프트웨어를 활용하면 라즈베리 파이만으로 자신만의 아마존 에코(Echo)를 만들 수 있습니다.
준비물
이 프로젝트를 진행하려면 다음 항목들이 필요합니다.
- 라즈베리 파이 3 또는 파이 2 모델 B, 그리고 마이크로 USB 전원 케이블
- 마이크로 SD 카드(최소 8GB) – 운영체제가 설치되어 있지 않다면, 초보자도 쉽게 쓸 수 있는 NOOBS(New Out of the Box Software) 운영체제를 추천합니다. NOOBS를 가장 간편하게 구하는 방법은 미리 탑재된 SD 카드를 구입하는 것입니다.
- USB 2.0 미니 마이크
- 외부 스피커와 3.5mm 오디오 케이블
- USB 키보드·마우스 및 외부 HDMI 모니터
- 인터넷 연결(유선 이더넷 또는 Wi-Fi)
- 파이 2를 무선으로 인터넷에 연결하려면 별도의 Wi-Fi 무선 어댑터가 필요합니다. 파이 3에는 Wi-Fi가 기본 내장되어 있습니다.
아마존 개발자 계정 등록하기
아마존 개발자 계정이 없다면 공식 페이지에서 무료로 생성할 수 있습니다. 가입 전에 AVS(알렉사 음성 서비스, Alexa Voice Service) 이용약관을 꼼꼼히 읽어두시기 바랍니다.

프로필 정보를 입력합니다.

앱 배포 계약(App Distribution Agreement)을 읽고 동의합니다.

개발한 앱을 수익화할지 여부를 선택합니다.

아마존 개발자에서 디바이스 생성하기
개발자 계정 등록을 마쳤다면 알렉사 디바이스와 보안 프로필(Security Profile)을 생성합니다. 설정 과정에서 ProductID, ClientID, ClientSecret 값은 반드시 메모해 두세요. 나중에 다시 입력해야 합니다.
상단 메뉴에서 “Alexa Voice Service”를 선택합니다.

“Welcome to Developer” 화면이 나타납니다.

첫 번째 화면에서는 만들고자 하는 제품에 대한 정보를 입력합니다.
1. 먼저 디바이스 이름을 정합니다.

2. 다음으로 공백이나 특수문자가 없는 Product ID를 입력합니다.
참고: 이 값은 나중에 필요하니 어딘가에 기록해 두세요.

3. 제품 유형(Product Type)은 “Alexa-Enabled Device”를 선택합니다.

4. 알렉사에는 컴패니언 앱이 필요합니다. 해당 질문에 “예(Yes)”를 선택합니다.

5. 드롭다운 메뉴에서 “Wireless Speakers”를 선택합니다.
6. 설명란에는 “Raspberry Pi Project on Github”라고 입력합니다. 이 정보는 AVS 참고용이며 외부에 노출되지 않습니다.
7. “Touch-initiated”와 “Hands-free” 옵션을 모두 체크합니다.

8. 디바이스 이미지를 업로드할 수도 있지만, 지금은 이 단계를 건너뛰겠습니다.
9. 상업적 배포(commercial distribution)와 아동용 제품(children’s product) 질문에는 모두 “아니오(No)”를 선택합니다.

10. “Next”를 클릭합니다.
보안 프로필 생성하기
이 페이지에서는 LWA(Login with Amazon) 보안 프로필을 새로 만들어 이 프로젝트의 사용자 데이터와 보안 자격 증명을 식별합니다.
1. “Create new profile”을 클릭합니다.

2. 프로필 이름을 정합니다. 예를 들어 “Alexa Security Profile”과 같이 지을 수 있습니다.

3. 프로필 설명을 입력합니다. “Alexa Security Profile Description”이라고 적어도 좋습니다.

4. “Next”를 클릭합니다.
5. 아마존이 Client ID와 Client Secret을 자동 생성해 줍니다. 이것이 나중에 필요한 나머지 두 가지 값입니다. 가까운 곳에 잘 보관하세요.

6. Allowed origins와 Allowed return URLs를 입력합니다. 이 프로젝트에서는 http와 https 경로를 모두 사용하므로 “Allowed Origins” 필드에 “https://localhost:3000”을 입력합니다.
7. “Add”를 클릭합니다.
8. 같은 입력란에 “https://localhost:3000”을 추가로 입력합니다.

9. 다시 “Add”를 클릭합니다.
10. Allowed Return URLs에도 동일한 방식으로 다음 두 URL을 입력합니다.
https://localhost:3000/authresponse https://localhost:3000/authresponse
11. Finish를 누르기 전 화면은 아래와 같아야 합니다. 입력했던 URL이 여전히 입력란에 남아 있지 않은지 확인하세요. URL은 추가되면 회색 배경 위에 표시됩니다.

12. “Finish”를 클릭하면 아래 화면이 나타납니다. 프로젝트 생성이 완료되었으며 이제 설치할 준비가 되었습니다.

알렉사 샘플 앱 클론하기
1. 터미널(Terminal)을 엽니다.

2. 다음 명령어를 입력합니다.
cd Desktop git clone https://github.com/alexa/alexa-avs-sample-app.git
설치 스크립트에 자격 증명 입력하기
설치 스크립트를 실행하기 전에, 아마존에서 기록해 둔 ProductID, ClientID, ClientSecret 값을 스크립트에 반영해야 합니다.
1. 터미널에 다음을 입력합니다.
cd ~/Desktop/alexa-avs-sample-app nano automated_install.sh
2. 편집 화면이 열리면 키보드 방향키로 이동하여 ProductID, ClientID, ClientSecret 필드를 본인의 값으로 교체합니다.

수정 결과는 아래와 같습니다.
ProductID="Your Device Name" ClientID="amzn.xxxxx.xxxxxxxxx" ClientSecret="4e8cb14xxxxxxxxxxxxxxxxxxxxxxxxxxxxx6b4f9"
3. Ctrl + X를 눌러 편집기를 종료하고, Y를 누른 뒤 Enter를 눌러 변경 사항을 저장합니다.
설치 스크립트 실행하기
스크립트를 실행하려면 터미널을 열고 다음 명령어를 입력합니다.
cd ~/Desktop/alexa-avs-sample-app . automated_install.sh
스크립트가 실행되는 동안 몇 가지 간단한 질문에 답하게 됩니다. 이는 프로그램 설치 전에 아마존 쪽 설정을 모두 마쳤는지 확인하기 위한 절차입니다.

설치에는 약 30분 정도 걸리니, 그동안 간식이라도 하나 챙겨 드세요.
정상적으로 설치가 완료되면 터미널 창이 아래 이미지와 같이 표시됩니다.

세 개의 터미널 창
알렉사 앱을 실행하려면 세 단계를 완료해야 합니다. 각 단계는 반드시 별도의 터미널 창에서 실행해야 하며, 순서도 정확히 지켜야 합니다.
진행 중 필요하지만 설치되어 있지 않은 프로그램이 몇 가지 있었습니다. 저는 그때마다 해당 프로그램을 설치했습니다. 같은 문제를 겪을 경우를 대비해 각 단계마다 참고 사항을 함께 적어 두었으니 확인하세요.
터미널 1
이 창은 앱을 AVS(알렉사 음성 서비스)에 인증하기 위한 웹 서비스를 실행합니다.
터미널을 열고 다음 명령어를 입력합니다.
cd ~/Desktop/alexa-avs-sample-app/samples cd companionService && npm start
참고: npm은 자바스크립트(JavaScript) 프로그래밍 언어용 패키지 관리자입니다. 명령어 실행 시 사용할 수 없다면 공식 사이트에서 설치할 수 있습니다.
스크립트가 완료되면 창이 아래와 같이 표시되며, 파이가 3000번 포트에서 대기 중임을 알 수 있습니다.

이 창은 닫지 마세요. 다음 단계를 진행하는 동안 계속 열어 두어야 합니다.
터미널 2
이 창은 AVS와 통신합니다.
새 터미널 창에 다음을 입력합니다.
cd ~/Desktop/alexa-avs-sample-app/samples cd javaclient && mvn exec:exec
참고: mvn은 Apache Maven의 약자입니다. 설치되어 있지 않다면 공식 사이트에서 먼저 설치하세요.
클라이언트를 실행하면 “Please register your device by …”(디바이스를 등록하세요)라는 대화 상자가 나타납니다. 예(Yes)를 클릭합니다.

브라우저에 따라 연결이 안전하지 않다는 경고가 표시될 수 있습니다. ‘고급(advanced)’ 버튼을 클릭해 경고를 닫고, 다음 화면에서 ‘localhost(안전하지 않음)로 이동’을 클릭합니다.
이제 개발자 계정 정보로 아마존에 로그인합니다.
다음 화면에서는 등록 중인 디바이스에 앞서 생성한 보안 프로필 사용 권한을 요청합니다. 확인(Okay)을 클릭합니다.

그러면 “https://localhost:3000/authresponse”로 시작하는 URL로 리디렉션되며, 화면은 아래 이미지와 같습니다.

열려 있는 대화 상자로 돌아가 OK 버튼을 클릭합니다. 이제 클라이언트가 알렉사 디바이스의 요청을 수락할 수 있습니다.
터미널과 음성 서비스 대화 상자를 모두 열어 두세요.

터미널 3
이 창은 웨이크 워드(wake word)로 알렉사를 깨우는 애플리케이션을 설치합니다. 음성으로 알렉사를 호출할 계획이 없다면 이 단계는 건너뛰어도 됩니다.
새 터미널 창을 열고 Sensory 또는 KITT.AI 웨이크 워드 엔진을 실행하는 다음 명령어 중 하나를 입력합니다.
Sensory 웨이크 워드 엔진을 사용하려면:
cd ~/Desktop/alexa-avs-sample-app/samples cd wakeWordAgent/src && ./wakeWordAgent -e sensory
KITT.AI의 웨이크 워드 엔진을 사용하려면:
cd ~/Desktop/alexa-avs-sample-app/samples cd wakeWordAgent/src && ./wakeWordAgent -e kitt_ai
테스트하기
웨이크 워드인 “Alexa”라고 말하며 알렉사를 불러냅니다. 삐 소리가 난 뒤에 명령을 말하세요. 예를 들어 “Alexa”라고 부르고, 삐 소리가 울리면 “What’s the time?”(지금 몇 시야?)이라고 물어보세요.
정확하게 응답한다면 여러분만의 알렉사 디바이스가 성공적으로 완성된 것입니다!
더 많은 활용 아이디어는 아마존 알렉사 공식 페이지를 참고하세요. 이렇게 만든 알렉사는 정품 에코가 할 수 있는 모든 작업을 수행할 수 있습니다!