• 분류 전체보기
    • 갈무리
    • 씨플플
    • SPRING
    • PI
    • ALGORITHM
    • DIARY
    • (∗❛ᴗ❛∗)
    • (●'◡'●)
    • 민디의 취준일기 (202301~)
  1. [curl] 라즈베리파이 http 통신하기 2020.08.12
  2. 라즈베리파이 처음 시작하기 (필요한 물품 설명) 2020.02.15
  3. 라즈베리파이 3B+ 4B 아두이노 시리얼통신 (UART - Tx, Rx 핀 사용) 2020.01.24
  4. vnc연결 성공해따 2018.11.13
라즈베리파이4 snowboy 설치하기 #PI
2020. 6. 30.

라즈베리파이4 buster 기준

 

snowboy.kitt.ai/

 

Snowboy Hotword Detection

 

snowboy.kitt.ai

snowboy는 시리나 빅스비처럼 음성인식을 할 수 있게 도와주는 오픈소스 api  입니다

 

음성인식 자체를 만드는것 만으로 하나의 거대한 프로젝트이기 때문에

이렇게 만들어진 걸 가져다 쓰는데 사실 이것도 설치하기가 쉽지않음.. 전 무려 두달걸림

 

이글은 두달내내 붙잡다가 마지막날 성공했을 때 작성한 글입니다. 시험끝나고 한번 3B+에 해볼게요

 

 


라즈베리파이 오디오 출력에는 pulseaudio랑 ALSA가 있음

 

3B+은 기본이 PCM(ALSA) 인것같은데 
4는 설치하면 기본설정이 pulseaudio로 되어있음

 

스노우보이는 pulseaudio만 됨. ALSA로도 해봤는데 안되는 걸 3B+에서 확인함 별로 안궁금했는데.. 

 

 

더보기

 

마이크는 itempage3.auction.co.kr/DetailView.aspx?itemno=B544174462

 

고감도 미니 스틱 마이크 USB 마이크 1.5M/PC 노트북 - 옥션

2% 할인. PC주변기기>PC영상/음향기기>PC마이크

itempage3.auction.co.kr

이거 사서 썼어요 전 USB 마이크 사용했습니다.

 

1. 마이크/스피커 설정하기


pi@raspberrypi: ~ $ amixer controls


Master 라고 나오면 pulseaudio
PCM 이라고 나오면 ALSA

만약 HDMI라고 나오면 

pi@raspberrypi: ~ $ sudo raspi-config


sudo raspi-config 에서 advance-option 선택
audio 에서 hdmi 가 아니라 audiojack 3.5mm 으로 바꿔 스피커 출력을 바꿉니다

pi@raspberrypi: ~ $ amixer controls
pi@raspberrypi: ~ $ sudo reboot 

pacmd list-sink

PCM에서 Master로 변경하는 방법은

pulseaudio 설치

pi@raspberrypi: ~ $ sudo apt-get install pulseaudio pulseaudio-utils

 

 

> 밑에 명령어는 안되면 패스

pi@raspberrypi: ~ $ gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink 
pi@raspberrypi: ~ $ sudo modprobe snd_bcm2835 
pi@raspberrypi: ~ $ sudo reboot 


Master에서 PCM으로 변경하는 방법은

pi@raspberrypi: ~ $ sudo apt-get purge --yes pulseaudio
pi@raspberrypi: ~ $ sudo reboot 

 


pulseaudio에서는 default output device 를 설정해야 음성출력이 가능하다.

 

현재 잡혀있는 장치 검색

pi@raspberrypi: ~ $ pacmd list-sink

 

index 0 은 HDIMI, index 1 은 headphone

 

pi@raspberrypi: ~ $ pacmd set-default-sink 1 

 

그리고 audio device setting에서 default는 항상 마이크로 설정하고
디바이스 추가하기!!! 그래야댐

 

근데 audio device setting이 없는 경우가 있는데 이런경우에는

pi@raspberrypi: ~ $ alsamixer


에서 직접 오디오출력 설정해줘야함

pi@raspberrypi: ~ $ arecord -l
pi@raspberrypi: ~ $ aplay -l 
pi@raspberrypi: ~ $ vi ~/.asoundrc

 

2. 라이브러리 설치

snowboy 를 실행하기 위해선 필요한 라이브러리가 있는데 

