Amazon Echo(AVS)를 Raspberry pi로 움직여 보려던 미수

이전 단락


생각나는 데가 있어서 랩베리 피 샀어요.

바로 OS를 사서 에어플레이를 받고 라디코를 녹음했는데, 가장 하고 싶은 아마존 에코(AVS)를 해봤기 때문에 기록을 남겼다.
그러나 제목과 같이 2016.12.27은 아직 하고 싶은 일을 하지 않았다.
원래 AVS가 뭐였지?영어지만 홈페이지에 써있어요.
Alexa Voice Service


Alexa Voice Service...


Amazon Echo라는 미국 영독에서 발매된 제품에서 실행되는 소프트웨어였다.
Amazon은 AVS를 다른 하드웨어에서도 실행할 수 있도록 프로그램 라이브러리로 사용합니다.
alexa/alexa-avs-sample-app: This project demonstrates how to access and test the Alexa Voice Service using a Java client (running on a Raspberry Pi), and a Node.js server.


alexa/alexa-avs-sample-app: This project demonstrates how to access and test the Alexa Voice Service using a Java client (running on a Raspberry Pi), and a Node.js server....


설치 방법은 영어지만 아이허브에는 리눅스를 처리할 수 있는 사람이라면 문제없이 설치할 수 있다고 예의 바르게 적혀 있다.
위에서 말한 바와 같이 진행이 원활하지 않기 때문에 이 점을 중심으로 쓴다.
Raspberry Pi · alexa/alexa-avs-sample-app Wiki

Type ctrl-X and then Y, and then press Enter to save the changes to the file.
...

Amazon Developer 계정 등록


https://developer.amazon.com/login.html

인증서 획득


Project, Celient ID, Centent Secret 가져오기

AVS를 raspberry pi로 바꿔보도록 하겠습니다.

$ cd ~/Desktop
$ git clone https://github.com/alexa/alexa-avs-sample-app.git

설치하다.

$ cd ~/Desktop/alexa-avs-sample-app
$ vim automated_install.sh

304 #--------------------------------------------------------------------------------------------                                                              
305 # Checking if script has been updated by the user with ProductID, ClientID, and ClientSecret                                                               
306 #--------------------------------------------------------------------------------------------                                                              
307                                                                                                                                                            
308 if [ "$ ProductID" = "YOUR_PRODUCT_ID_HERE" ]; then                                                                                                         
309   ProductID="mypialexa"                                                                                                                                    
310 fi                                                                                                                                                         
311 if [ "$ ClientID" = "YOUR_CLIENT_ID_HERE" ]; then                                                                                                           
312   ClientID="amzn1.application-xxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"                                                                                 
313 fi                                                                                                                                                         
314 if [ "$ ClientSecret" = "YOUR_CLIENT_SECRET_HERE" ]; then                                                                                                   
315   ClientSecret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"                                                                          316 fi          


$ ./automated_install.sh
※基本的にはプロンプトに対しては「y」で良い。

(VNC 설치)


GUI가 필요하므로 모니터가 Raspberry pi에 연결되어 있지 않으면 VNC를 설치합니다.
(여기서부터 GUI)

웹 서비스 시작

$ cd ~/Desktop/alexa-avs-sample-app/samples
$ cd companionService && npm start

다른 터미널 시작
$ cd ~/Desktop/alexa-avs-sample-app/samples
$ cd javaclient && mvn exec:exec

Login Register/Autehnitication youre Device에서 "예"를 누르면 브라우저가 일어납니다. 따라서 proceed to localhost (unsafe) 를 누르십시오.

Amazon.com 사이트로 리디렉션되기 때문에 인증에 로그인하고 OK를 누르면 알렉사 보이스 Serv.에서 Token을 자동으로 입력합니다.

(여기서부터 알렉사 목소리로 반응하려는 경우)

Alexa


다른 터미널 시작
$ cd ~/Desktop/alexa-avs-sample-app/samples
$ cd wakeWordAgent/src && ./wakeWordAgent -e sensory
 
