So erstellen Sie Hörbücher mit Python

So erstellen Sie Hörbücher mit Python
Wie Sie vielleicht bereits wissen, ist Python ein wunderbares Programmierwerkzeug, da wir es uns ermöglichen, praktisch alles zu tun! Dies bedeutet auch, dass wir unsere eigene Software erstellen können. In diesem Tutorial werden wir lernen, Sprache zu synthetisieren, Python zum Lesen von PDFs zu bringen, sie sogar für uns zu übersetzen und sie dann vorzulesen.

Was wir hier tun werden, ist, Python dazu zu bringen, uns ein PDF zu lesen und es für uns zu übersetzen. Zunächst versuchen wir, ein englisches Hörbuch zu erstellen. Als solches müssen wir als erstes logischerweise den Text aus der PDF extrahieren. Dafür verwenden wir das als Tika bekannte Modul. Wie üblich, um Tika zu installieren, beschwört man PIP.

PIP Installieren Sie Tika

Tika ist ein Modul, das zur Erkennung und Extraktion von Inhalten verwendet wird. Nach der Installation müssen wir das Parser -Objekt importieren.

vom Tika -Import -Parser

Als nächstes brauchen wir die Methode von_File (), die maximal zwei Argumente nimmt. Das erste Argument ist der Name der PDF -Datei, und das zweite Argument heißt zusätzlich. Wenn Sie das zusätzliche Feld leer lassen, fordern Sie alles von Metadaten bis Inhalt an. Hier gibt Meta die Metadaten zurück, der Text gibt den Text zurück und der Param XMLContent gibt den XML -Inhalt zurück.

RAW = Parser.von_file ('Kommentar.pdf ')

Sobald wir die Daten haben, müssen wir nur den Text extrahieren. Wir tun dies, indem wir den "Inhalt" von RAW auswählen.

RAW_TEXT = RAW ['Inhalt']

Das Problem mit Tika ist, dass es zum Absturz gebracht werden kann, wenn zu viele Seiten vorhanden sind. Verwenden wir also auch eine andere Methode. Wenn die PDF kurz und süß ist, verwenden Sie auf jeden Fall Tika. Sie können jedoch auch das PYPDF2 -Modul verwenden.

PIP Installieren Sie PYPDF2

Beginnen wir also:

PYPDF2 importieren

Zunächst öffnen wir das Interesse des Dokument. Die Open () -Methode nimmt hier zwei Argumente an: Der erste ist der Name der zu lesen. Hier steht „RB“ für Read Binary. Die PDFFFILEREADER -Klasse übernimmt dann das PDF_Document.

pdf_document = open ("Willkommen.PDF "," RB ")
pdf_document_read = pypdf2.PDFFILEREADER (pdf_document)

Dann sammeln wir die Gesamtzahl der Seiten mit der Numpages -Methode. Wir werden dies tun, da wir eine für die Schleife erstellen, die von Seite 1 zur letzten Seite wechselt und jede Seite so lesen, wie sie geht.

number_of_pages = pdf_document_read.Numpages

Wir beginnen dann eine für die Schleife, um jede Seite zu zählen.

Für Seite in Bereich (1, Number_of_pages):

Anschließend müssen wir eine Seite mit der Methode getPage () erhalten und den Text aus der Methode extractText () extrahieren.

One_Page = pdf_document_read.GetPage (Seite)
RAW_TEXT = ONE_PAGE.ExtractText () PYTTSX3 importieren

Wir initialisieren das Modul zuerst mit Init ().

Motor = pyttsx3.drin()

Wir können die Stimmen, das Volumen und die Rate mit Engine einstellen.GetProperty (). Der SetProperty () nimmt zwei Werte: die Eigenschaft zum Ändern und ihren Wert. In diesem Fall habe ich die Stimmen an eine Frau gestellt (Stimmen [1].id) mit maximalem Volumen (1) und einer Geschwindigkeit von 128.

Stimmen = Motor.GetProperty ('Voices')
Motor.setProperty ('Voice', Voices [1].Ausweis)
Volumen = Motor.GetProperty ('Volumen')
Motor.setProperty ('Volumen', 1.0)
Rate = Motor.GetProperty ('Rate')
Motor.setProperty ('rate', 128)

Wir verwenden dann Motor.sagen (), um Sprache zu synthetisieren und den Text laut vorlesen zu lassen.

Motor.Say (RAW_TEXT)
Motor.runandwait ()

Der komplette Code würde ungefähr so ​​aussehen:

