これを拡張した 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〜)
最後に、巨大なファイルを変換してしまうといつまで経っても終わらないので、問題が起きたのかどうか分からない。必ず短い作品で動作確認を。