From be11065773c3063cbf532ff7736950f54ded1394 Mon Sep 17 00:00:00 2001 From: quentin-vigne <59710953+quentin-vigne@users.noreply.github.com> Date: Sun, 11 Oct 2020 21:35:34 +0200 Subject: [PATCH] Answer to #107 - PDF Book to Audiobook --- PDF_to_audio/README.md | 17 +++++++++++++++++ PDF_to_audio/pdf-test.pdf | Bin 0 -> 20597 bytes PDF_to_audio/pdf_to_audio.py | 24 ++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 PDF_to_audio/README.md create mode 100644 PDF_to_audio/pdf-test.pdf create mode 100644 PDF_to_audio/pdf_to_audio.py diff --git a/PDF_to_audio/README.md b/PDF_to_audio/README.md new file mode 100644 index 0000000000..1dfbbdd8ca --- /dev/null +++ b/PDF_to_audio/README.md @@ -0,0 +1,17 @@ +# Readme +## Use this code +First you'll need to type those lines : +``` + pip install pyttsx3 + + pip install PyPDF2 +``` + +## Improving the code +- Add the possiblity to save to .MP3 +- Select the pages we would like to read +- Find a better TTS Voice + +## Known issues +- Some PDF don't use spaces but positionning, at the moment I can't figure out how to take this into account other than using OCR. +- \ No newline at end of file diff --git a/PDF_to_audio/pdf-test.pdf b/PDF_to_audio/pdf-test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f46dbe561d03ee3db73a62bc19254bfc0d0c4944 GIT binary patch literal 20597 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 Dua<2+ literal 0 HcmV?d00001 diff --git a/PDF_to_audio/pdf_to_audio.py b/PDF_to_audio/pdf_to_audio.py new file mode 100644 index 0000000000..6ffec42ea9 --- /dev/null +++ b/PDF_to_audio/pdf_to_audio.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Oct 11 19:50:06 2020 + +@author: quent +""" +import PyPDF2 +import pyttsx3 +from tkinter import Tk +from tkinter.filedialog import askopenfilename + + +Tk().withdraw() # We could make our own GUI but let's use the default one +FILE_PATH = askopenfilename() # open the dialog GUI + +with open(FILE_PATH, "rb") as f: # open the file in reading (rb) mode and call it f + pdf = PyPDF2.PdfFileReader(f) + #parse every page + for page in pdf.pages: + text = page.extractText() + ## speaking part #### + engine = pyttsx3.init() + engine.say(text) + engine.runAndWait()