지정된 사용자의 트윗을 말하는 Raspberry Pi를 만드는 방법

소개



제3회 연구실내 해커슨이 행해졌습니다. 다른 회원의 기사 1, 기사 2
이번에는 트윗을 말하는 Raspberry Pi를 만들기로 결정했습니다.
작성 동기는, 이전 라즈파이의 초기 설정을 처음 실시했을 때에 참고로 했다. 그것을 읽었을 때, 연구실에 있는 트위 폐의 트윗을 말하는 라즈파이를 언젠가 만들고 싶다고 느꼈기 때문입니다.
이번에 참고했다 기사

준비한 것


  • Raspberry Pi 2 + WiFi 동글
  • Raspbian이 설치된 microSD
  • 전원 어댑터
  • 일반 이어폰(스피커용)
  • 키보드와 마우스 및 디스플레이

  • 스피커 확인



    스피커 소리 확인


    $ speaker-test -t wav
    
    Ctr + C 로 소리를 멈출 수 있습니다.
    이때 HDMI로 연결된 디스플레이에서 소리가 나서 이어폰(가상 스피커)에서 소리를 내기 위해
    $ amixer cset numid=3 1
    

    를 입력하면 HDMI 출력에서 ​​아날로그 출력으로 변환할 수 있어 스피커에서 소리를 흘릴 수 있습니다.

    볼륨 조절


    $ alsamixer
    

    OpenJtalk(음성 합성 소프트웨어) 설치



    OpenJtalk란?


  • 오픈 소스 음성 합성 엔진
  • OpenJtalk에 말하기 위해서는 이하가 필요
  • 말하는 내용이 쓰여진 텍스트
  • 사전 폴더
  • 오디오 파일

  • OpenJtalk의 표준 음성
  • nitech_kr_atr503_m001.jhtsvoice(남성의 목소리)
    ### OpenJtalk · 사전 음성 데이터 설치

  • $ sudo apt-get update
    $ sudo apt-get install open-jtalk 
    $ sudo apt-get install open-jtalk-mecab-naist-jdic 
    $ sudo apt-get install htsengine libhtsengine-dev 
    $ sudo apt-get install hts-voice-nitech-jp-atr503-m001
    

    도중에 "계속하시겠습니까 [Y/n]?"라는 메시지가 표시되면 "Y"를 입력하고 "Enter"키를 눌러 설치를 계속합니다.

    jtalk.sh 만들기



    그런 다음 OpenJtalk를 실행하는 스크립트를 작성합니다.

    jtalk.sh
    #!/bin/sh
    tmpfile=/tmp/jtalk.wav
    htsvoice="/usr/share/hts-voice/\
    nitech-jp-atr503-m001/\
    nitech_jp_atr503_m001.htsvoice"
    echo "$1" | open_jtalk \
    -x /var/lib/mecab/dic/open-jtalk/naist-jdic \
    -m $htsvoice \
    -ow $tmpfile && \
    aplay --quiet $tmpfile
    rm $tmpfile
    

    작성한 스크립트에 실행 권한을 부여합니다.
    $ chmod 755 jtalk.sh
    

    명령줄에서 다음 테스트
    $ ./jtalk.sh こんにちは
    

    스피커에서 "안녕하세요"라고 들리면 OK!

    Twitter API 액세스 토큰 얻기



    아래 URL에서 Twitter에 로그인합니다.
    기사
    1. Create an Apps를 클릭합니다.
    2. 필요한 항목을 입력(적당하고 괜찮다)
    htps : // 아 ps. 라고 r. 코m/
    3. "create"를 클릭하고 작성한 APP의 "Details"를 클릭합니다.
    4. Keys and tokens 탭을 선택하고 Access token & access token secret 에서 Generate 버튼을 클릭합니다.
    5. 표시된 "API key", "API secret key", "Access token", "Access token secret"의 4개를 메모해 둔다


    파이썬 프로그램 만들기



    파이썬 설정
    # 仮想環境の作成
    $ sudo apt-get install python3-dev python3-venv
    $ python3 -m venv env
    $ cd env
    $ source bin/activate
    

    tweepy 설치
    (env) $ python -m pip install tweepy
    

    teitter.py 만들기


    #-*- coding:utf-8 -*-
    import tweepy
    import os
    # 各種キーをセット
    CONSUMER_KEY = 'xxxxxxxxxxxxxxx'
    CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxx'
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxx'
    ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxx'
    auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
    #APIインスタンスを作成
    api = tweepy.API(auth)
    print('Done!') #準備完了
    
    # つぶやきを取得
    for status in tweepy.Cursor(api.user_timeline,screen_name = "取得したユーザーのID",exclude_replies = True).items():
        tw_text = status.text
        tw_text = ''.join(tw_text.splitlines())
        tw_text = tw_text.replace('(',' ').replace(')',' ').replace(' ','')
        print(tw_text)
        os.system('/home/pi/jtalk.sh ' + tw_text)
        break #とりあえず最新のつぶやきのみ
    

    실제로 움직인다!



    아래 코드를 치다
    (env) $ python twitter.py 
    

    지정한 사용자의 최신 트윗을 남성의 목소리로 말했습니다!
    (열쇠에서도, 자신이 팔로우하고 있으면 말해 주었습니다)

    결론



    이번 해커슨에서 지정한 유저의 최신 트윗을 라즈파이에 말하는 것에 성공했으므로, 지정한 유저가 트윗하면 그것을 말할 수 있도록 개량을 더해 가고 싶습니다!

    읽어 주셔서 감사합니다!

    좋은 웹페이지 즐겨찾기