Chrome 拡張機能でモールス符号を再生する(3)

前回の記事で Chrome 拡張機能を使ってページ内の選択されたテキストをモールス符号に変換して手軽に再生できるようになり、欧文モールス符号の聞き取り練習をするためのテキスト素材がだいぶ楽に準備できるようになりました。

ji1jdi.hatenablog.com

次は和文モールス符号です。前回も述べたように、和文はふりがな(ルビ)が振ってあるウェブサイトであれば、この機能を利用して一応再生はできます。ただ、jscwlib は漢字の部分はスキップせず無音になるので間が開いてしまいます。取り込むときに漢字を取り除けばよさそうです。

漢字を単純に取り除くなら Unicode プロパティを使って\p{Han}を空文字列に置き換えればよさそうですが、これでは漢数字も削除されてしまいます。そこで次のようにしてみました。

text.replace(/[^\p{ASCII}\p{scx=Hiragana}\p{scx=Katakana}一二三四五六七八九〇1234567890]/ug, '')


漢数字も取り込めるようにして試してみると jscwlib の方が漢数字をサポートしていませんでした。それ以外にも全角数字や小書き文字もサポートされていませんでしたので次のように文字と符号のマッピングテーブルに追加しておきます。

            "一": ".----",
            "二": "..---",
            "三": "...--",
   ...(省略)...
            "1": ".----",
            "2": "..---",
            "3": "...--",
   ...(省略)...
            'ァ': '--.--',
            'ィ': '.-',
            'ゥ': '..-',
   ...(省略)...


テストのために前回の記事の一部にふりがな(ルビ)を振り、テキストを選択して Chrome 拡張機能を起動してみると、次のように漢字の部分が取り除かれて取り込むことができました。

うまく再生できましたが、次のような問題もあります。ルビの中には元の文字とは異なる読み方をさせるもの、たとえば 5日いつか といった表現は「5いつか」になってしまいます。また、文中のアルファベット(10cmのcmなど)はそのまま欧文で再生されてしまいます。

これで和文モールスのテキスト素材も手軽に準備できるようになりました。ただ、ふりがな(ルビ)を振っているウェブサイトは少ないです。一部の新聞社や放送局が提供している子供や日本語学習者向けのニュースサイトを利用するのが一番手軽でしょうか。URL を指定するとルビを振ってくれるウェブサービスやブラウザの拡張機能を利用するという手もありますね。

スマホタブレットでは使えないのでいつでもどこでもというわけにはいきませんが、欧文と和文ともにモールス符号の聞き取り練習がしやすくなりました。外部のサービスを利用しないでできることはここまででしょうか。機会があればルビを振るウェブサービスを利用することも試してみようと思います。

JI1JDI

ゆるく楽しくアマチュア無線とプログラミングを楽しんでいます。 scrapbox.io