しゃべらすシリーズ
- IPアドレスをしゃべる
RPi(Raspberry Pi)において、DHCPでIP取得で起動した時、IPアドレスが変わった場合でも、自分からIPアドレスをしゃべるようにしてみた。
ircDDB稼動時のメンテナンス等に役立つ。(家の中では固定IP設定なので、必要性は少なくなっているが)
- AquesTalkのInstall
今回は、非営利目的であれば無償で使用できる 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状況は省略
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 を外した方がベター
- 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
2015 8/1 からgoogle tts が利用できなくなった