pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


twilio の日本語読み上げ処理を聞き取りやすくするためのフィルタ?

twilio をサーバの異常発生時の通知処理に使っているのだけど、読み上げたいメッセージをそのまま流し込むと、微妙に聞き取りずらいケースがありますよね?

だから聞き取りずらそうな部分を、通常の日常会話で使いそうな発音パターンに置換するフィルタを書いてみました。

たぶん、作ったのは1年以上前の話なので、今もこういうのが必要かは把握してません。

#!/bin/sed -f

# twilio で読み上げる文字列を聞きやすくするための置き換え処理

# 標準の状態だとアルファベットの文字列を英語でカッコよく
# 発音してくれるけど、それはちょいと聞き取りずらい。
# だったら単語として読まないようにすりゃいいじゃん、という発想での置き換え処理。

# ついでに、数値の読み上げ処理向けの置き換えもやってみる。


# 無条件に置き換えて良い文字列の置換は先にやる。
s/\.net$/、ネット/g
s/\.com$/、コム/g
s/\.co/、シーオー/g
s/\.jp/、ジェーピー/g
s/\.//g
s/test/テスト/g
s/server/サーバー/g
s/localhost/ローカルホスト/g


#########################################
# ここから下は数字や英字をカタカナ表記に置き換える処理。
# 全角英文字のことは考えてない。
s/[aA]/エー/g
s/[bB]/ビー/g
s/[cC]/シー/g
s/[dD]/ディー/g
s/[eE]/イー/g
s/[fF]/エフ/g
s/[gG]/ジー/g
s/[hH]/エイチ/g
s/[iI]/アイ/g
s/[jJ]/ジェー/g
s/[kK]/ケー/g
s/[lL]/エル/g
s/[mM]/エム/g
s/[nN]/エヌ/g
s/[oO]/オー/g
s/[pP]/ピー/g
s/[qQ]/キュー/g
s/[rR]/アール/g
s/[sS]/エス/g
s/[tT]/ティー/g
s/[uU]/ユー/g
s/[vV]/ブイ/g
s/[wW]/ダブリュー/g
s/[xX]/エックス/g
s/[yY]/ワイ/g
s/[zZ]/ゼット/g

# 数字の読み上げ処理。4桁の数までの対応としている。
# また、全角数字も想定していない。
#
# 数値を読み上げるとしたら、それはおそらく以下のパターンと想定している。
#
#  ステータスコード
#  IPアドレス
#  日付

# 4桁の数は千の位を先に置換すると、残りの数字はすべて3桁の数になる
s/1\([0-9]\{3\}\)/せん\1/g
s/2\([0-9]\{3\}\)/にせん\1/g
s/3\([0-9]\{3\}\)/さんぜん\1/g
s/4\([0-9]\{3\}\)/よんせん\1/g
s/5\([0-9]\{3\}\)/ごせん\1/g
s/6\([0-9]\{3\}\)/ろくせん\1/g
s/7\([0-9]\{3\}\)/ななせん\1/g
s/8\([0-9]\{3\}\)/はっせん\1/g
s/9\([0-9]\{3\}\)/きゅうせん\1/

# 3桁の数は百の位を先に置換すると、残りの数字はすべて2桁の数になる
s/1\([0-9]\{2\}\)/ひゃく\1/g
s/2\([0-9]\{2\}\)/にひゃく\1/g
s/3\([0-9]\{2\}\)/さんびゃく\1/g
s/4\([0-9]\{2\}\)/よんひゃく\1/g
s/5\([0-9]\{2\}\)/ごひゃく\1/g
s/6\([0-9]\{2\}\)/ろっぴゃく\1/g
s/7\([0-9]\{2\}\)/ななひゃく\1/g
s/8\([0-9]\{2\}\)/はっぴゃく\1/g
s/9\([0-9]\{2\}\)/きゅうひゃく\1/g

# 2桁の数は十の位を先に置換すると、残りの数字はすべて1桁の数になる
s/1\([0-9]\)/じゅう\1/g
s/2\([0-9]\)/にじゅう\1/g
s/3\([0-9]\)/さんじゅう\1/g
s/4\([0-9]\)/よんじゅう\1/g
s/5\([0-9]\)/ごじゅう\1/g
s/6\([0-9]\)/ろくじゅう\1/g
s/7\([0-9]\)/ななじゅう\1/g
s/8\([0-9]\)/はちじゅう\1/g
s/9\([0-9]\)/きゅうじゅう\1/g

# 一桁の数の置換
# そもそも不要かもしれん...。
s/0/ぜろ/g
s/1/いち/g
s/2//g
s/3/さん/g
s/4/よん/g
s/5//g
s/6/ろく/g
s/7/なな/g
s/8/はち/g
s/9/きゅう/g

# [1-9]0 を じゅうぜろ と読ませないための調整
s/\(じゅう\)ぜろ/\1/g

# [1-9]0[1-9] を ひゃくぜろ と読ませないための調整
s/\([ひ|ぴ]ゃく\)ぜろ/\1/g

# [1-9]00 を ひゃくぜろぜろ と読ませないための調整
s/\([ひ|ぴ]ゃく\)ぜろ/\1/g

# [1-9]000 を せんぜろぜろぜろ と読ませないための調整
s/\([せ|ぜ]ん\)ぜろ/\1/g
s/\([せ|ぜ]ん\)ぜろ/\1/g
s/\([せ|ぜ]ん\)ぜろ/\1/g

# ハイフンは敢えて読まない
s/\-//g