twitterのタイムラインを読み上げる、saykanjiプラグインを書いてみた

saykanjiコマンドがおもしろそうだったので、termtterのsayプラグインを下敷きに、saykanjiプラグインとして仕立ててみました。

saykanji.rb

とりあえず、Mac OS Xにのみ対応していますが、ちょっと手をいれれば、他のOSへの対応もできそうな気もします。

下準備

SayKanaコマンドMeCabが必要です。
SayKanaはzipアーカイブをダウンロードして展開、pkgファイルからインストールしてください。
MeCabはソースからインストールする場合はMecabのサイトを参考に、MacPorts経由でのインストールは、以下のような感じでいけると思います。

% sudo port install mecab +utf8

いずれの場合も、UTF-8をあつかえるようにインストールしてください。

使い方、設定など

とりあえず、"~/.termtter/config"で"t.plug 'saykanji'"すれば、タイムラインを読み上げてくれると思います。

### 設定例

# 読み上げスピード。値が大きいほど、スピードが速くなります。
# 100が標準で、50から300までの値をとれます。
config.plugins.saykanji.say_speed = '200'

# 指定したユーザを読み上げます。
config.plugins.saykanji.user_to_say = ['p2pquake', 'jihou']
# キーワードを含む投稿を読み上げます。
config.plugins.saykanji.keyword_to_say = ['地震', /^@user_name/]
# ユーザ名、キーワードをいずれも設定しなかった場合、すべての投稿を読み上げます。

英語の読み上げ

SayKanaは、英語の読み上げができません。ですから、以下のような形式の辞書を用意することで、対応します。

"あっと","@"
"ついったー","twitter"
"たんぶらー","tumblr"
"ふりっかー","flickr"

辞書は"~/.termtter/tmp/"の中に、"kana_english_dict.csv"という名前で保存してください。文字コードUTF-8です。
NADの部屋2。にて配布されている、NADのカタカナ英語辞書10.6に同梱されている、「NADカタカナ語10.6.txt」を流用することもできます(参考:バイリンガルなsaykanjiにしておく - ザリガニが見ていた...。)。その際は、文字コードUTF-8に変換することを忘れないでください。

英語の読み上げは単語単位ですので、

"ついったったー","twitter user"

などとしても、読み上げてはくれません。
また、ポスト中のユーザIDなども読み上げることができます。たとえば"@yamadaichirou"さんのIDを読み上げるなら

"やまだいちろう","yamadaichirou"

などとします(@は含めないでください)。
ただし、"@yamada_ichirou"さんのように、IDに_(アンダーバー)を含む場合、その部分は単語の区切りと認識されてしまうので

"やまだ","yamada"
"いちろう","ichirou"

というような形で、対応してください。

感想

漢字の読み違いなどはあるものの、思っていた以上にちゃんと読んでくれるので、楽しいですね。
とはいえ、のべつまくなしに喋らせるとちょっとうるさいので、実用性を考えるなら、アラート的な使い方がよいでしょうか。

どうでもいいことですが、ぼくがはじめてタイムラインの読み上げをさせたとき、いきなり「ちんちんがいたい」なんてしゃべりはじめて、どうしてくれようかと思いました。twitterは、おそろしいところです。

MeCabについては、Rubyバインディングが用意されているので、そちらを使うのが本当かもしれません。でも、ちょっと面倒そうだったのと、よみがなを得るためだけにそこまでしなくても、ということで今回は使いませんでした。