2016年8月22日月曜日

天気予報の読み上げ

目覚まし(前回の記事を参照)の追加機能として、
天気予報を読み上げるスクリプトを書いたんだけど、
結局、使わずに放置してて、危うくなくすとこだった。
せっかくだから、ここにメモしておこ。手順は次の通り。

1.MOCをインストール

2.Open JTalkをインストール
"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"
に書いてある通りにしたら大丈夫だった。
ただ、間延びパッチを当てようとしたら、そんなファイルは無い、というメッセージ。
もう必要ないのかな?

3.下記のファイルread_out.shを準備し、ホームディレクトリに置く

4.実行

~$ ./read_out.sh

以上。


read_out.sh ---------------------------------------------------

#!/bin/bash

#古い音声ファイルを削除
rm -f ~/output.wav

#天気情報サイトからXMLファイルを取得し、読み上げ用の文字列を抽出・生成
ALLDESC=`wget -q -O - http://weather.livedoor.com/forecast/rss/area/130010.xml | grep "<description.*>\(.*\)<\/description>" | tr -d ' '`

ARR=(`echo $ALLDESC | tr -s '<\/description>' ' '`)
DESC=(`echo ${ARR[0]/'℃'/'度'}`)
DESC=(`echo ${DESC/')'/'曜日')}`)

#文字列の確認-例:"22日(月曜日)の天気は雨、最高気温は29度でしょう。"
#echo $DESC

#文字列から音声ファイルを生成
echo $DESC | open_jtalk -m /usr/local/share/open_jtalk/hts_voice_nitech_jp_atr503_m001-1.05/nitech_jp_atr503_m001.htsvoice -ow ~/output.wav -x /usr/local/share/open_jtalk/open_jtalk_dic_utf_8-1.09/

sleep 3

#音声ファイルを再生
mocp -S
sleep 3

if [ -f ~/output.wav ]; then
mocp -v +30 -l ~/output.wav
sleep 10
fi

mocp -s -x
sleep 3

-------------------------------------------------------------

参考にしたページ:

"文章校正のためにOpen JTalkを使って日本語テキストを読み上げる"

"shとbashでの変数内の文字列置換など"


2016年8月17日水曜日

電脳目覚まし時計化計画 まとめ

この前、OSを入れ替えたら目覚ましが動かなくなった。
原因は、ライン出力が勝手にミュートになることと、
MOCのオプション設定の仕方が微妙に変わってたこと。

ひとつ目は、音声ファイル再生用のスクリプトに、

amixer sset Master on 100%

の一行を追加し、
ふたつ目は、

-o pepeat を -o r

に変更することで解決した。


今年の税理士試験が終わり、風邪も治ったところで、目覚ましのまとめ。

概要:
晩にPCを使ったあと、一定の方法で電源を切る。
翌朝、自動でPCの電源が入り、しばらく音声ファイルを再生した後、
電源が切れる。

種明かしをすると、
rtcwakeを使って指定した時刻(例えば5時57分)にPCを起動すると、
cronによって所定のスクリプトが(例えば6時に)実行される、というだけ。


環境:
OSは、Ubuntu 16.04 LTS 日本語 Remix
マザーボードは、ASRock N3150DC-ITX
百円ショップで買ったキューブ型スピーカー2個
音楽再生ソフトMOC(MusicOnConsole)インストール済み


用意するファイル(4つとも/home/user/に置いておく):

wakeup.mp3 :再生用の音声ファイルとして好きなものを用意
(おいらは、15分ぐらいの鳥のさえずりを使ってる。)

mycrontab.txt :crontabにスケジュールを設定するためのテキストファイル

myplaymusic.sh:cronに呼び出される、音声ファイル再生用スクリプト

mysuspenduntile.sh:起動時刻を指定してPCをシャットダウンするためのスクリプト


手順:

1.crontabへスケジュールを書き込む:

sudo -i
crontab /home/user/crontab.txt
crontab -l

2.毎晩、PCでの作業を終えたあと、スクリプトを呼び出して電源OFF

sudo /home/user/mysuspenduntile.sh



ファイルの内容:

mycrontab.txt --------------------------------------------

00 06 * * * /home/user/myplaymusic.sh


myplaymusic.sh -------------------------------------------

#!/bin/bash

amixer sset Master on 100%

mocp -S
sleep 5

mocp -o r -v -40 -l /home/user/wakeup.mp3

for (( i=1 ; i<9 ; i++ ))
do
sleep 90
mocp -v +10
done

sleep 900

mocp -s -x
sleep 3

/sbin/shutdown -P now


mysuspenduntile.sh ---------------------------------------

#!/bin/bash

WAKEUPTIME="5:57"

DESIRED=$((`date +%s -d "$WAKEUPTIME"`))
NOW=$((`date +%s`))

if [ $DESIRED -lt $NOW ]; then
    DESIRED=$((`date +%s -d "$WAKEUPTIME"` + 24*60*60))
fi

killall rtcwake
rtcwake -m off -t $DESIRED

----------------------------------------------------

以上。
なお、mysuspenduntile.shは、次のコードのパクリです。

"Automatically sleep and wake-up at specific times"
http://askubuntu.com/questions/61708/automatically-sleep-and-wake-up-at-specific-times

2016年8月12日金曜日

本試験終了

火曜日・水曜日でおいらの今年の本試験終了。
あとは黙って12月の結果発表を待つ。

試験会場が思ったより寒かったのと、試験が終わって気が抜けたのとで、
また風邪引いた。頭痛と微熱、と思いながら体温計ってみたら38度くらいあった。
辛いから解熱剤をのみたいんだけど、熱を出さないと治りが遅くなる
ような気もするしなあ。

本試験5日前という最悪のタイミングで翻訳の依頼がきた。
試験の前日、当日も少しづつやって、やっと終わりそう。

今日、アルバイトの応募のために履歴書を一通郵送した。
ご縁はないんだろうけど。

2016年8月1日月曜日

週の反省

先週でオプションのファイナルチェックも終わり。
これで今年度の学校の講義・答練は全て終了。
本試験までの一週間、自習。

計算:
法人は連結と設立第一期。消費は簡易と国等。相続は全国模試と延納。
あとはミスノートの読みなおし。

理論:
出題予想Aランクを中心に。
消費はこれまでの答練、法人はドクター。

風邪引いたり、腰痛がぶり返したりしなければ、なんとかなるだろ。

三崎亜記著「刻まれない明日」、読み終えた。
歩行技師のアイデアが面白いと思った。
ただ、どの章も恋愛話で終わるのが、異性にもてないおいらには少し不満。