しゃべらすシリーズ

  1. IPアドレスをしゃべる
     RPi(Raspberry Pi)において、DHCPでIP取得で起動した時、IPアドレスが変わった場合でも、自分からIPアドレスをしゃべるようにしてみた。
    ircDDB稼動時のメンテナンス等に役立つ。(家の中では固定IP設定なので、必要性は少なくなっているが)
    1. AquesTalkのInstall
       今回は、非営利目的であれば無償で使用できる &linkblank(http://www.a-quest.com/products/aquestalkpi.html){AquesTalk →}; を~/bin にコマンド(atk)としてInstallする。
      その手順は以下。このサイトからdownload したaquestalkpi-20130827.tar.gz を$HOME に置く。
      $ tar zxvf aquestalkpi-20130827.tar.gz ; 展開するだけ。実行ファイルはAquesTalkPi
    2. atk
       AquesTalkPiを、パラメータを変えて扱いように atk というコマンドとして、~/bin に置く。
      $ mkdir bin
      $ cd bin
      ここで、ログインし直すか、source ~/.profile を実行して新環境を読み込む。
      (通常 pi でログイン後、set | grep PATH  を実行して、/home/pi/bin がPATHにあることを確認しておくこと。もし無ければPATHに追加しておく)
      $ vi atk        ; vi 以外に使い慣れているEDITORを利用して(ex. nano 等)
      --- atk ---
      cd /home/pi/aquestalkpi
      echo "$1" | ./AquesTalkPi -g 50 $2 -f -  | aplay -D plughw:0,0 -q
      -----------
       $ chmod 755 /home/pi/bin/atk
       
    3. /etc/rc.local を加工
      $ sudo vi /etc/rc.local
      ---- /etc/rc.local ---
      # Comment Line
      # Print the IP address
      _IP=$(hostname -I) || true
      if [ "$_IP" ]; then
        printf "My IP address is %s\n" "$_IP"
        /home/pi/bin/atk "IPアドレスは,$_IPです"
      fi
      exit 0
      ----------------------
       これで、起動時に(今回はplughw:0,0のaudio、つまり本体のaudioを使う)本体のaudio出力から日本語でIPアドレスをしゃべって知らせて
      くれるようになる。
       
  2. ヘッダー情報をしゃべる
     ircddbgateway運用時に/var/log/Headers.log には流れてくる局(正確には、gatewayを通過する局)のヘッダー情報が吐き出されている。このデータから、MyCALLと、どこを経由して流れてきているかの Rpt1 , Rpt2 をしゃべらすことにする。しゃべらす方法は上記のAquesTalkPiは使用せず、Googleから綺麗な
    音声をひっぱりだして発生させることになるので、mplayer をInstallする必要がある。
    1. Text2Speech.sh のInstall
      $ sudo apt-get install mplayer
      以下Install状況は省略
      &linkblank(http://blog.oscarliang.net/raspberry-pi-voice-recognition-works-like-siri/){Text2Speech.sh関係サイト →}; を参考にして、以下作成する。
      $ sudo vi /usr/local/bin/text2speech.sh
      ---- test2speech.sh ----
      #!/bin/bash
      say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols"http://translate.google.com/translate_tts?tl=en&q=$*"; }
      say $*
      ------------------------
      $ chmod 755 /usr/local/bin/text2speech.sh
      (注記1)USB audio を利用し、defaultで0.0 にした場合は、上の -ao alsa を外した方がベター
    2. esay2を作成
      更にこのtext2speech.sh を使い易いように/usr/local/bin/esay2 を作る。
      $ sudo /usr/local/bin/esay2
      --- esay2 ---
      D1=`echo $1 | cut -b1`
      D2=`echo $1 | cut -b2`
      D3=`echo $1 | cut -b3`
      D4=`echo $1 | cut -b4`
      D5=`echo $1 | cut -b5`
      D6=`echo $1 | cut -b6`
      D8=`echo $1 | cut -b8`
      DV="$D1 $D2 $D3 $D4 $D5 $D6/$D8"
      #echo "$DV"
      /usr/local/bin/text2speech.sh "$DV"
      -------------
      $ sudo chmod 755 /usr/local/bin/esay2
    3. メインスクリプトesay.sh の作成
      $ vi /home/pi/bin/esay.sh
      --- /home/pi/bin/esay.sh ---
      #!/bin/sh
      
      OMYCL="--"
      while :
      do
      FLAG=`tail -1 /var/log/Headers.log | grep -e "header"`
      if test "$FLAG" != "" ; then
        MYCL=`echo $FLAG | cut -d":" -f5 | cut -b2-9`
        NODE=`echo $FLAG | cut -d":" -f7 | cut -b2-9`
      #  echo "$MYCL @ $NODE"
        if test "$MYCL" != "$OMYCL" ; then
          /usr/local/bin/esay2 "$MYCL"
          /usr/local/bin/esay2 "$NODE"
          OMYCL="$MYCL"
        fi
        sleep 1
      fi
      sleep 1
      done
      -------------------
      $ chmod 755 /home/pi/bin/esay.sh
    4. /etc/rc.local に登録
      $ sudo vi /etc/rc.local
      --- /etc/rc.local ---
      # Comment Line
      # Print the IP address
      _IP=$(hostname -I) || true
      if [ "$_IP" ]; then
        printf "My IP address is %s\n" "$_IP"
        /home/pi/bin/atk "IPアドレスは,$_IPです"
      fi
      su pi -c "/home/pi/bin/esay.sh" &
      exit 0

2015 8/1 からgoogle tts が利用できなくなった




トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-05 (水) 12:15:53