나는 PDF를 읽는 데 문제가 있고 그들을 듣는 데 큰 도움이됩니다. 그래서 저는 PDF (또는 txt 파일)를 제공하고 MP3 파일을 뱉어내는 사용자 친화적 인 응용 프로그램을 작업하고 있습니다. 앞으로 이것은 힘든 일을하는 재미있는 서버가 될 것이지만 지금은 파이썬/bash 프로젝트 일뿐입니다. 이것은 작은 개인 프로젝트이므로 정기적 인 업데이트 자체는 없지만 시간이 있으면 내가 가진 것을 밀어 붙일 것입니다.
PDFS의 가장 큰 문제는 문서 내에 텍스트가 없거나 (본질적으로 이미지) 기존 텍스트 (일반적으로 OCR의 결과)가 품질이 좋지 않다는 것입니다. OCR은 종종 내가 제공 한 PDF에서 꽤 나쁘기 때문에 Bert (마스크 언어 모델)를 사용하여 맞춤법 검사 결과를 향상시킵니다. 앞으로 이것은 Microsoft의 Trocr로 대체 될 것입니다.
OCR이 유일한 문제라면 OCRMYPDF를 Espeak에 출력하여 사용하면 완료되었습니다. 불행히도, Espeak는 끔찍하게 들립니다. 변명은 없으며 오랜 시간 동안주의를 기울이기가 어렵 습니다. Coqui.ai의 TTS가 구조에 도달하여 몇 시간 동안의 독서를 견딜 수있는 곳입니다.
이 문제에 대한 다른 솔루션은 폐쇄 소스이며 많은 비용이 들었습니다. 이것은 무료입니다.
결국이 프로젝트에는 깔끔한 웹 UI가있어 최종 사용자의 입력이 거의 필요하지 않습니다. 이것은 결국 접근성 소프트웨어입니다. 사용하기 어려운 경우 이상합니다. 불행히도 지금은 Linux에서만 테스트 된 CLI 만 있습니다. 최고는 아니지만 어딘가에서 시작해야합니다.
이 작업을 수행하는 "가장 쉬운"방법은 Ubuntu와 함께 WSL을 설치하고 Ubuntu/Debian 지침을 따르는 것입니다.
당신이 화려하고 창문에서 파이썬을하는 방법을 알고 있다면, 그것이 어떻게 진행되는지, 어떻게했는지 알려주세요!
참고 : 불행히도, 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 실행하도록 설정했습니다 (사용법 정보는 아래 참조).
데비안에서 달리기
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 (기본값 값을 가진 옵션 매개 변수를 나타내는 정사각형 브래킷)으로 출력합니다.
r4l --list_langs 실행하여 지원되는 언어를 나열하십시오
~~이 프로그램은 많은 메모리를 사용하므로 스왑 크기를 ~ 10GB로 확장하는 것이 좋습니다 (Debian 사용 fixswap.sh ) ~~ (지금은 수정되어야하지만 메모리가 무작위로 실행되면 무작위로 충돌하는 경우 스왑 크기를 증가시킵니다).
현재 설정 (4 Intel i7 8 Gen Cores, GPU, Debian 10, 5GB RAM+7GB 스왑)에서 영어 설정은 약 440 단어/분 (n = 21, r^2 = 0.97)을 175 단어/분 오디오 파일로 읽습니다. 따라서 R4L은 5000 Word 파일을 읽는 데 ~ 11.4 분이 걸리며 IRL을 듣는 데 ~ 28.5 분이 걸립니다.
불행히도, 나는 CPU 전용 시스템을 위해 이것을 넘어서는 속도를 높일 수 없습니다. 주요 고정점은 파일 액세스가 느리지 만 RAM 인식이 향상되면 BERT 및 TTS는 G/TPU 머신에서 빠르게 실행되도록 설계되었습니다.
높은 수준에서 이것이 작동하는 방법은 다음과 같습니다.
input.pdf-> ocrmypdf (ghostscript-> unpper-> tesseract -acr) -> preprocessing (regex) -> ocr courction (bert) -> postprocessing (regex) -> speech (coqui.ai tts) -> wav to mp3 (pydub) -> mp3
나는 ML 장비에 액세스 할 때 관심이있는 텍스트를 더 잘 처리하기 위해 Track/Bert 및 TTS를 미세 조정해야하지만 그때까지 기성품 모델을 계속 사용하겠습니다. 바라건대 이것은 모두 멋지고 간단한 웹 UI에 의해 제어되고 공개적으로 사용하기 위해 서버에서 실행 중입니다. 또한 사용 및 유지 관리를 위해 최소한의 기술 지식이 필요한 실행 파일에 이것을 포장하고 싶습니다. 그러나 그것은 먼 목표입니다.