HA에서 아마존 에코로 TTS사용하기
1. 구글홈 미니 등을 이용해서 구글 TTS(Text to Speech)는 많이 사용하는데
아마존 에코도 유사한 방식으로 HA에서 TTS 사용가능하다(참고)
2. 설정방법
2019. 2. 1. update. 더 좋은방법을 찾았다.
2019. 4. 1. update HA 업데이트되면서 설치방법이 조금 바뀌었따.
가. HA에 접속해서 다음과 같이 입력한다.
(excluded_devices는 아마존계정에 에코 이외의 다른 기기가 있는 경우에만 쓴다)
다. HA설정 디렉토리의 secrets.yaml파일에 다음 항목을 추가한다(파일이 없다면 다음 내용을 넣어서 만든다)
alexa_email: 에코가_연결된_아마존_계정
alexa_password: 에코가_연결된_아마존_계정_암호
가. 아래 주소에서 alexa_remote_control.sh, alexa_wrapper.sh 파일을 다운받는다
https://github.com/walthowd/ha-alexa-tts
나. HA 설정 디렉토리(해즈비언의 경우 /home/homeassistatnt/.homeassistant. 해즈비언에 스크립트로 삼바를 깔았다면 삼바로 열리는 장소가 저기다)에 위 파일 2개를 업로드한다.
다. HA가 설치된 서버에 ssh로 접속해서 다음과 같이 차례로 입력한다.
라. HA설정 디렉토리의 secrets.yaml파일에 다음 항목을 추가한다(파일이 없다면 다음 내용을 넣어서 만든다)
alexa_email: 에코가_연결된_아마존_계정
alexa_password: 에코가_연결된_아마존_계정_암호
마. 다 항의 첫번째줄과 두번째 줄과 같이 한 상태에서 다음과 같이 입력한다.
바. 에코가 보이면 다음단계로. 그런데 아마 에러가 날 것이다. 그럼 다음과 같이 하고 다시 마를 실행해서 에코가 보일때까지 노력한다.
(1) 컴퓨터에 firefox 브라우져를 깔아주고, 파이어폭스에서 쿠키저장 확장기능을 설치한다.(firefox외의 브라우저로는 거의 안되는것으로 확인)
(2) 파이어폭스에서 알렉사홈에 접속해서 로그인한다.
(3) 쿠키저장 확장기능을 이용해서(확장기능을 설치했다면 오른쪽위에 메뉴 왼쪽에 조그만 쿠키아이콘이 생겨있다) 쿠키를 텍스트파일로 저장한다.
(4) 저장한 쿠키파일(기본명은 cookies.txt이다)을 HA 설정 디렉토리에 업로드한다.
(5) 다항의 첫번째, 두번째 줄과 같이 한 상태에서 다음과 같은 명령어를 입력한다.
(6) 다시 마항으로.
사. 에코가 보인다면, 다항의 첫번째, 두번째 줄을 한 상태에서 다음과 같은 명령어를 입력한다
아. 소리가 들리면 다음과 같은 명령어를 추가로 입력한다.
설정된 PATH가 나올텐데 이걸 모두 복사하고, 다음과 같은 명령어를 입력한다.
아래로 내리다보면 PATH=브랄블라블라 라는 줄이 있는데 이걸 PATH=위에서 복사한것 으로 수정해준다.
자. configuration.yaml에 다음과 같은 항목을 추가한다.
차. 다왔다. HA에서 notify.my_dot_name 서비스를 호출해본다 service data는 아래와 같다.
{"message":"test"}
소리가 들리면 완성!
아마존 에코도 유사한 방식으로 HA에서 TTS 사용가능하다(참고)
2. 설정방법
2019. 2. 1. update. 더 좋은방법을 찾았다.
2019. 4. 1. update HA 업데이트되면서 설치방법이 조금 바뀌었따.
가. HA에 접속해서 다음과 같이 입력한다.
sudo -u homeassistant -H -ssource /srv/homeassistant/bin/activate
/srv/homeassistant/bin/activate pip3 install bs4 pip install lxml(만약 lxml설치 과정에서 에러가 난다면 아래것을 해주고 다시 lxml을 설치한다.)
sudo apt-get install libxml2-dev libxslt1-devcd ~/.homeassistant/mkdir custom_componentsmkdir custom_components/alexa_mediacd custom_components/alexa_mediawget https://raw.githubusercontent.com/keatontaylor/alexa_media_player/master/alexa_media/__init__.py
wget https://raw.githubusercontent.com/keatontaylor/alexa_media_player/master/alexa_media/const.pywget https://raw.githubusercontent.com/keatontaylor/alexa_media_player/master/alexa_media/media_player.pywget https://raw.githubusercontent.com/keatontaylor/alexa_media_player/master/alexa_media/notify.py
나. configuration.yaml에 다음과 같은 항목을 추가한다.
alexa_media:
accounts:
- email: !secret alexa_email
password: !secret alexa_password
url: 'amazon.com'
exclude_devices:
- "Y's 3rd Fire"
- "Y's Alexa Apps""
notify:
- platform: alexa_media
name: alexa_media
다. HA설정 디렉토리의 secrets.yaml파일에 다음 항목을 추가한다(파일이 없다면 다음 내용을 넣어서 만든다)
alexa_email: 에코가_연결된_아마존_계정
alexa_password: 에코가_연결된_아마존_계정_암호
라. HA를 재시작하면 home에 에러창 비슷한게 하나 떠있을텐데, 거길 열면 아마존 capㅅcha입력하는 창이 나온다. 거기서 captcha넣어준다.
마. HA 개발자도구-서비스에서 notify.alexa_media 서비스를 호출해본다 service data는 아래와 같다(first_echo는 아마존 계정에서의 에코 이름이다. HA에 새로 뜬 media_player이름을 보면 확인할 수 있다.
{
"message":"test",
"data":{"type":"tts"},
"target":["media_player.first_echo"]
}
{"message":"test","entity_id":"media_player.first_echo"}
소리가 들리면 완성!
{
"message":"test",
"data":{"type":"tts"},
"target":["media_player.first_echo"]
}
소리가 들리면 완성!
sudo -u homeassistant -H -scd ~/.homeassistant/chmod +x alexa_remote_control.sh & chmod +x alexa_wrapper.sh
./alexa_remote_control.sh -a
mv cookies.txt /tmp/.alexa.cookie
./alexa_remote_control.sh -d "에코이름" -e speak:This_is_a_test!
echo $PATH
nano ./alexa_wrapper.sh
notify:
- platform: command_line
name: 'My Dot Name'
command: "/home/homeassistant/.homeassistant/alexa_wrapper.sh -d '에코이름'"
{"message":"test"}
댓글
댓글 쓰기