バイリンガルなsaykanjiにしておく

昨日定義したsaykanjiコマンド*1で漢字仮名混じり文を読み上げられるようになってひとまず満足したのも束の間、一つ気になり始めた。それは英単語が出てきた時、アルファベットの棒読みになってしまうこと。例えば、以下の文書を読み上げた時...

えっ、イラストレーターやAppleWorks使えないって?その後、macを使い始めて思ったことです。
  • 本当は次のような発音を期待している。

特に話題がRailsMac中心の自分の日記の中では、頻繁に英単語が登場する。また、ちょっと自分のメールの受信箱も覗いてみたが、メールのタイトルや本文にも英単語は溢れていた。もはや、日本語だけしっかり読めても日本語が話せるという状況ではないのだ...。しっかり英語も勉強しておく必要がある。

それと、「私は、」等の助詞の「は、」がそのまま「ハ」と発音されるところも気になる。「ワ」と発音してもらいたい。

カタカナ英語辞書

saykanjiにカタカナ英語風に発音してもらうには、たぶん辞書が必要だ。シンプルに英単語とカタカナ英語読みの2項目だけで良いのだが、日本語の文章に良く出て来そうな単語をシラミつぶしに登録する必要がある。これはちょっと大変な作業になりそう...。

ところで以前、ことえりの辞書として「NADのカタカナ英語辞書」をインストールした(今も大変お世話になっています!)ことを思い出した。この辞書はカタカナ英語読みで入力すると、対応する英単語を候補に出してくれる。例えば、「あっぷるわーくす」→「AppleWorks」のような変換が可能だ。そして、登録単語数が(フリーウェアの常識を超えて)半端なく多い!何と!106,000語。

早速、Spotlightで検索してみると、解凍したフォルダがダウンロードフォルダの中に見つかった。そして、何と親切にも、同胞物の中にはcsv形式の「NADカタカナ語10.6.txt」も入っていた。これ、そのまま使える!

バイリンガルなsaykanjiに修正

あとはsaykanjiコマンド定義の中で、英単語をカタカナ英語読みに変換するように修正すれば良いのだ。シェルコマンドのことは今イチ疎いが、調べながらやってみた結果が以下のスクリプト。(/usr/local/bin/saykanji.sh)

saykanji()
{
  wakati_yomi=`echo $1|/usr/local/bin/mecab -O wakati|/usr/local/bin/mecab -O yomi|sed -e 's/ ハ / ワ /g'`
  result=''
  for word in $wakati_yomi
  do
    if echo $word|grep -iq '[a-z]'
    then
      yomi=`grep -i "\"$word\"" ~/Downloads/カタカナ英語辞書10.6/カタカナ英語辞書10.6.txt|head -1|cut -d',' -f1`
      if [ -n "$yomi" ]
      then
        word="$yomi"
      fi
    fi
    result="${result}${word}"
  done
  /usr/local/bin/saykana $result
}
  • 処理の大まかな流れは、以下のようになっている。
saykanji
  "私はMacBookを買った。とてもhappyな気分だ。"
          ↓
# 品詞レベルに分解
mecab -O wakati
  "私 は MacBook を 買っ た 。 とても happy な 気分 だ 。"
          ↓
# 品詞の読みに変換
mecab -O yomi
  "ワタシ ハ MacBook ヲ カッタ 。 トテモ happy ナ キブン ダ 。"
          ↓
# 助詞のハをワに変換
sed -e 's/ ハ / ワ /g'
  "ワタシ ワ MacBook ヲ カッタ 。 トテモ happy ナ キブン ダ 。"
          ↓
# NADのカタカナ辞書で英単語の読みに変換
`grep -i "\"$word\"" ~/Downloads/カタカナ英語辞書10.6/カタカナ英語辞書10.6.txt|head -1|cut -d',' -f1`
  "ワタシ ワ "まっくぶっく" ヲ カッタ 。 トテモ ”ハッピー” ナ キブン ダ 。"


出来上がったsaykanjiバイリンガルバージョンを試してみた。

  • ほとんどの一般的な英単語はカタカナ英語読みでしゃべってくれる。
  • 稀にアルファベット棒読みになる時もあるけど、十分理解できる範囲。
  • OSX = "オーエスエックス"(理想:オーエステン)、DOS = "ディーオーエス"(理想:ドス)など


かなり聴き取り易くなった!

諸々

  • 括弧類も読みに変換すれば、状況によってはさらに良くなる可能性がある。(数式を読む場合等)
  • 本来のsaykanaのオプションも活かせるようにした方が良いはず。(読みのスピードとか、声の選択等)

*1:漢字仮名混じり文の日本語の文章を読み上げるコマンド