Raspberry Pi3 Model B와 ReSpeaker2-Mics Pi HAT에서 구글 어시스턴트 SDK 활용
12581 단어 RaspberryPiGoogleAssistantReSpeaker
소개
2017년 10월 구글은 일본어에 대응하는 스마트 스피커 "Google Home"Google Home Mini"를 발매했고, 2017년 3월에는 잡지"The MagPi"제57호의 부록으로 배포돼 큰 화제를 모았다AIY Projects voice kit.구글 어시스턴트를 사용할 수 있는 하드웨어 설비가 끊임없이 증가하고 있다.
이 자리에서 라즈베리파이와 ReSpeaker 2-Mics Pi HAT를 조합해 구글 Assistant SDK를 사용하는 방법을 소개할 예정이다.ReSpeaker2-Mics Pi HAT는 Seeed Studio가 개발한 Raspberry Pi용 확장판으로 가격이 9.90달러까지 낮지만 마이크 2개와 스피커 출력, 이어폰 출력, Grove 연결기 2개, 버튼 1개와 RGB LED 3개가 장착되어 있다.ReSpeaker2-Mics Pi HAT는 확장성이 뛰어나고 컴팩트한 스마트 스피커를 제공합니다.
준비
필요한 물건
필요한 물건
Raspberry Pi 3 Model B: 1개
ReSpeaker 2-Mics Pi HAT: 1개(Mouser의713-107100001
설치하다
공식 사이트 Raspbian 이미지 파일 다운로드(예: RASPBIAN STRETCH WITH DESKTOP September 2017)
다운로드Etcher 압축 해제
Back
을 클릭하여 이 화면으로 돌아가 다운로드한 이미지 파일과 SD 카드 리더기Flash!
클릭追加
이미지 쓰기wpa_supplicant.conf作成
버튼을 눌러 ssh.txt作成
및 arp -an | grep b8:27:eb
ssh [email protected]
하여 Raspberry Pi에서 IP 주소를 찾습니다(예: 192.168.1.123)이pi
, 사용자raspberry
에게 초기 설정된 비밀번호SSH is enabled and the default password for the 'pi' user has not been changed. This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
를 입력하고 로그인passwd
(SSH를 사용합니다. "pi"사용자의 기본 암호를 변경하지 않았습니다. 보안 위험입니다. 새 암호를 설정하려면 "pi"사용자로 로그인하고 "passwd"를 입력하십시오.)따라서 경고 입력sudo apt-get update
명령에 따라 암호를 초기값에서 기타sudo apt-get upgrade
계속 실행sudo raspi-config
최신 버전으로 업데이트Raspberry Pi Software Configuration Tool
시작4 Localisation Options
, 선택I2 Change Timezone
> Asia
> Tokyo
> exit
, 키를 눌러 도구를 종료ReSpeaker2-Mics Pi HAT 설정
우선, ReSpeaker2-Mics Pi HAT의 코딩기 칩'WM8960'을 사용할 수 있도록 코어를 재구성하고 다시 시작합니다.$ git clone https://github.com/respeaker/seeed-voicecard.git
$ cd seeed-voicecard
$ sudo ./install.sh 2mic
$ sudo reboot
재부팅 후 aplay -l
및 arecord -l
재생 및 녹음이 각각 추가되었는지 확인합니다.
재생에 해당하는 하드웨어 장치 목록 내보내기$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
출력과 녹음에 대응하는 하드웨어 장치의 목록$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
확인 후 seeed2micvoicec
에서 seeed2micvoicec
를 실행하여 /home/pi/
을 기본 입출력 장치로 사용하고 다음 내용을 입력합니다.
/home/pi/.asoundrcpcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:1,0"
}
}
nano .asoundrc
설정을 완료한 후 구글 Assistant SDK 사이트에서 설명한 Configure and Test the Audio 단계 1에서 설명한 테스트를 순서대로 수행한다.
스피커에서 사운드 재생 가능 여부 확인$ speaker-test -t wav
speaker-test 1.1.3
Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 128 to 131072
Period size range from 64 to 65536
Using max buffer size 131072
Periods = 4
was set period_size = 32768
was set buffer_size = 131072
0 - Front Left
Time per period = 0.032640
마이크에서 소리를 녹음해서 스피커에서 재생할 수 있는지 확인하다$ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
Recording raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
$ aplay --format=S16_LE --rate=16000 out.raw
Playing raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
이제 ReSpeaker2-Mics Pi HAT의 사운드 입력과 출력을 동작으로 확인했습니다. /home/pi/.asoundrc
명령을 사용하여 AlsaMixer를 시작하고 alsamixer
키를 눌러 사운드 카드를 선택하여 볼륨을 적당히 변경하십시오.
이상 ReSpeaker2-Mics Pi HAT의 설정과 동작 확인이 모두 완료되었기 때문에 Google Assistant Library의 설정과 동작 확인에 들어갑니다.
Google Assistant Library 설정 및 동작 확인
$ git clone https://github.com/respeaker/seeed-voicecard.git
$ cd seeed-voicecard
$ sudo ./install.sh 2mic
$ sudo reboot
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:1,0"
}
}
$ speaker-test -t wav
speaker-test 1.1.3
Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
WAV file(s)
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 128 to 131072
Period size range from 64 to 65536
Using max buffer size 131072
Periods = 4
was set period_size = 32768
was set buffer_size = 131072
0 - Front Left
Time per period = 0.032640
$ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
Recording raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
$ aplay --format=S16_LE --rate=16000 out.raw
Playing raw data 'out.raw' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
Configure a Developer Project and Account Settings의 설명에 따라 프로젝트를 만들고 이 프로젝트에 대해 구글 Assistant API를 사용하며 OAuth Client ID
F6
파일을RaspberryPi에 업로드한client_secret_<client-id>.json
(예: ~/Downloads에 다운로드된파일을192.168.1.1.123의RaspberryPi/home/pi/
에 업로드한경우Activity controls 페이지에서 자신의 구글 계정의 활동 제어를 확인하고, 확인웹 및 응용 프로그램 활동, 장치 정보(터미널 정보), 음성 활동 이 3개의 유효(파란색)
Download the Library and Run the Sample에서 설명한 절차에 따라 Python의 가상 환경을 준비하고 구글 Assistant Library
실행
scp ~/Downloads/client_secret_<client-id>.json [email protected]:/home/pi/
동작 확인인용하다
google-assistant-demo
는 Raspberry Pi Foundation의 공급업체 ID이므로 b8:27:eb
의 출력에서 해당 ID가 포함된 줄만 추출하여 동일한 네트워크에 연결된 모든 장치에서 Raspberry Pi 보드의 IP 주소만 추출할 수 있습니다.여러 개의 보드를 연결하면 순서대로 연결하여 혼란을 피할 수 있습니다. ↩ Reference
이 문제에 관하여(Raspberry Pi3 Model B와 ReSpeaker2-Mics Pi HAT에서 구글 어시스턴트 SDK 활용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mayfair/items/ea7343068952911e30ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)