Come creare audiolibri usando Python

Come creare audiolibri usando Python
Come potresti già sapere, Python è un meraviglioso strumento di programmazione perché ci consente di fare praticamente qualsiasi cosa! Questo significa anche che possiamo creare il nostro software. In questo tutorial, impareremo a sintetizzare il discorso, convincere Python a leggere i PDF, persino tradurli per noi e poi leggerli a noi.

Quello che faremo qui è convincere Python a leggere un PDF e tradurlo per noi. Innanzitutto, proveremo a creare un audiolibro inglese. In quanto tale, la prima cosa che dobbiamo fare logicamente è estrarre il testo dal PDF. Per questo, usiamo il modulo noto come tika. Come al solito, per installare tika, si evoca Pip.

PIP Installa tika

Tika è un modulo utilizzato per il rilevamento e l'estrazione del contenuto. Una volta installato, dobbiamo importare l'oggetto parser.

da tika import parser

Successivamente, abbiamo bisogno del metodo from_file (), che richiede due argomenti al massimo. Il primo argomento è il nome del file PDF e il secondo argomento è chiamato aggiuntivo, che richiede il tipo di dati desiderati. Lasciare il campo aggiuntivo vuoto richiederà tutto, dai metadati al contenuto. Qui, Meta restituisce i metadati, il testo restituisce il testo e Param XMLContent restituisce il contenuto XML.

Raw = parser.da_file ('commento.PDF')

Una volta che abbiamo i dati, dobbiamo estrarre solo il testo. Lo facciamo selezionando il "contenuto" da RAW.

raw_text = raw ['content']

Il problema con Tika è che può schiantarsi quando ci sono troppe pagine. Quindi, usiamo anche un altro metodo. Se il PDF è breve e dolce, usa tika. Tuttavia, puoi anche utilizzare il modulo PYPDF2.

PIP Installa PYPDF2

Quindi iniziamo:

Importa PYPDF2

Innanzitutto, apriamo il documento di interesse e leggiamo da esso utilizzando il metodo Open () e la classe PDffleReader (). Il metodo Open () prende due argomenti qui: il primo è il nome del file da leggere e il secondo è la modalità da leggere. Qui, "RB" sta per leggere binario. La classe PDffileReader assume quindi PDF_Document.

