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