**しゃべらすシリーズ(その2) [#abf8bd8e] リフレクターに接続しているときに、そのリフレクターにLINK / UNLINK してくる局名をしゃべらす。((拡張子は含まない)) 今回は、php と[[text2speech.sh>日記/2014-06-14]]を使う。 +Link/Unlink局の切り出し /usr/bin/php を利用するので、Raspberry Piに apache2、php5 をInstallしておく。最初に以下のphpファイルを/var/www/htmlに作成し、ブラウザで開けることを確認し、OKであれば、/rootに置く。[[''ここ''>日記/2011-11-14]]で作ったphpを利用。 ---- h2t_REF047.php --- <html> <head> <!--<meta http-equiv="refresh" content="12">--> <meta http-equiv="Content-Type" content="text/html; charset=x-sjis"> <title>REF047_IN/OUT STATUS</title> </head> <body> <?php $tmp_f = "/home/pi/call_o.txt"; //現時点での接続局リスト $con_f = "/home/pi/conn.txt"; //今接続してきた局リスト $discon_f = "/home/pi/discon.txt"; //今切断した局リスト $str_n = ""; $call_t = ""; if (file_exists($tmp_f)){ $call_t = file($tmp_f); unlink($tmp_f); } //print "Old_file = " . $call_t[0] . "<BR>"; $source_file = "http://ref047.dstargateway.org/"; $fp_in = fopen($source_file, "r"); $i = 0; $j = 0; $k = 0; //$call_o = array("JL3ZBS","JJ1YEG","JQ1ZKF","JH1BLT"); //print "debug::" ; print_r ($call_o); print "<BR>"; while (! feof($fp_in)) { $str[$i] = trim(fgetss($fp_in, 1000)); // print $i . ")" . $str[$i] . ":::" . strrpos($str[$i],"ype") . "<BR>"; if (strrpos($str[$i],"ype") == 1) { $j = $i; } if (strrpos($str[$i],"ast Heard") == 1) { $k = $i; } $i++; } fclose($fp_in); array_shift ($str); //print_r($str); $j = $j + 2; $k = $k - 7; //print $j.":".$k."<BR>"; for($i = $j; $i < $k; $i++){ $str_a = substr($str[$i],0,6) . ","; $str_n = $str_n . $str_a; $i = $i + 5; } //print "New_file= " . $str_n . "<BR>"; $fno = fopen($tmp_f, "w");// call_o.txt fwrite($fno, $str_n); fclose($fno); $call = split(",",$str_n);// to array $call sort($call); //print "New(Sort): "; print_r ($call); //print "<BR>\r\n"; $call_o = split(",",$call_t[0]); sort($call_o); //print "Old (Sort): "; print_r ($call_o); //print "<BR>\r\n"; $fo_con = fopen($con_f, "w"); $diff1 = array_diff($call, $call_o); while(list($key,$val) = each($diff1)) { if(strlen($val) > 0){ print $val . " Connected<br>"; fwrite($fo_con, $val." "); } } print "<BR>"; fclose($fo_con); $fo_discon = fopen($discon_f, "w"); $diff2 = array_diff($call_o, $call); while(list($key,$val) = each($diff2)) { if(strlen($val) > 0){ print $val . " disconnected<br>"; fwrite($fo_discon, $val." "); } } print "<BR>"; fclose($fo_discon); ?> +[[text2speech.sh>日記/2014-06-14]]で発声させる 上記phpを/usr/bin/php で実行し、discon.txtかconn.txtが0バイトでなければtext2speechで発声する。 --- inout.sh --- #!/bin/bash while : do /usr/bin/php /root/h2t_REF47.php > /dev/null sleep 1 if [ -s /home/pi/conn.txt ]; then MSG=`cat /home/pi/conn.txt` echo $MSG /home/pi/bin/text2speech.sh "$MSG connected." rm -f /home/pi/conn.txt touch /home/pi/conn.txt fi if [ -s /home/pi/discon.txt ]; then MSG=`cat /home/pi/discon.txt` echo $MSG /home/pi/bin/text2speech.sh "$MSG disconnected." rm -f /home/pi/discon.txt touch /home/pi/discon.txt fi sleep 2 done +inout.shを自動起動させる --- /etc/ --- # 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 /root/inout.sh & # ← 追加 exit 0 2015 8/1 からgoogle tts が利用できなくなった [[jh1blt]] &new{2015-08-01 (土) 18:33:31};- google tts が利用できなくなったので、AquesTalkを使うことにした。日記10月1日に載せた/root/henkan を通すと数字が英語読みになる。 -- [[jh1blt]] &new{2015-10-04 (日) 11:36:16}; &color(Red){''2015 8/1 からgoogle tts が利用できなくなった''}; >google tts が利用できなくなったので、AquesTalkを使うことにした。日記10月1日に載せた/root/henkan を通すと数字が英語読みになる。 < #clear #comment #navi(日記) |