- SoX (audio conversion 오디오 변환) 
- PortAutio 나 Pyaudio (audio capturing 오디오 녹음 ) 
- ATLAS 나 OpenBLAS (matrix computation 연산) 
- swig

 

pi@raspberrypi: ~ $ sudo apt-get install python-pip python-setuptools
pi@raspberrypi: ~ $ sudo apt-get install python-pyaudio python3-pyaudio libatlas-base-dev
pi@raspberrypi: ~ $ sudo apt-get install portaudio19-dev
pi@raspberrypi: ~ $ sudo apt-get install python-devpip install pyaudio
pi@raspberrypi: ~ $ pip3 install pyaudio

 

2. sox 설치


절대 sudo apt-get sox 하지 말것

sudo apt-get sox 을 하면 가장 최신 버전인 14.4.2 가 설치되는데

14.4.2 가 rec test.wav명령어를 실행시키면 default 뭐시기 에러를 토해내면서 스노우보이 자체가 실행이 안되기 때문에

 

직접 14.4.1 을 다운받아 압축을 풀어야한다

pi@raspberrypi: ~ $ wget https://sourceforge.net/projects/sox/files/sox/14.4.1/sox-14.4.1.tar.gz

 

압축풀기

pi@raspberrypi: ~ $ tar xzvf sox-14.4.1.tar.gz

 

빌드

pi@raspberrypi: ~ $ cd sox-14.4.1
pi@raspberrypi: ~ $ ./configure
pi@raspberrypi: ~ $ make -s
pi@raspberrypi: ~ $ sudo make install

> If it installed correctly, the SoX version number and a help file will be output.

올바르게 설치됐다면 버전과 help가 출력됨

 

pi@raspberrypi: ~ $ sox -h
pi@raspberrypi: ~ $ sudo make install
pi@raspberrypi: ~ $ sudo ldconfig 

 

rec 명령어로 녹음 잘되는지 확인하기

rec test.wav

 

2. swig 설치

pi@raspberrypi: ~ $ sudo apt-get install git autoconf automake gcc bison libpcre3
pi@raspberrypi: ~ $ sudo apt-get install byacc

 

 

swig가 있으면 안되니까 있던 swig 삭제

pi@raspberrypi: ~ $ sudo apt-get remove swig

 

다운로드

pi@raspberrypi: ~ $ git clone https://github.com/swig/swig.git

 

2-1. pcre 설치

swig 다운로드 받고 ./configure  하면 가끔 pcre가 없다고 에러가 뜨는 경우가 있음

no pcre 옵션을 넣어서 configure 명령을 실행하면 되지만 스노우보이는 예민해서(...) 하나라도 수틀리면 실행안됨 해달라는대로 순순히 해주는게 오조오억배는 편함

 

pcre을 다운로드해서 압축을 풀고 tar 상태로 만든 다음

swig 폴더로 이동시킨 후 빌드를 한다.

에러가 안나는 경우도 있는데 에러가 나는 경우도 있음 그니까 그냥 설치하자

 

최신버전이 있지만 8.42 로 하겠음..

 

다운로드

pi@raspberrypi: ~ $ wget http://downloads.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.bz2

 

압축해제

pi@raspberrypi: ~ $ bzip2 -d pcre-8.42.tar.bz2

 

swig 폴더로 압축해제한 파일 이동

mv pcre-8.42.tar ~/swig

 

swig 폴더로 이동

cd ~/swig

 

pcre 빌드

./Tools/pcre-build.sh

 

swig 빌드하기

./autogen.sh
./configure

 

make -j4 하는 경우 에러가 발생하는 경우가 있다하여 make로 하는것도 좋음 그냥 make ㄱ

make -j4 | make
install
sudo make install
sudo ldconfig
swig -version

 

버전 출력된다 이러면

 

 

3. snowboy 설치


git clone https://github.com/kitt-ai/snowboy
cd snowboy/example/Python3
python3 demo.py /resource/models/snowboy.umdl

 

실행 시

Traceback (most recent call last):

  File "demo.py", line 1, in <module>

    import snowboydecoder

  File "/home/pi/snowboy/examples/Python3/snowboydecoder.py", line 5, in <module>

    from . import snowboydetect

ImportError: attempted relative import with no known parent package

 

뜨면 snowboydecorder.py 수정

sudo vi snowboydecoder.py
#from . import snowboydetect
import snowboydetect # 추가

 

 

 

티스토리툴바