Top > 日記 > 2014-06-14

***しゃべらすシリーズ [#l401e8f5]
+IPアドレスをしゃべる
 RPi(Raspberry Pi)において、DHCPでIP取得で起動した時、IPアドレスが変わった場合でも、自分からIPアドレスをしゃべるようにしてみた。
ircDDB稼動時のメンテナンス等に役立つ。(家の中では固定IP設定なので、必要性は少なくなっているが)
++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
++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
 
++/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アドレスをしゃべって知らせて
くれるようになる。
 
+ ヘッダー情報をしゃべる
 ircddbgateway運用時に/var/log/Headers.log には流れてくる局(正確には、gatewayを通過する局)のヘッダー情報が吐き出されている。このデータから、MyCALLと、どこを経由して流れてきているかの Rpt1 , Rpt2 をしゃべらすことにする。しゃべらす方法は上記のAquesTalkPiは使用せず、Googleから綺麗な
音声をひっぱりだして発生させることになるので、mplayer をInstallする必要がある。
++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
&color(Red){(注記1)};USB audio を利用し、defaultで0.0 にした場合は、上の -ao alsa を外した方がベター
++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
++メインスクリプト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
++/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

&color(Red){以下工事中};
&color(Red){2015 8/1 からgoogle tts が利用できなくなった};

#clear
#comment
#navi(日記)

リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS