라즈베리 파이를 이용하여 Amazon Echo 만들기

by 김도현 | 2017-07-10 15:10

재료

  • SeeedStudio ReSpeaker 2-Mics Pi HAT 1개
  • Raspberry Pi Raspberry Pi Zero Wireless 1개
  • 스피커 1개

지난 시간에 언급했던 Amazon Alexa를 활용하여, 라즈베리 파이로 Amazon Echo를 만드는 방법에 대한 설명입니다.



1. 개요

우선 Alexa가 우리의 목소리를 들어야 하기 때문에 마이크가 필요합니다.

따라서 마이크가 있는 HAT(Hardware Accessory on Top) 보드가 필요합니다.

HAT 보드란 의미 그대로 다른 보드 위에 얹는 악세서리 하드웨어를 의미합니다.

ReSpeaker 2-Mics Pi HAT

이 프로젝트에는 ReSpeaker 2-Mics Pi HAT 을 사용합니다.

이름 그대로 마이크가 2개 달려있고, 라즈베리 파이에 탑재하는 HAT 보드 입니다.


ReSpeaker 2-Mics Pi HAT 개요

ReSpeaker 2-Mics Pi HAT 보드는 다음과 같이 구성되어 있습니다.

아래는 ReSpeaker 2-Mics Pi HAT의 구성 요소에 대한 설명입니다.

- BUTTON : GPIO17과 연결하기 위한 사용자 버튼

- MIC_L & MIC_R :  보드의 양쪽 끝에 있는 2개의 마이크

- RGB LED :  SPI 인터페이스에 연결하기 위한 3 APA102 RGB LED

- 라즈베리 파이 40핀 헤더 : Raspberry Pi Zero, Raspberry Pi 1 B+, Raspberry Pi 2 B, Rasberry Pi 3 B를 지원합니다.

- Power : ReSpeaker 2-Mics Pi HAT의 전력 공급을 위한 마이크로 USB 포트. 스피커를 이용할 때 보드에  전원을 계속 연결해둬야 합니다.

- I2C : I2C-1을 연결하기 위한 그로브 I2C 포트

- GPIO12 : GPIO12와 GPIO13을 연결하기 위한 그로브 디지털 포트

- JST 2.0 Speaker Out :  JST 2.0 커넥터를 이용하여 스피커와 연결하는데 사용합니다.

- 3.5mm 오디오 잭 : 3.5mm 오디오 플러그로 헤드폰 또는 스피커와 연결하는데 사용합니다.


또한 이 프로젝트에서는 Raspberry Pi Zero W와 OS Raspbian Jessie를 사용합니다.



2. 제작과정

- Step 1 : ReSpeaker 2-Mics Pi HAT를 라즈베리 파이에 연결하기

다음 그림처럼 라즈베리 파이 위에 ReSpeaker 2-Mic Pi HAT을 얹어줍니다.


- Step 2 : 라즈베리 파이에 드라이버 설정

업스트림 wm8960에 몇가지 버그가 있어서 Seeedstudio team에서 이를 고쳤기 때문에, 이 코덱은 최근 라즈베리 파이 커널 빌드에 의해 지원되지 않고 있습니다. 그래서 이를 수동으로 빌드해야 합니다.


seeed voice card 소스 코드를 가져오기 :

1
2
git clone --depth=1 https://github.com/respeaker/seeed-voicecardcd seeed-voicecard
sudo ./install.shreboot
cs


사운드 카드 이름과 seeed-voicecard 소스코드가 맞는지 확인 : 

