***しゃべらすシリーズ [#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する。 その手順は以下。$HOME に download したaquestalkpi-20130827.tar.gzを置く。 $ 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 ++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" # /home/moto/bin/text2speech.sh "node" /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){以下工事中}; #clear #comment #navi(日記) |