pdf_document = open ("benvenuto.PDF "," RB ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)

Quindi, raccogliamo il numero totale di pagine usando il metodo Numpages. Lo faremo poiché creeremo un loop che va dalla pagina 1 all'ultima pagina, leggendo ogni pagina mentre procede.

NUMBER_OF_PAGES = pdf_document_read.Numpages

Iniziamo quindi un ciclo per contare ogni pagina.

per pagina nell'intervallo (1, numero_of_pages):

Quindi, dobbiamo ottenere una pagina utilizzando il metodo getPage () ed estrarre il testo dall'interno del metodo ExtractText ().

one_page = pdf_document_read.getpage (pagina)
raw_text = one_page.extractText () import pyttsx3

Per prima cosa inizializziamo il modulo usando init ().

motore = pyttsx3.dentro()

Possiamo impostare le voci, il volume e la valutazione utilizzando il motore.getProperty (). Il setProperty () prende due valori: la proprietà per cambiare e il suo valore. In questo caso, ho impostato le voci su una femmina (voci [1].id), con volume massimo (1) e una velocità di 128.

voci = motore.getProperty ("voci")
motore.SetProperty ('Voice', Voices [1].id)
Volume = motore.getProperty ('Volume')
motore.setProperty ('Volume', 1.0)
tasso = motore.getProperty ('tasso')
motore.setProperty ('Vale', 128)

Quindi usiamo il motore.dire () per sintetizzare il discorso e ottenere il testo a leggere ad alta voce.

motore.dire (raw_text)
motore.runandwait ()

Il codice completo sembrerebbe qualcosa di simile:

Importa PYPDF2
pdf_document = open ("benvenuto.PDF "," RB ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)
NUMBER_OF_PAGES = pdf_document_read.Numpages
per pagina nell'intervallo (1, numero_of_pages):
one_page = pdf_document_read.getpage (pagina)
raw_text = one_page.extractText ()
importare pyttsx3
motore = pyttsx3.dentro()
voci = motore.getProperty ("voci")
motore.SetProperty ('Voice', Voices [1].id)
Volume = motore.getProperty ('Volume')
motore.setProperty ('Volume', 1.0)
tasso = motore.getProperty ('tasso')
motore.setProperty ('Vale', 128)
motore.dire (raw_text)
motore.runandwait ()

Nell'esempio precedente, avevamo un testo inglese parlato in inglese. Ora, proveremo a tradurre il testo in un'altra lingua e ottenere il testo tradotto a leggere ad alta voce. Nei casi quando si traducono un testo, la prima parte del codice è simile alla sezione precedente. È richiesto il codice fino al codice PYPDF2. Tuttavia, una volta avviato il loop, cambieremo un po 'il codice. Qui, dobbiamo aggiungere la traduzione e farla parlare nell'accento della lingua di destinazione.

Innanzitutto, installa googletrans.

PIP Installa Googletrans

Ora, iniziamo a tradurre il testo.

Dal traduttore di importazione Googletrans

Successivamente, invochiamo il traduttore ().

traduttore = traduttore ()

Usiamo il metodo Translate (). Qui, inseriamo il primo argomento - il testo da tradurre - e la lingua di destinazione - la lingua su cui il testo deve essere convertito. In questo caso, ho scelto di tradurre il testo in francese (o altro "fr").

tradotto = traduttore.Translate (raw_text, dest = 'fr')

Una volta tradotto il testo, dobbiamo estrarre la porzione di testo.

traduzione_2 = tradotto.testo

Quest'ultimo tradurrà e memorizzerà il testo tradotto nella variabile tradotta_2. Ora abbiamo bisogno di un modulo che tradurrà e memorizzerà il testo parlato in un mp3. Per questo, abbiamo bisogno di GTT e di giocare:

PIP Installa GTTS
PIP Installa PlaySound
Importa GTTS
da PlaySound Import PlaySound

I GTT.La classe GTTS () ha alcuni argomenti. Tuttavia, qui useremo solo due argomenti. Il primo argomento è il testo da leggere e il secondo è la lingua in cui leggere il testo in. In questo caso, ho scelto di leggere il testo in francese (FR). Il motivo per cui stiamo usando GTT qui invece di Pyttsx3 è a causa dei grandi accenti che vanno con il paragrafo di lettura. Quindi, quando un testo viene letta in francese, con GTT, sembrerà che un francese stia leggendo il testo anziché un madrelingua inglese.

text = gtts.GTTS (traduzione_2, lang = "fr")

Successivamente, salviamo il testo parlato in un mp3. In questo caso, ho scelto di nominarlo.mp3:

testo.Salva ("Testo.mp3 ")

Per suonare il MP3 salvato, usiamo PlaySound ():

PlaySound ("Testo.mp3 ")

Il codice completo sembrerebbe qualcosa di simile:

Importa PYPDF2
pdf_document = open ("benvenuto.PDF "," RB ")
pdf_document_read = pypdf2.PdffileReader (pdf_document)
NUMBER_OF_PAGES = pdf_document_read.Numpages
per pagina nell'intervallo (1, numero_of_pages):
one_page = pdf_document_read.getpage (pagina)
raw_text = one_page.extractText ()
Dal traduttore di importazione Googletrans
traduttore = traduttore ()
tradotto = traduttore.Translate (raw_text, dest = 'fr')
traduzione_2 = tradotto.testo
Importa GTTS
da PlaySound Import PlaySound
TTS = GTTS.GTTS (traduzione_2, lang = "fr")
TTS.Salva ("Testo.mp3 ")
PlaySound ("Testo.mp3 ")