2008年04月17日

青空文庫のテキストを音声ファイルにするWSHスクリプト

追記 2008.8.28
これを拡張した aozoravoice2.wsf というのを作りました。
青空文庫のテキストを音声ファイルにするWSHスクリプト2
新しい方は、いろいろ複雑な処理ができるようになっています。そのぶん、ちょっと時間はかかってしまいますが。
こちら aozoravoice.swf もまだ公開しておきますので、お好みでお使いください。
追記終わり


この前のスクリプトを拡張して作ってみた。簡易的に青空文庫で配布されているテキストを音声ファイルに変換できるようにしてみた。

免責事項。私takayanは、このプログラムによって生じる一切の不具合、影響などに関する損害は一切感知しません。 それに同意いただいた方のみご利用ください。改変自由です。

↓↓↓ダウンロード
aozoravoice.zip ver.1.0.4
※分割したとき(標準)、m3u形式のプレイリストも出力するようにしました。
※分割数の桁が最低桁数を超えるとエラーが出てしまう点を修正しました。

解凍ソフトを使って適当な場所で解凍すると二つのWSHのスクリプトが入っている。aozoravoice.wsfは青空文庫のテキストファイルを引数にして、それを音声ファイルに変換する。sendto.wsfは「送る」メニューに「青空文庫テキストを音声に変換」を登録する。WindowsXPでのみ動作確認をしている。


基本的に以前のtextvoice.wsfを素直に拡張したものなので、xdoc2txt.exe、lame.exeも使える。今回はxdoc2txtはなくてもいいけれど、とりあえずそのまま使えるようにしてある。詳しいことは、SAPI5の音声ファイルを作るWSHスクリプトに書いたことと同じだ。

前回書いたように、ルビを削除したり、複数ファイルに分割したりできるようにしてみた。
ただ、漢字をルビで置き換えられるようにしてみたが、ルビが振られる漢字は、近くでまた現れたときにはわざわざルビが振られない。そのため漢字をルビで置き換えるように設定しても、二度目からのものは漢字のままになってしまう。この対策として、漢字とルビの一時的なデータベースを作って置換していけばいいのだろうが、面倒なのでやっていない。

このaozoravoice.wsfの最初の方には次のような変数宣言文がある。
var ruby_mode = 2; // 青空文庫のルビへの対応 0:何もしない、1:ルビを削除、2:ルビに置換
var divide_flag = true; // 分割するかどうか
var numbering_flag = true; // ファイル番号を最初に読み上げるかどうか
var keta = 3; // 分割ファイルの番号最低桁数
var limit = 5000; // 分割の基準となる文字数
ここを書き換えることでいくつか動作を変えることができる。
ruby_modeはルビをどうするかを決める。モードは三種。0,1,2のどれかを入れる。分割フラグdivide_flagはtrueかfalseを指定する。falseならば分割しない。trueならば、limitの文字数を基準にファイルを分割する。改行単位で文章は処理されるので、このlimitをあふれたらファイルが分割される。分割が選ばれているときはファイルに番号がつけられる。このときketaの値で桁数をそろえられる。小さい数の時は桁をそろえるために左側が0で必要なだけ埋められる。それから、numbering_flagがtrueのときは、ファイルの先頭で番号を読み上げる音声が挿入される。

どの音声エンジンを使うか、読み上げ速度をいくつにするかは、このプログラムでは設定できない。コントロールパネルの音声認識を開いて音声合成タブを開いて設定する。

使い方
1. 青空文庫で作品のテキストファイルをダウンロードする。
2. aozoravoice.wsfを使って変換する。変換には二つの方法がある。aozoravoice.wsfのアイコンの上に、青空文庫テキストファイルをドラッグ&ドロップする。もしくは、テキストファイルで右クリックをして「送る」メニューから「青空文庫テキストを音声に変換」を選ぶ。

これで音声ファイルが、テキストファイルと同じフォルダにできるはず。

分割したときに一緒に作成されるプレイリストファイル(m3u形式)を、iTunesやWindows Media Playerで開くことで、連続再生させることができる。(ver1.0.2〜)

最後に、巨大なファイルを変換してしまうといつまで経っても終わらないので、問題が起きたのかどうか分からない。必ず短い作品で動作確認を。


posted by takayan at 03:18 | Comment(2) | TrackBack(0) | aozoraVoice | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんばんは。青空文庫のルビ処理(辞書機能付)について書かせて頂たいと思います。

元ネタは2chです。

http://hpcgi1.nifty.com/hongming/komorebi/wforum.cgi?mode=allread&pastlog=0002&no=1274&page=20&act=past
より、ptxt2html.zipをDLします。
http://homepage3.nifty.com/01117/rubytr.htm
rubytr.zipをDLします。

実行方法はリンク先を読んで下さい。

簡単に書けば、両方ともショートカットを作る必要があります。
t2h.exeのショートカットにテキストをD&Dします。

出来たhtmを右クリックの編集を選び、ソースを表示させます。
全て選択してコピーをして、rubytr.exeのショートカットをダブルクリックすれば
out.txtというものが作成されます。それが、処理済のテキストになります。

辞書機能をオンするには、rubytr.exeのショートカットにrubytr.exe /D と指定する必要があります。

目の不自由の方を持つご家族、ご親戚、ご友人等の参考になればと思い書かせて頂きました。

検索してたら、目の不自由な義父に青空文庫をMP3に変換して手渡しているというブログがありました。
http://www.aokids.jp/others/delruby.html
の全ルビ削除を使っておいででした。

それと、申し訳ないのですが了承を得ずに、あちらこちらで紹介させて頂いています。
結構好評を得ています。
Posted by a at 2008年08月10日 20:49
aさん、情報ありがとうございます。紹介もしてもらって、ありがとうございます。
ここのスクリプトではルビに対して簡単な対応しかしていないので、これらのプログラムを参考にしてもうちょっと高機能にしたいですね。
それまでは、書いてもらった方法を使って併用してもらわないといけません。
Posted by takayan at 2008年08月10日 23:43
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック