電子書籍(PDF・画像)からオーディオブックを音声合成で自作する

電子書籍(PDF・画像)からオーディオブックを音声合成で自作する 効率化

次の記事の続きです。
本記事でオーディオブックの作成までたどりつきます。

本記事の内容

  • PDFを画像に変換する
  • 画像をトリミングする
  • 画像からテキストを抽出する(OCR)
  • テキストを音声に変換する(音声合成)

それでは、上記に沿って解説を行っていきます。

PDFを画像に変換する

電子書籍にしたPDFをコピーします。
コピーしたPDFをもとにオーディオブックを作成していきます。
電子書籍分、オーディオブック分の2つのPDFがあることになります。

その手始めとして、PDFを画像に変換します。

ImageMagickを使います。
ImageMagickは、コマンドラインで画像処理が可能なツールです。

Windows、Linux、Macのすべてに対応しています。
検索すればいくらでも情報は出てきます。

画像処理を行なう以上、負荷がそれなりにかかります。
そのため、私はWindowsではなくサーバー(Linux)で動かしておきます。
放置しておけば、終わっているという感じです。

肝心の変換処理は、以下のコマンドで可能です。

# convert -density 300 book.pdf b-%03d.png

OCRで自動読み取りを行う以上は、それなりの画質が求められます。
そのため、densityで解像度を指定しています。

なお、上記コマンドを実行した結果、同じディレクトリ内に以下のような画像ができています。

# ls -l *png |  wc -l
284

画像は全部で284個です。
PDFのページ数と同じになっていますね。

画像をトリミングする

画像の無駄な部分をトリミングします。
無駄な部分とは、本文ではない記述のことです。

百閒は一見にしかずです。

左がトリミング前に画像です。
右がトリミング後の画像となります。

章のタイトル・ページは、音声では不要なモノです。
そのため、トリミングする必要があります。

ここでも、ImageMagickを使います。
コマンドは以下。

# mogrify -crop 1450x1700+0+300 *.png

元画像が横1450px・縦2205pxです。
その画像から、横1450px・縦1700pxの画像を取り出します。
そのときの取り出し位置(座標)は、x=0・y=300です。

このことを上記のコマンドは、表しています。
わからない場合は、数値を変えて試行錯誤してください。

ただし、試行錯誤の場合は、次のコマンドにしてください。

# convert -crop 1450x1700+0+300 b-054.png b-054_after.png

mogrifyは、複数画像を一括で変更します。
convertは、1枚の画像を変更する場合に用います。
よって、試行錯誤する場合はconvertを利用しましょう。

ここまで完了すれば、次はOCRでの文字認識ですね。

画像からテキストを抽出する(OCR)

ここからは、ソフトウェアによって、その成果物の品質が異なってきます。
そのため、何を利用するのかが大きなポイントになります。

今回、3種類のソフトウェアで検証しました。
正確には、ソフトウェアだけではなくAPIやエンジンを含みます。

  • e.Typist
  • Google Cloud Vision API
  • Tesseract

e.Typistは、ソフトウェアとして販売されています。
Tesseractは、次のOCRのエンジンです。
詳細は、下記の記事をご覧ください。

Google Cloud Vision APIは、名前の通りGoogleの公開しているAPIです。
結局、Google Cloud Vision APIを採用しました。

3つの検証の過程は、また別の記事でまとめます。
なかなか、面白い検証結果が出ました。

ただ、最も精度が高いのは、Google Cloud Vision APIでした。
よって、Google Cloud Vision APIを採用したということです。

ちなみに、PythonからGoogle Cloud Vision APIを利用しています。
用意した画像をAPI経由でテキストに変換した形になります。

「APIなんか利用できないぞ」という方は、e.Typistで十分だと思います。
e.Typistは、Google Cloud Vision APIに劣るとは言え、精度はかなり高いです。

全然、使えるレベルです。
ただし、有料です。

買取だと、12,190円(税別)です。
サブスクリプション形式だと以下。

これに対して、Google Cloud Vision APIは、従量課金です。
使っただけ料金が発生する仕組みです。

月に1000回は、無料で利用できます。
今回は、284ページでした。

そのため、無料枠内で余裕で収まりました。
APIを利用できるなら、より精度の高いGoogle Cloud Vision APIの方がベターだと感じます。

この項の最後に実際の精度を読み取り結果を載せておきます。
Google Cloud Vision APIによるOCRの結果です。

【入力画像】

【抽出テキスト】

完璧ですね。

テキストを音声に変換する(音声合成)

無償で探せば、あるにはあります。
ただ、利用できるレベルではありません。

そうなると、有料しか選択肢はありません。
個人で手が出せるレベルで、最も良いものは「AITalk 3」です。
それでも、15000円ぐらいはかかります。

音声合成においても、GoogleのAPIはあります。
ただし、OCRほどの品質は期待できません。

あと、GoogleのAPIは従量制でした。
音声合成は、基本的には修正ができません。
つまり、出来上がった音声ファイルを加工するのは困難です。

よって、音声合成のAPIは試行錯誤で使用頻度が増えることが予想されます。
別の表現をすれば、音声合成はツールで微調整を繰り返す必要があるのです。

その意味でも、音声合成はAPIでの利用には向きません。
また、GoogleのAPIよりもAITalk 3の方が品質も高いのです。

そうであれば、AITalk 3しか選択肢はありません。
それに、これで十分です。

実際の作業は、微調整になるでしょう。
この音声を作成する作業が、オーディオブック自作において最も時間がかかります。

出来上がった音声の一部を載せておきます。

オーディオブックを自作する

個人的には、このレベルで十分OKです。
AITalk 3では5人(女性4人、男性1人)から声質を選択可能です。
章ごとに声質をかえれば、メリハリが利いて記憶に残りやすいかもしれません。

タイトルとURLをコピーしました