Ich habe Probleme beim Lesen von PDFs und zuhöre, hilft mir massiv! Ich arbeite also an einer benutzerfreundlichen Anwendung, die eine PDF (oder TXT-Datei) erhalten und eine MP3-Datei ausspuckte. In Zukunft wird dies ein lustiger Server sein, der die harte Arbeit leistet, aber im Moment wird es nur ein Python/Bash -Projekt sein. Dies ist ein kleines persönliches Projekt, so dass es keine regelmäßigen Updates an sich geben wird, aber wenn ich Zeit habe, werde ich das drücken, was ich habe.
Das größte Problem bei PDFs ist, dass sie entweder keinen Text innerhalb des Dokuments haben (im Wesentlichen Bilder sind) oder der vorhandene Text (normalerweise das Ergebnis von OCR) von schlechter Qualität ist. OCR ist oft ziemlich schlecht bei PDFs, die mir gegeben werden, daher verwende ich Bert (ein maskiertes Sprachmodell), um die Ergebnisse der Zauberprüfung zu verbessern. In Zukunft wird dies durch Microsoft's Trocr ersetzt.
Wenn OCR das einzige Problem wäre, würde ich nur die ORCRMYPDF -Ausgabe für ESPEAK verwenden und wir würden fertig sein. Leider klingt Espeak schrecklich. Es gibt keine Beugung und es ist wirklich schwierig, lange Zeit darauf zu achten. Hier kommt die TTS von Coqui.ai zur Rettung und macht stundenlange Lesungen erträglich.
Die anderen Lösungen für dieses Problem sind geschlossen und kosten viel Geld. Das ist kostenlos.
Schließlich wird dieses Projekt eine ordentliche Web -Benutzeroberfläche haben, für die der Endbenutzer nur sehr wenig Eingaben benötigt. Dies ist schließlich eine Barrierefreiheitsoftware - es wäre seltsam, wenn es schwierig wäre, sie zu bedienen. Leider habe ich vorerst nur eine CLI, die nur auf Linux getestet wurde. Nicht das Beste, aber ich muss irgendwo anfangen.
Die "einfachste" Art, dies zu tun, besteht darin, WSL mit Ubuntu zu installieren und den Anweisungen von Ubuntu/Debian zu folgen.
Wenn Sie Lust haben und wissen, wie man unter Windows Python ist, sagen Sie mir, wie es geht und wie Sie es gemacht haben!
HINWEIS: Leider ist es schwierig, GPU -Sachen für WSL einzurichten, und auch dann nur für CUDA (NVIDIA) -Karten, die ich bis jetzt keine Möglichkeit habe (nicht, dass ich jetzt irgendwelche GPU -Sachen testen könnte, aber das ist über den Punkt hinaus).
Ich muss sagen, ich habe keine Ahnung, wie ich alle Abhängigkeiten (siehe Ubuntu/Debian) auf Mac bekommen kann. Ein flüchtiger Blick besagt, dass brew oder port in der Lage sein sollten, die meisten davon zu bekommen, aber ich habe keine Ahnung von ihrer Verfügbarkeit. Wenn Sie einen Mac haben und dies herausgefunden haben, lassen Sie mich wissen, wie Sie es gemacht haben!
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
Eine virtuelle Umgebung machen und aktivieren, Pytorch erhalten und dann laufen lassen
pip install reading4listeners
Und Sie sind alle auf r4l ausgeführt (siehe unten für Nutzungsinformationen)
Auf Debian, run
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
Holen Sie sich Pytorch
python setup.py develop
Nimmt ~ 2-3 GB Speicherplatz zur Installation ein
r4l [--in_path in/] [--out_path out/] [--lang en] führt die Suite von Scannen und Korrekturen in allen kompatiblen Dateien im Verzeichnis in/ und gibt MP3-Dateien aus, um die Sprache en out/ (Quadratklammern, die optionale Parameter mit Standardwerten bezeichnen).
Führen Sie r4l --list_langs aus, um unterstützte Sprachen aufzulisten
~~ Dieses Programm verwendet viel Speicher, daher würde ich empfehlen, Ihre Swap -Größe um ~ 10 GB zu erweitern (für Debian verwenden Sie fixswap.sh ) ~~ (dies sollte jetzt behoben werden, aber wenn es zufällig aus dem Speicher/Abstürze ausgeht, erhöhen Sie die Swap -Größe)
Bei meinem aktuellen Setup (4 Cores der 8. Generation der 8. Generation, No GPU, Debian 10, 5 GB RAM+7 GB Swap) wird die englische Einstellung etwa 440 Wörter/min (n = 21, r^2 = 0,97) in eine 175 Word/Min -Audiodatei gelesen. Daher dauert R4L ~ 11,4 Minuten, um eine 5000 -Word -Datei zu lesen, die ~ 28,5 Minuten dauert, um IRL zu hören.
Leider kann ich es für CPU-Systeme nur sehr beschleunigen. Der Hauptknackpunkt war, dass der Dateizugriff langsam ist, aber mit verbessertem RAM-Wahrnehmung ist die Hauptverschwendung Bert und TTS, die beide so konzipiert sind, dass sie schnell auf G/TPU-Maschinen ausgeführt werden.
Auf hohem Niveau funktioniert dies:
input.pdf -> ocrmypdf (Ghostscript -> Unpaper -> Tesseract -Ocr) -> Vorverarbeitung (Regex) -> OCR Correction (Bert) -> Postprozessing (Regex) -> Text an Speech (Coqui.ai TTs) -> Wav to mp3 (pyDub) -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Out.mp3)
Ich werde mit ziemlicher Sicherheit Troc/Bert und TTS fein abgeben müssen, um besser mit den Texten umzugehen, an denen ich interessiert bin, wenn ich Zugriff auf ein ML-Rig bekomme, aber bis dahin werde ich weiterhin die off-the-Shelf-Modelle verwenden. Hoffentlich kann dies alles von einer schönen, einfachen Web -Benutzeroberfläche und links auf einem Server für die öffentliche Verwendung gesteuert werden. Außerdem möchte ich dies in eine ausführbare Datei verpacken, die minimales technisches Wissen erfordert, um sie zu nutzen und zu pflegen, aber das ist ein weit entferntes Ziel.