ReSpeaker_V2_front

챗봇에 사용할 마이크로 6-microphone array를 사용하기로 결정했습니다.
서치 결과 Respeaker Core v2.0 이라는 좋은 제품이 있어 구매를 했고 세팅하는 과정을 담았습니다. Respeaker Core v2.0는 6-microphone array와 함께 1.5GHz ARM Cortex A7 쿼드코어 프로세서, 1GB RAM, Wifi, Bluetooth등을 지원합니다. 마이크 어레이는 DoA (Direction of Arrival), BF (Beam-Forming), AEC (Acoustic Echo Cancellation)등의 알고리즘을 적용할 수 있어 스마트 스피커에 매우 적합합니다.

저는 Respeaker Core v2.0을 사용해서 음성을 입력받아 Post-Audio Processing Algorithm을 적용한 후 저희가 구성한 python 프로그램에 input 시킬 예정입니다. 물론 구글 어시스턴스, 아마존 알렉사도 적용할 수 있지만 이는 지금 사용하지 않겠습니다.

하지만..
역시 설치가 만만치 않습니다.

포맷만 다섯번 째 하다보니, 개인적인 편의를 위해 Resppeaker Core v2.0 Wiki 설명서에서 필요한 내용을 요약한 포스트를 남깁니다.


v2-flash-sd

Booting with images

  1. Etcher 다운로드
  2. Fangcloud 에서 respeaker-debian-9-lxqt-sd-[date]-4gb.img.xz 다운로드
  3. Etcher 실행 후 SD카드 굽기
  4. Respeaker Core v.2에 꽂으면 부팅 완료!

Booting from eMMC

  1. Etcher 다운로드
  2. Fangcloud 에서 respeaker-debian-9-lxqt-flasher-[date]-4gb.img.xz 다운로드
  3. Etcher 실행 후 SD카드 굽기
  4. Respeaker Core v.2에 꽂으면 eMMC에 flash가 시작됩니다.
    Flashing과정은 LED가 번갈아 번쩍이며 약 10분정도 소요되며 완료되면 LED가 꺼집니다.
    완료된 후 PWR_IN usb를 뽑고 sb카드를 제거한 후 다시 부팅을 하면 완료됩니다.
  5. 설치가 끝나면 SD카드를 포멧합니다. 안하면 재시작할떄 또 다시 설치합니다..(경험담)

#unmount SD카드 umount /dev/sda

#포맷 sudo mkfs -t ext3 /dev/sda


![lianjiediannan](/assets/blog/posts/2018/lianjiediannan.jpg)

## Serial Console 연결

>COM port of ReSpeaker Core v2.0, 115200 baud, 8Bits, Parity None, Stop Bits 1, Flow Control None.

