私はPDFを読んで、それらの話を聞くのに大いに役立つ問題があります!そのため、PDF(またはTXTファイル)を指定してMP3ファイルを吐き出すことができるユーザーフレンドリーなアプリケーションに取り組んでいます。将来的には、これはハードワークを行う楽しいサーバーになりますが、今のところはPython/Bashプロジェクトにすぎません。これは小さな個人プロジェクトなので、それ自体が定期的に更新されることはありませんが、時間があるときは私が持っているものをプッシュします。
PDFSの最大の問題は、ドキュメント内にテキストがない(本質的に画像)か、既存のテキスト(通常はOCRの結果)が質が低いことです。 OCRは私に与えられたPDFでかなり悪いことが多いので、私はBert(マスクされた言語モデル)を使用してスペルチェックの結果を改善します。将来的には、これはMicrosoftのTrocrに置き換えられます。
OCRが唯一の問題であった場合、OCRMYPDFの出力を使用してESPEAKを使用するだけで、私たちは完了します。残念ながら、スパークはひどい音です。変曲はなく、長期間にわたってそれに注意を払うのは本当に難しいです。そこで、Coqui.aiのTTSが救助に登場し、数時間にわたる測定値が耐えられます。
この問題の他のソリューションは閉じたソースであり、多くのお金がかかります。これは無料です。
最終的には、このプロジェクトには、エンドユーザーからの入力はほとんど必要ないきちんとしたWeb UIがあります。結局、これはアクセシビリティソフトウェアです。使用が難しい場合は奇妙です。残念ながら、今のところ、LinuxでのみテストされているCLIのみがあります。最高ではありませんが、どこかから始めなければなりません。
これを行う「最も簡単な」方法は、Ubuntuを使用してWSLをインストールし、Ubuntu/Debianの指示に従うことです。
あなたが派手で、WindowsでPythonの方法を知っているなら、それがどうなるか、どのようにしたか教えてください!
注:残念ながら、WSL用にGPUのものをセットアップするのは難しいです。それでも、CUDA(NVIDIA)カードでのみ機能しますが、現在はテストする方法がありません(GPUのものをテストできませんが、それはポイントを超えています)。
Macですべての依存関係を取得する方法(ubuntu/debianを参照)を取得する方法がわかりません。 Cursoryの視線では、 brewまたはportそれらのほとんどを得ることができるはずだと言いますが、私はそれらの可用性については知りません。あなたがMacを持っていて、これを理解したなら、あなたがそれをどのようにしたか教えてください!
sudo apt install -y python3 python3-venv espeak ffmpeg tesseract-ocr-all python3-dev libenchant-dev libpoppler-cpp-dev pkg-config libavcodec libavtools ghostscript poppler-utils
仮想環境を作成してアクティブ化し、Pytorchを取得してから実行します
pip install reading4listeners
そして、あなたはすべてr4lを実行するように設定されています(使用情報については以下を参照)
Debianで、実行します
sudo apt install -y python3 python3-venv espeak ffmpeg tesseract-ocr-all python3-dev libenchant-dev libpoppler-cpp-dev pkg-config libavcodec libavtools ghostscript poppler-utils
git clone https://github.com/CypherousSkies/pdf-to-speech
cd pdf-to-speech
python3 -m venv venv
souce venv/bin/activate
pip install -U pip setuptools wheel cython
Pytorchを入手してください
python setup.py develop
インストール用に〜2〜3GBのディスクスペースを取ります
r4l [--in_path in/] [--out_path out/] [--lang en] in/および出力MP3ファイルのすべての互換性のあるファイルでスキャンと修正を実行し、言語enを使用out/使用します(デフォルト値を持つオプションパラメーターを示す正方形ブラケット)。
r4l --list_langsを実行して、サポートされている言語を一覧表示します
~~このプログラムは多くのメモリを使用しているので、スワップサイズを〜10GB(Debianを使用するためにfixswap.shの場合)~~(これを修正する必要がありますが、メモリ/クラッシュがランダムに実行される場合は、スワップサイズを増やします)
私の現在のセットアップ(4 Intel I7 Gen Cores、GPUなし、Debian 10、5GB RAM+7GBスワップ)では、英語の設定は約440ワード/分(n = 21、r^2 = 0.97)を175ワード/分のオーディオファイルに読み取ります。そのため、R4Lは5000ワードファイルを読み取るのに〜11.4分かかります。これには、IRLを聴くのに約28.5分かかります。
残念ながら、CPUのみのシステムではこれ以上のスピードアップはできません。主な固定点は、ファイルアクセスが遅いことでしたが、RAM認識が改善されているため、主要なスローダウンはBERTとTTSであり、どちらもG/TPUマシンで迅速に実行するように設計されています。
高いレベルでは、これがどのように機能するかがあります:
input.pdf-> ocrmypdf(ghostscript-> unpaper-> tesseract -ocr) - > preprocessing(regex) - > ocr correction(bert) - > postprocessing(regex) - >テキスト(coqui.ai tts) - > wav to mp3(pydub) - > out.mp3
MLリグにアクセスしたときに興味のあるテキストをよりよく扱うために、TROCR/BERTおよびTTSを微調整する必要がありますが、それまでは、既製のモデルを使用し続けます。うまくいけば、これがすべて素敵でシンプルなWeb UIによって制御され、公共の使用のためにサーバーで実行されたままにすることができます。また、これを使用および維持するために最小限の技術的知識を必要とする実行可能ファイルにパッケージ化したいと思いますが、それは遠い目標です。