我在閱讀PDF和聽它們的情況下遇到了問題,這對我有很大的幫助!因此,我正在研究一個可以給出PDF(或TXT文件)並吐出MP3文件的用戶友好應用程序。將來,這將是一台有趣的服務器,可以完成艱苦的工作,但是就目前而言,這只是一個Python/Bash項目。這是一個小型的個人項目,因此本身不會定期更新,但是當我有時間時,我會推開我所擁有的東西。
PDF的最大問題是它們要么在文檔中沒有文本(本質上是圖像),要么現有文本(通常是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)。粗略的眼光說, 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,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
獲取Pytorch
python setup.py develop
需要〜2-3GB的磁盤空間安裝
r4l [--in_path in/] [--out_path out/] [--lang en] in/和輸出mp3文件中的所有兼容文件上運行掃描和校正套件out/以使用語言en (Square Brackets表示具有默認值值的可選參數)。
運行r4l --list_langs列出支持的語言
~~此程序使用大量內存,因此我建議將您的交換尺寸擴大到〜10GB(用於Debian使用fixswap.sh )~~(現在應該修復,但是如果它隨機耗盡了內存/崩潰,請增加交換尺寸)
在我當前的設置(4個Intel I7第8代內核,無GPU,Debian 10,5GB RAM+7GB交換)中,英語設置將讀取約440個單詞/分鐘(n = 21,r^2 = 0.97),為175個單詞/分鐘音頻文件。因此,R4L需要〜11.4分鐘才能閱讀5000個單詞文件,這將需要約28.5分鐘才能收聽IRL。
不幸的是,對於僅CPU的系統,我無法加快它的速度。主要的粘性點是文件訪問速度很慢,但是隨著RAM意識的提高,主要速度是Bert和TTS,它們的設計都旨在在G/TPU機器上快速運行。
在高水平上,這是這樣的工作方式:
input.pdf-> ocrmypdf(ghostscript-> unpaper-> tesseract -ocr) - > preprocessing(regex) - > ocr校正(bert) - > postprocessing(regex) - > to to to speech(coqui.ai tts) -
幾乎可以肯定的是,我需要微調Trocr/Bert和TTS,以便更好地處理我在獲得ML鑽機時感興趣的文本,但是在此之前,我將繼續使用現成的模型。希望這一切都可以由一個漂亮的,簡單的Web UI控制,並在服務器上運行以供公眾使用。另外,我想將其打包成一個可執行的可執行文件,該可執行文件需要最少的技術知識來使用和維護,但這是一個遙遠的目標。