Saya memiliki masalah membaca PDF dan mendengarkannya membantu saya secara besar -besaran! Jadi saya sedang mengerjakan aplikasi ramah pengguna yang dapat diberikan PDF (atau file txt) dan memuntahkan file MP3. Di masa depan, ini akan menjadi server yang menyenangkan yang akan melakukan kerja keras, tetapi untuk saat ini, itu hanya akan menjadi proyek Python/Bash. Ini adalah proyek pribadi kecil, jadi tidak akan ada pembaruan rutin per se , tetapi ketika saya punya waktu, saya akan mendorong apa yang saya dapatkan.
Masalah terbesar dengan PDF adalah mereka tidak memiliki teks dalam dokumen (pada dasarnya gambar) atau teks yang ada (biasanya hasil OCR) berkualitas buruk. OCR sering sangat buruk pada PDF yang saya berikan, jadi saya menggunakan Bert (model bahasa bertopeng) untuk meningkatkan hasil pemeriksaan ejaan. Di masa depan ini akan digantikan oleh Microsoft's Trocr.
Jika OCR adalah satu -satunya masalah, saya hanya akan menggunakan output membuat OCRMYPDF ke ESPEAK dan kami akan selesai. Sayangnya, Espeak terdengar mengerikan. Tidak ada infleksi dan sangat sulit untuk memperhatikannya untuk waktu yang lama. Di situlah TTS Coqui.ai datang untuk menyelamatkan, membuat bacaan berjam-jam tertahankan.
Solusi lain untuk masalah ini adalah sumber tertutup dan menghabiskan banyak uang. Ini gratis.
Akhirnya proyek ini akan memiliki UI web yang rapi yang akan membutuhkan sedikit input dari pengguna akhir. Bagaimanapun, ini adalah perangkat lunak aksesibilitas - akan aneh jika sulit digunakan. Sayangnya, untuk saat ini saya hanya memiliki CLI yang baru diuji di Linux. Bukan yang terbaik, tapi saya harus memulai di suatu tempat.
Cara "termudah" untuk melakukan ini adalah dengan memasang WSL dengan Ubuntu dan mengikuti instruksi Ubuntu/Debian.
Jika Anda mewah dan tahu cara Python di Windows, beri tahu saya bagaimana kelanjutannya dan bagaimana Anda melakukannya!
Catatan: Sayangnya, sulit untuk mengatur barang -barang GPU untuk WSL, dan bahkan kemudian hanya benar -benar berfungsi untuk kartu CUDA (NVIDIA), yang saya tidak punya cara untuk menguji sekarang (bukan karena saya bisa menguji barang GPU apa pun sekarang, tetapi itu di luar intinya).
Harus mengatakan, saya tidak tahu bagaimana mendapatkan semua dependensi (lihat Ubuntu/Debian) di Mac. Pandangan sekilas mengatakan bahwa brew atau port harus dapat mendapatkan sebagian besar dari mereka, tetapi saya tidak tahu tentang ketersediaannya. Jika Anda memiliki Mac dan mencari tahu ini, beri tahu saya bagaimana Anda melakukannya!
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
Membuat dan mengaktifkan lingkungan virtual, dapatkan pytorch, lalu jalankan
pip install reading4listeners
Dan Anda siap untuk menjalankan r4l (lihat di bawah untuk info penggunaan)
Di Debian, lari
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
Dapatkan Pytorch
python setup.py develop
Mengambil ~ 2-3GB ruang disk untuk menginstal
r4l [--in_path in/] [--out_path out/] [--lang en] menjalankan rangkaian pemindaian dan koreksi pada semua file yang kompatibel di direktori in/ dan output file MP3 untuk out/ menggunakan bahasa en (braket persegi yang menunjukkan parameter opsional dengan nilai default).
Jalankan r4l --list_langs ke daftar bahasa yang didukung
~~ Program ini menggunakan banyak memori jadi saya sarankan memperluas ukuran swap Anda dengan ~ 10GB (untuk debian menggunakan fixswap.sh ) ~~ (ini harus diperbaiki sekarang, tetapi jika kehabisan memori/macet secara acak, tingkatkan ukuran swap)
Pada pengaturan saya saat ini (4 Intel I7 8th Gen Core, tidak ada GPU, Debian 10, 5GB RAM+7GB swap), pengaturan bahasa Inggris akan dibaca sekitar 440 kata/mnt (n = 21, r^2 = 0,97) menjadi file audio 175 kata/menit. Jadi R4L membutuhkan waktu ~ 11,4 menit untuk membaca file 5000 kata, yang akan memakan waktu ~ 28,5 menit untuk mendengarkan IRL.
Sayangnya, saya tidak bisa mempercepatnya di luar ini untuk sistem CPU saja. Titik sticking utama adalah bahwa akses file lambat, tetapi dengan peningkatan kesadaran RAM, perlambatan utama adalah Bert dan TTS, yang keduanya dirancang untuk berjalan dengan cepat pada mesin G/TPU.
Pada level tinggi, inilah cara kerjanya:
input.pdf -> oCrmypdf (Ghostscript -> unpaper -> tesseract -ocr) -> preprocessing (regex) -> koreksi ocr (Bert) -> postprocessing (regex) -> teks ke pidato (coqui.ai tts) -> wav to mp3 (pydub) -out.mp)
Saya hampir pasti perlu menyempurnakan Trocr/Bert dan TTS untuk menangani teks yang lebih baik saya tertarik ketika saya mendapatkan akses ke rig ML, tetapi sampai saat itu, saya akan terus menggunakan model di luar rak. Semoga ini semua dapat dikendalikan oleh UI web yang bagus dan sederhana dan dibiarkan berjalan di server untuk penggunaan publik. Saya juga ingin mengemas ini ke dalam yang dapat dieksekusi yang membutuhkan pengetahuan teknis minimal untuk digunakan dan dipelihara, tetapi itu adalah tujuan yang jauh.