今週、例によって2〜3日杖のお世話になった。今年は何度かこの「ミニギックリ腰」に襲われた。「ミニ」であるうちはまあどうということはない(本当にキツいのは1〜2日で、1週間程度過ぎればほぼ元に戻る)のだが、原因のひとつが甚だしい運動不足であるのは分かり切っている。来年は少し身体を動かすようにしなければ、と思ったりしている(いつも似たようなことを考えるわけだが)。
そんな中、[es]では、例のMortScriptを使って次のことを実現した。すなわち、「目覚ましを止めたら、日付/曜日と時刻を喋らせて、その後ミュージックプレーヤーで音楽を流す」という挙動である(無論、私が行うのは「目覚ましを止めるためにキーを1回押す」ことだけ)。
まず、下準備として、日付/曜日を喋らせるスクリプトを書かねばならないが、さらにその前の段階として、音声ファイルを作成/用意しておく必要がある。今回は、「SofTalk」というフリーアプリを(こちら)使って、母艦で作業した。
「SofTalk」は、マニュアル等を読まずとも直感的に作業できるアプリで非常に簡便。読ませたいテキストを入れて再生ボタンを押すだけで合成音声がそれを読み上げてくれ、録音ボタンを押してから再生させることで録音もできる(写真右は拡大したもの)。
しかし、アクセントは合成音声のそれで、漢字表記をひらがなやカタカナにして読ませても変わらない。まあしょうがないかなとも思ったのだが、試みにひらがなにして途中にアポストロフィーなどを加えてみるとアクセントが変化! で、試行錯誤の結果、例えば「月曜日」ならこのようにするのが最も自然かと。
*ちなみに、「19日金曜日22時57分」を読み上げるとこんな感じになる(→クリック)
このパターンで全曜日及び1日〜31日を録音(アクセントはいろいろと試してみた……例えば「25日」なら「2’じゅう’5’にち’」と入れるのがおススメ)して、それぞれに拡張子.wavをつけて同じフォルダにまとめて入れておく(つまり、7+31=38個の.wavファイルが入ったフォルダとなる)。
音声ファイルができたら、次にスクリプトを書くことになるわけだが、某所で時刻読上げのスクリプトを拾ってきており(すでに[es]でバリバリ稼働中)、それを日付/曜日バージョンに改変。こんな感じにしてみたが、とりあえず動いているようだ(音声ファイルにつき、日付は「d01〜d31.wav」、曜日は「y0〜y6.wav」という名前で保存)。
If(Regread("HKCU","Software\Sharp\PhoneStatus","Status3")=1) Exit Endif x=Formattime("dw") PlaySound(SystemPath("ScriptPath")&"\D"&Substr(x,1,2)&".wav") PlaySound(SystemPath("ScriptPath")&"\Y"&Substr(x,3,2)&".wav")
実は、上3行は意味が分かっておらず、不要なのでは?とも思うのだが、パクらせてもらった時刻読上げスクリプトにあったのでそのまま残してある(笑……今度義弟に確認しよう)。
さて、ここまできたら、あとは「目覚ましアプリ停止」、「ミュージックプレーヤー起動」と連動するだけ。
目覚ましアプリとして、毎朝「AlarmClock」(こちらのページで軽く紹介)を利用させていただいているが、アクションキーでアラームを停止してしまうと、スヌーズ機能が効かなくなるバグ(?)がある。そこで、右上の「×」をクリックして止めることにする((x,y)=(430,120)地点をクリック)。
引き続き、マナーモードを解除し(「SetManner」を引数「/off」つきで実行)、音量を最大に上げてから、↑のスクリプト、時刻読上げスクリプトを順に呼び出し、その後「GSPlayerK」を起動(「GSPlayerK」は、「ExecMulti」で加工してあるので、実際は「ExecMulti」の[GSPlayerK]セクションを呼び出す)、でうまくいくはずである。
以上をスクリプトにまとめ、それを「SortInchKey」で任意のキーに割り付けて終了(私は「AlarmClock」起動時限定でテンキー「0」に割り当てた。そのため、「ATOKSetPlus」で、「AlarmClock」は数字モードで起動するよう設定)。
初日こそ失敗した(マナーモード解除を忘れていた)ものの、翌朝には無事成功。気持ちのいい朝を迎えることができるようになった私であった(腰は痛いが)。
*とりあえず、私の環境では期待通りの挙動をしていますが、万が一何かの参考になさる場合は自己責任でお願いします。
*別ページもご覧下さい。