PYPDF2 importieren
pdf_document = open ("Willkommen.PDF "," RB ")
pdf_document_read = pypdf2.PDFFILEREADER (pdf_document)
number_of_pages = pdf_document_read.Numpages
Für Seite in Bereich (1, Number_of_pages):
One_Page = pdf_document_read.GetPage (Seite)
RAW_TEXT = ONE_PAGE.extractText ()
PYTTSX3 importieren
Motor = pyttsx3.drin()
Stimmen = Motor.GetProperty ('Voices')
Motor.setProperty ('Voice', Voices [1].Ausweis)
Volumen = Motor.GetProperty ('Volumen')
Motor.setProperty ('Volumen', 1.0)
Rate = Motor.GetProperty ('Rate')
Motor.setProperty ('rate', 128)
Motor.Say (RAW_TEXT)
Motor.runandwait ()

Im früheren Beispiel hatten wir einen englischen Text auf Englisch gesprochen. Jetzt werden wir versuchen, den Text in eine andere Sprache zu übersetzen und den übersetzten Text laut vorlesen zu lassen. In Fällen bei der Übersetzung eines Textes ähnelt der erste Teil des Codes dem vorherigen Abschnitt. Der Code bis hin zu dem PYPDF2 -Code ist erforderlich. Sobald die für die Schleife beginnt, werden wir den Code ein wenig ändern. Hier müssen wir die Übersetzung hinzufügen und sie dazu bringen, sie im Akzent der Zielsprache zu sprechen.

Installieren Sie zuerst Googletrans.

PIP Installieren Sie Googletrans

Lassen Sie uns nun den Text übersetzen.

von Googletrans Import -Übersetzer

Als nächstes rufen wir Übersetzer () an.

Übersetzer = Übersetzer ()

Wir verwenden die Translate () -Methode. Hier geben wir das erste Argument ein - den Text in die Übersetzung - und die Zielsprache - die Sprache, in die der Text konvertiert werden muss. In diesem Fall habe ich mich entschieden, den Text in Französisch (oder 'FR') zu übersetzen.

übersetzt = Übersetzer.übersetzen (RAW_TEXT, DENT = 'FR')

Sobald wir den Text übersetzt haben, müssen wir den Textanteil extrahieren.

Translated_2 = übersetzt.Text

Letzteres übersetzt und speichert den übersetzten Text in die Variable Translated_2. Jetzt brauchen wir ein Modul, das den gesprochenen Text übersetzt und speichert in einen MP3. Dafür brauchen wir GTTs und PlaySound:

PIP Installieren Sie GTTs
PIP Installation PlaySound
GTTS importieren
aus PlaySound Import PlaySound

Die GTTs.Die GTTS () -Klasse hat einige Argumente. Hier werden wir jedoch nur zwei Argumente verwenden. Das erste Argument ist der zu gelesene Text, und das zweite ist die Sprache, um den Text in zu lesen. In diesem Fall habe ich mich entschieden, den Text in Französisch (FR) zu lesen. Der Grund, warum wir hier GTTS anstelle von Pyttsx3 verwenden. Wenn also ein Text auf Französisch mit GTTS gelesen wird, klingt er so, als würde ein Französisch den Text anstelle eines englischen Muttersprachlers lesen.

text = gtts.GTTS (Translated_2, Lang = "FR")

Als nächstes speichern wir den gesprochenen Text in einem MP3. In diesem Fall habe ich beschlossen, den Text zu benennen.MP3:

Text.Speichern ("Text.mp3 ")

Um die gespeicherte MP3 zu spielen, verwenden wir PlaySound ():

PlaySound ("Text.mp3 ")

Der komplette Code würde ungefähr so ​​aussehen:

PYPDF2 importieren
pdf_document = open ("Willkommen.PDF "," RB ")
pdf_document_read = pypdf2.PDFFILEREADER (pdf_document)
number_of_pages = pdf_document_read.Numpages
Für Seite in Bereich (1, Number_of_pages):
One_Page = pdf_document_read.GetPage (Seite)
RAW_TEXT = ONE_PAGE.extractText ()
von Googletrans Import -Übersetzer
Übersetzer = Übersetzer ()
übersetzt = Übersetzer.übersetzen (RAW_TEXT, DENT = 'FR')
Translated_2 = übersetzt.Text
GTTS importieren
aus PlaySound Import PlaySound
TTS = GTTS.GTTS (Translated_2, Lang = "FR")
TTS.Speichern ("Text.mp3 ")
PlaySound ("Text.mp3 ")