1. usb 연결하고 다음 명령어 입력
```sh
ls /dev/ttyACM*

output:

/dev/ttyACM0
  1. screen으로 연결하기
sudo screen /dev/ttyACM0 115200
  1. 로그인
Debian GNU/Linux 9 v2 ttyGS0

respeaker.io Debian Image 20180801

Support/FAQ: http://respeaker.io

default username:password is [respeaker:respeaker]

v2 login: respeaker
Password: respeaker
  1. 접속 완료
Linux v2 4.4.138-respeaker-r0 #2 SMP Wed Jul 25 11:29:18 CST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
respeaker@v2:~$
  1. wifi 연결
respeaker@v2:~$ sudo nmtui              # respeaker user needs sudo
ip addr                                 # ip check

VNC 설정

만약 respeaker에 hdmi 외장모니터와 마우스/키보드를 usb로 연결했다면 스킵해도 좋지만 정신건강을 위해서 설정하는 것을 추천합니다.

  1. host 컴퓨터에서 VNC Viewer for Google Chrome 설치하기

  2. Respeaker에서 ip주소 확인

respeaker@v2:~$ifconfig # ip check
  1. 접속하기 ip주소는 192.168.xxx.xxx입니다. password는 respeaker입니다.

vnc-connection

성공!

Test하기

Test via ALSA

respeaker@v2:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: seeed8micvoicec [seeed-8mic-voicecard], device 0: 100b0000.i2s1-ac108-pcm0 ac108-pcm0-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

respeaker@v2:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: seeed8micvoicec [seeed-8mic-voicecard], device 1: 100b0000.i2s1-rk3228-hifi rk3228-hifi-1 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
# record & playback 2 channels audio
arecord -Dhw:0,0 -f S16_LE -r 16000 -c 2 hello.wav
aplay -Dhw:0,1 -r 16000 -c 2 hello.wav

# If you want to output the sound by the bluetooth device, you need to use the command below to play
aplay -r 16000 -c 2 hello.wav

# record 8 channels audio
# there are 6 microphones on board, and ac108 compose the 2 remaining channels.
arecord -Dhw:0,0 -f S16_LE -r 16000 -c 8 hello_8ch.wav
arecord | aplay

Test via PulseAudio

respeaker@v2:~$ ps aux|grep pulse|grep -v grep
respeak+  1109  0.0  0.7 363272  7932 ?        S<l  01:01   0:00 /usr/bin/pulseaudio --start --log-target=syslog
parecord --channels=8 --rate=16000 --format=s16le hello2.wav
paplay hello2.wav

Out of Box Demo

Respeaker는 6 Microphone Array를 탑재하고 있어 아래와 같은 기능을 사용할 수 있습니다.

  1. Download Package
curl https://raw.githubusercontent.com/respeaker/respeakerd/master/scripts/install_all.sh|bash
  1. Authorize Alexa VNC를 이용, 웹브라우저를 열고 127.0.0.1:3000에 접속해 amazon 계정으로 로그인하면 등록과 인증이 완료됩니다.

  2. Run Demo

/home/respeaker/respeakerd/clients/Python/demo_respeaker_v2_vep_alexa_with_light.py

자세한 내용은 아래 링크를 참고합니다.

librespeaker 설치

sudo apt install librespeaker

Audio configurations

지금까지 설치가 잘 되었는지 확인하기 위해, 시스템의 configuration을 double check하겠습니다.

  1. ALSA configurations: a. Make sure there’s no self-defined asound.conf in /etc/asound.conf. b. Check the volume settings for the playback and cpature devices:
sudo alsamixer

Tune it like this alsamixer

이렇게 잘 나온다면 configuration을 저장해서 계속 사용하겠습니다.

sudo alsactl store
  1. PulseAudio configurations c. Make sure there’s no self-defined client.conf in ~/.config/pulse/. You may simply delete the directory:
    rm -rf ~/.config/pulse
    

d. Make sure that udev-detect module is enabled:

pactl list modules|grep -n3 udev

If you see the following printings, it is loaded.

42-
43-
44-Module #5
45:    	Name: module-udev-detect
46-    	Argument:
47-    	Usage counter: n/a
48-    	Properties:

e. Make sure there’s no manually added ALSA devices in /etc/pulse/default.pa. All the sound devices should be discovered by the udev-detect module. If you have never touched this file, ignore this step.

pulseaudio를 재시작합니다.

pulseaudio -k

이 명령으로 PulseAudio daemon은 kill 되지만 자동으로 다시 시작될 것입니다. 이제 VNC를 이용해 연결하고 Audacity로 Recording을 해보세요. 만약 문제없이 recording이 된다면, 준비가 완료되었습니다.

Run respeakerd

cd ~
git clone https://github.com/respeaker/respeakerd.git
cd respeakerd/build
chmod a+x respeakerd
./respeakerd -debug -snowboy_model_path="./resources/snowboy.umdl" -snowboy_res_path="./resources/common.res" -snowboy_sensitivity="0.4"

output:

From        vep_amix_init() for    (complex_t*)vobj->amix->out[i] allocated  1024 bytes, flags VCP_MEM_AMIX        , reg:  0, total: 2048
From        vep_amix_init() for    (complex_t*)vobj->amix->out[i] allocated  1024 bytes, flags VCP_MEM_AMIX        , reg:  0, total: 1024
From        vep_amix_init() for    (complex_t*)vobj->amix->out[i] allocated  1024 bytes, flags VCP_MEM_AMIX        , reg:  0, total: 0

이렇게 출력된다면, 이제 Python Client를 설정하러 가보 좋습니다.

만약 이렇게 출력되지 않는다면, 이 설명을 참고하여 recompile 해보도록 합니다.

Comments

Eungbean Lee's Picture

About Eungbean Lee

Lee is a Student, Programmer, Engineer, Designer and a DJ

Seoul, South Korea https://eungbean.github.io