내 환경에 문제가 생겼어!
$ cd wakeWordAgent/src && ./wakeWordAgent -e sensory
INFO:main: Starting Wake Word Agent
INFO:WakeWordAgent: State set to IDLE(2)
INFO:Initializing Sensory library | library name: TrulyHandsfree | library version: 5.0.0-avs.1 | model file: ../ext/resources/spot-alexa-rpi.snsr
WARNING:Library expires on: License expires on 27 Mar 2017 00:00:00 GMT
wakeWordAgent: pcm.c:694: snd_pcm_close: Assertion `pcm' failed.
Aborted

아뿔싸.
쉴 새 없이 지껄인 결과 github 커뮤니티에서 좋은 정보를 얻었다.
Sensory Wake Word engine · Issue #284 · alexa/alexa-avs-sample-app


Sensory Wake Word engine · Issue #284 · alexa/alexa-avs-sample-app...


ndphu commented on 12 Oct
I got the same problem.
There is a file under wakeWordAgent/sensory/alexa-rpi/config called asound.conf.
I replaced my ~/.asoundrc by this file and it can fix the problem. (make sure you have >a backup for your current ~/.asoundrc)
wakeWordAgent/sensory/alexa-pi/config를 보려는 것 같습니다.
$ cat asound.conf
pcm.!default
{
  type asym
  playback.pcm {
    type hw
    card 1
    device 0
  }
  capture.pcm {
    type plug
    slave {
      pcm {
        type hw
        card 0
        device 0
      }
    }
  }
}
내 환경을 점검해 봐.
$ cat /proc/asound/modules
 0 snd_usb_audio
 1 snd_bcm2835

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: Device [USB PnP Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: 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 1: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
문제 없을 것 같습니다.
이번에는~부하입니다.Asoundrc 확인해봐.
$ cat .asoundrc
pcm.!default {
  type asym
   playback.pcm {
     type plug
     slave.pcm "hw:0,0"
   }
   capture.pcm {
     type plug
     slave.pcm "hw:1,0"
   }
}

pcm.!default {
        type hw
        card 1
}

ctl.!default {
        type hw
        card 1
}
응?뭔가 이상해.정말 이상하다!그래서 변해 봤어요.
$ vi .asoundrc
$ cat .asoundrc
pcm.!default {
  type asym
   playback.pcm {
     type plug
     slave.pcm "hw:1,0"
   }
   capture.pcm {
     type plug
     slave.pcm "hw:0,0"
   }
}
다시 집행한다
$ ./wakeWordAgent -e sensory
INFO:main: Starting Wake Word Agent
INFO:WakeWordAgent: State set to IDLE(2)
INFO:Initializing Sensory library | library name: TrulyHandsfree | library version: 5.0.0-avs.1 | model file: ../ext/resources/spot-alexa-rpi.snsr
WARNING:Library expires on: License expires on 27 Mar 2017 00:00:00 GMT
INFO:SensoryWakeWordEngine: mainLoop thread started
INFO:WakeWordIPCSocket::mainLoop thread started
INFO:WakeWordIPCSocket: init socket on port:5123
INFO:WakeWordAgent: thread started
INFO:===> Connected to AVS client <===
빌어먹을!
다른 터미널 시작
$ cd ~/Desktop/alexa-avs-sample-app/samples
$ cd wakeWordAgent/src && ./wakeWordAgent -e kitt_ai
INFO:main: Starting Wake Word Agent
INFO:WakeWordAgent: State set to IDLE(2)
ERROR:Failed to open PortAudio stream.Device unavailable
ERROR:KittAiSnowboyWakeWordEngine: Initialization error:Failed to open PortAudio stream.
ERROR:WakeWordAgent: exception in constructor: Failed to open PortAudio stream.
ERROR:main: Exception happened: Failed to open PortAudio stream.

작은 orz
내가 잠시 이 일대를 좀 보겠다.
wake word engine problem · Issue #277 · alexa/alexa-avs-sample-app


wake word engine problem · Issue #277 · alexa/alexa-avs-sample-app...


투덜거려도 힘 있는 메시지를 얻지 못하고 막다른 골목에 몰렸을 때 큐타를 써봤다.

좋은 웹페이지 즐겨찾기