2015年10月25日日曜日

Macに新幹線のアナウンスを喋らせる。

気がついてみれば、ほぼ1年越しの投稿になります。
忙しさにかまけて、アウトプットするのをサボっていましたが、まあまたボチボチ更新していきたいと考えています。

最近、JXAというJavascriptでMacを動かす、AppleScriptの亜種みたいなものを覚えたので、何かに使えないかなーと思ったんですが、案外情報が少ないので、暇を見て色々試しつつ、勉強しています。

シェルでいいじゃんとか、そういう意見もあるかと思うんですが、shellScriptだとちょっと面倒な処理、例えばファイル名で判定して処理を変えるとか、出来ないわけじゃないけどちょっと面倒とか、そういうケースに対してサクッとできたらいいかも的な。あと、アプリケーションの対応次第なんですが、アプリケーション自体もJXAから弄れるらしいので、その辺で差異が存在理由なんじゃないかなと思います。

ドキュメント等を見ていると、Macのシステムの読み上げ音声で任意のテキストを喋らせる事が出来るようなので、一発目として試してみます。

最近、新幹線通勤になってしまったので、なんとなくうろ覚えの新幹線のアナウンスを喋らせることにしましょう。

まず、アプリケーション>ユーティリティ>スクリプトエディタを開きます。

 
function talkToMe(args){
 var app = Application.currentApplication(); // 現在のアプリケーションオブジェクトを取得する
 app.includeStandardAdditions = true; // 標準コマンドを使用可能にする
 app.say(args);
}

talkToMe("We will soon make breaf stop at ODAWARA.");
これで、スクリプトエディタで実行するととりあえず喋ります。 でもイントネーションがなんとなくおかしい。これ、システムの設定で、読み上げが日本語になっているのが原因です。なので、英語の読み上げ設定に変更します。
これで、それっぽく喋るようになりました。

JXAはシェルだと直接いじりにくいようなシステムに絡んだ設定項目なんかに対して正規の方法でアクセスできるみたいなので、何かうまい使い方がないか色々考えています。