
pdf電子書籍(脚注、ページ番号付き)をオーディオブック化する
pdfから文章抽出
ツールはなんでもいいけど、サイズ上限が無いためこちらを使用。
文章を整える
Notepad++を入手
正規表現が使えるエディタならなんでもいい。
1 ダウンロードしたテキストファイルをNotepad++で開く
2 「Ctrl + H」で「検索と置換」ウィンドウを開く
3 「検索する文字列」に任意の正規表現を入力
4 「置換後の文字列」は空欄のまま
5 「正規表現モード」を選択(「検索モード」の「正規表現」をチェック)
6 「すべて置換」を実行
ページ番号を消去
(本文)
10
のように、ページ番号は(半角スペース)数字(半角スペース)となっている。この法則性を利用するため、スペースや空白行の削除はしないでおく。
・「数字だけ」「数字と空白のみ」で構成される行を削除
^\s*\d+\s*$
スペースを消す
改行を全て消す
現在は
・数字や記号の後に半角スペースができている
・画像がある文章では途中で改行されている
という状況なので、一時的に改行を全て消す。
追記:よく考えたら正規表現機能でできる。
空白行を削除
^\s*\n
改行削除
\r?\n
半角全角スペースを削除
[ ]+
置換文字列
なし(空白)
脚注番号に@をつける
脚注も聞きたいため、@で読み上げさせることによってどの部分が脚注か分かりやすくする。
ノルマンディー10の民衆、ブルターニュ11の民衆、は……
10 フランス北部沿岸にある地方。
11 フランス北西部沿岸にある地方。
となっているため、
ノルマンディー10の民衆、ブルターニュ11の民衆、は……
@10 フランス北部沿岸にある地方。
@11 フランス北西部沿岸にある地方。
としたい。しかし年月といった単位についた情報に@はつけないようにしたい。
検索文字列
(?<=\s)(\d+)(?=\s*(?!年|月|日|時|分|秒|歳|才|世|回|頁|章|巻|部|万|千|十|ヶ|\s*(草稿|注|図|序文|日記|手記)))
置換文字列
@$1
検索文字列に思いつく単位を羅列して、書いて単語が後ろにある場合は@をつけないようにした。後半の草稿や図……といった部分は、それが前にある場合は@をつけない。
本文中の脚注番号(ノルマンディー10の民衆、ブルターニュ11の民衆の数字部分)にも記号をつけたかったが、いくら試してもダメだったので諦めた。(ChartGPTに丸投げしている。)
句点ごとに改行
合成音声ソフトに流し込む場合、長文だとエラーが発生するため、適切な長さに改行する。
このサイトでは10万文字までしか一度にできないため注意。
追記:よく考えたら正規表現機能でできる。
検索文字列
(。)
80文字以上の行の場合、読点で改行
Notepad++の正規表現を使用。
80文字以降に、がある場合に改行。
検索文字列
(.{80,}?、)
置換文字列
\1\n
行全体が80文字以上の場合に、2番目に出てくる読点で改行
2番目にしてるのはなんとなく区切りがいいかなと思ったから。
検索文字列
^([^、]*、[^、]*)、(.*)$
置換文字列
$1、\n$2
80文字以上の行を検索
読点が無い文章もあるため、もうこれは人力でゴリ押す。文章の区切りがどこでもいいという人は、〇文字以上で改行という形でもいいと思う。
検索文字列
^.{80,}$
行末の読点を削除
別にやらなくてもいい。
検索文字列
、+$
置換文字列
なし
フランス語を置き換える
読み上げのとき、アルファベットを一文字ずつ読み上げる形になるため
検索文字列
[A-Za-zÀ-ÿœŒæÆçÇüÜ]+(?:[-'][A-Za-zÀ-ÿœŒæÆçÇüÜ]+)*
置換文字列
(フランス語)
行全体が5文字以下の場合、改行を削除する
^(?:.{1,5})$\R
第〇章などで改行
\d{1,2} →1桁または2桁の数字
この文字列では第〇章参照と参照がついてる場合は改行しないようにしている。それが必要ない場合は2個目の括弧内を消去する。
検索文字列
(第\d{1,2}章)(?!参照)
音声合成ソフトで読み上げ
今回はVOICEVOXを使用。操作方法などはこちらの方が詳しく説明しているので引用します。
注意事項
私のように(メモリ4GBストレージ64GB)低スペックパソコンを使っている人は一気にテキスト読み込みするとフリーズする。
そのためテキストを分割して読み込もう。約26万文字でフリーズしたから、6万〜7万文字ずつ読み込ませている。
声にこだわらない(間や読み方が多少滅茶苦茶でもいい)人はスマホで「読み上げ アプリ」って調べてコピペで十分だった。句点で改行から下の行すべてやる必要ない。
これで作業終了です。普通に読んだ方が早いです。
ただ移動中や作業中耳が暇なのが嫌な人にはおすすめです。タイパはあまり良くありません。
文章を整える:半日
VOICEVOXに文章を入れる:2時間(一々処理落ちするため)
VOICEVOXで音声を書き出す:6時間(計算上)
悪戦苦闘:丸二日