1
2
3
4
5
6
7
8
9
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: seeedvoicecard [seeed-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: seeedvoicecard [seeed-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
cs


Alsa 콘솔 설정을 적용합니다. : 

1
sudo alsactl --file=asound.state restore


Alsa 설정을 임의로 변경했다면 다음의 명령어를 사용하여 저장합니다. : 

1
sudo alsactl --file=asound.state store


테스트 전 alsamixer를 통해 소리 설정과 볼륨을 조정합니다. : 

1
pi@raspberrypi:~$ alsamixer



AlsaMixer

왼쪽과 오른쪽 화살표 키는 채널을 설정하거나 기기를 설정할 수 있으며, 위 아래 화살표키는 현재 선택된 장비의 볼륨을 조정할 수 있습니다. Alt+Q나 Esc 로 프로그램을 종료할 수 있습니다. (AlsaMixer 추가정보)


테스트를 위해 이어폰이나 스피커의 플러그인을 설치한 후, 마이크에 대고 말한 것이 제대로 들리는지 확인해줍니다. : 

1
arecord -fcd -Dhw:0 | aplay -Dhw:0
cs



- Step 3 : 라즈베리 파이에 AVS 설정하기

이 단계에서 Amazon Alexa Voice Service(AVS)를 라즈베리 파이에 설치해야 합니다.

설치 방법에 대한 전체 설명은 여기를 참고하세요.


- Step 4 : Alexa Voice Service 시작하기

AVS를 실행하기 전에 해드폰 잭의 오디오 출력을 변경해야 합니다. 이를 했으면 다음 명령어를 따라 칩니다.

1
sudo amixer cset numid=31
cs



- Step 5 : Alexa에게 말하기

이제 Alexa에게 시동어인 "Alexa"를 사용하여 간단하게 영어로 말을 걸 수 있습니다.

다음을 따라서 말해보세요 : 

"Alexa" 라고 말한 다음 비프음을 기다립니다. 그 다음 "What's the time?" 이라고 말합니다.

"Alexa" 라고 말한 다음 비프음을 기다립니다. 그 다음 "What's the weather in Seattle?" 이라고 말합니다.


- Step 6 : 사용자 버튼 사용법 (선택)

Seeedstudio 문서에 따르면 GPIO17(또는 WiringPi 0)과 연결하기 위해 보드에 있는 사용자 버튼을 사용합니다.

"Alexa"라고 말을 거는 대신 버튼을 누르른 것으로 쉽게 AVS를 활성화 시킬 수 있습니다.

이제 Alexa에게 시동어인 "Alexa"를 사용하여 간단하게 영어로 말을 걸 수 있습니다.


sudo 명령어를 사용하여 편집기로 다음 경로에 있는 GPIOWakeWordEngine.cpp를 엽니다. (예 : gnu nano 에디터) : 

1
2
cd Desktop/alexa-avs-sample-app/samples/wakeWordAgent/src/
sudo nano GPIOWakeWordEngine.cpp
cs


그 다음 11번째 줄을 다음 코드와 같이 수정한 후 저장합니다. (WiringPi 라이브러리의 GPIO_PIN 0GPIO17과 같습니다.)

1
staticconstint GPIO_PIN = 0;


다음 코드를 통해 재 컴파일을 해야합니다. : 

1
2
cd Desktop/alexa-avs-sample-app/samples/
cd wakeWordAgent/src && cmake . && make -j4


끝으로 테스트를 위해, 다음의 코드를 사용합니다. (참고할 점은 라즈베리 파이 AVS 설정의 7번째 단계에 따르면 다음 코드를 실행하기 전에 AVS 웹 서비스와 Sample app을 실행시켜야 합니다.)

1
cd wakeWordAgent/src && sudo ./wakeWordAgent -e gpio 



- 설계도

https://github.com/SeeedDocument/MIC_HATv1.0_for_raspberrypi


- 코드

https://github.com/respeaker/seeed-voicecard

https://github.com/alexa/alexa-avs-sample-app


원문은 다음을 참고하세요.

댓글 0

MADE BY

김도현

프로그래밍
라즈베리 파이를 이용하여 Google Home 만들기 다음글 라즈베리 파이를 이용하여 Amazon Echo 만들기현재글 Amazon Alexa 이전글