我在阅读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控制,并在服务器上运行以供公众使用。另外,我想将其打包成一个可执行的可执行文件,该可执行文件需要最少的技术知识来使用和维护,但这是一个遥远的目标。