У меня есть проблемы с чтением PDF -файлов, и слушать их помогает мне массово! Итак, я работаю над удобным приложением, которое можно получить PDF (или файл TXT) и выплюнуть файл MP3. В будущем это будет забавный сервер, который будет выполнять тяжелую работу, но сейчас это будет просто проект Python/Bash. Это небольшой личный проект, так что не будет регулярных обновлений как таковых , но когда у меня будет время, я подталкиваю то, что у меня есть.
Самая большая проблема с PDFS заключается в том, что у них либо нет текста в документе (по сути, изображения), либо существующий текст (обычно результат OCR) не имеет низкого качества. OCR часто довольно плох для PDF-файлов, которые мне дают, поэтому я использую BERT (модель в масках) для улучшения результатов проверки орфографии. В будущем это будет заменено Microsoft TROCR.
Если бы OCR был единственной проблемой, я бы просто использовал производительность OCRMYPDF в ESPEAK, и мы были бы сделаны. К сожалению, Espeak звучит ужасно. Там нет перегиба, и очень трудно обратить на это внимание в течение длительного времени. Вот где TTS Coqui.ai приходит на помощь, делая многочасовые показания терпимыми.
Другими решениями этой проблемы являются закрытый исходный код и стоят много денег. Это бесплатно.
В конце концов, этот проект будет иметь аккуратный веб -интерфейс, который потребует очень мало ввода от конечного пользователя. В конце концов, это программное обеспечение для доступности - было бы странно, если бы его было трудно использовать. К сожалению, сейчас у меня есть только CLI, который был протестирован только на Linux. Не самое лучшее, но я должен с чего -то начать.
«Самый простой» способ сделать это - установить WSL с Ubuntu и следовать инструкциям Ubuntu/Debian.
Если вам нравятся и знаете, как Python в Windows, скажите мне, как это происходит и как вы это сделали!
Примечание. К сожалению, трудно настроить GPU Stuff для WSL, и даже тогда на самом деле действительно работает только для карт CUDA (NVIDIA), которые я не имею возможности тестирования на данный момент (не то, чтобы я мог проверить любой GPU сейчас, но это за пределами вопроса).
Должен сказать, я понятия не имею, как получить все зависимости (см. Ubuntu/Debian) на Mac. Беглый взгляд говорит, что 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-3 ГБ дискового пространства для установки
r4l [--in_path in/] [--out_path out/] [--lang en] Запускает набор сканирования и коррекции на всех совместимых файлах в каталоге in/ и выводит файлы MP3 для out/ использования en (квадратные скобки, обозначающие дополнительные параметры с значениями по умолчанию).
Запустите r4l --list_langs для перечисления поддерживаемых языков
~~ Эта программа использует много памяти, поэтому я бы посоветовал расширить размер свопа на ~ 10 ГБ (для Debian использовать fixswap.sh ) ~~ (это должно быть исправлено сейчас, но если она заканчивается из памяти/случайным образом, увеличивает размер соката)
В моей текущей настройке (4 ядра 8 -го поколения Intel I7, без GPU, Debian 10, 5 ГБ ОЗУ+7 ГБ подмен), английская настройка будет читать около 440 слов/мин (n = 21, r^2 = 0,97) в аудиофайл 175 слов/мин. Таким образом, R4L занимает ~ 11,4 минуты, чтобы прочитать файл 5000 слов, который займет ~ 28,5 минут, чтобы прослушать IRL.
К сожалению, я не могу ускорить его намного больше для систем только для процессоров. Основной точкой прилипания было то, что доступ к файлам является медленным, но с улучшенной осведомленностью RAM основным замедлением является BERT и TTS, которые предназначены для быстрого запуска на машинах G/TPU.
На высоком уровне, вот как это работает:
input.pdf -> ocrmypdf (ghostscript -> unpaper -> tesseract -ocr) -> preprocessing (regex) -> ocr коррекция (bert) -> постпроцессы (regex) -> текст на речь (coqui.ai tts) -> Wav to mp3 (pydub) -> out.mp3
Мне почти наверняка нужно будет тонко настраивать Trocr/Bert и TTS, чтобы лучше справиться с текстами, которые меня интересуют, когда я получаю доступ к установке ML, но до тех пор я буду продолжать использовать готовые модели. Надеемся, что все это можно контролировать с помощью хорошего, простого веб -интерфейса и оставить работу на сервере для публичного использования. Также я хотел бы собрать это в исполняемый файл, который требует минимальных технических знаний для использования и поддержания, но это далекая цель.