Top > 日記 > 2014-06-14

しゃべらすシリーズ

  1. IPアドレスをしゃべる
     RPi(Raspberry Pi)において、DHCPでIP取得で起動した時、IPアドレスが変わった場合でも、自分からIPアドレスをしゃべるようにしてみた。
    ircDDB稼動時のメンテナンス等に役立つ。(家の中では固定IP設定なので、必要性は少なくなっているが)
    1. AquesTalkのInstall
       今回は、非営利目的であれば無償で使用できる AquesTalk →link を~/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状況は省略
      Text2Speech.sh関係サイト →link を参考にして、以下作成する。
      $ 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 が利用できなくなった


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White


リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Sat, 01 Aug 2015 18:32:06 JST (3190d)