Jak tworzyć audiobooki za pomocą Pythona

Jak tworzyć audiobooki za pomocą Pythona
Jak zapewne wiesz, Python jest wspaniałym narzędziem programowania, ponieważ pozwala nam robić praktycznie wszystko! Oznacza to również, że możemy stworzyć własne oprogramowanie. W tym samouczku nauczymy się syntetyzować mowy, zachęcić Pythona do czytania PDF, a nawet tłumaczenia ich, a następnie przeczytał je nam.

To, co tu zrobimy. Najpierw spróbujemy stworzyć angielski audiobook. Jako taka, pierwszą rzeczą, którą musimy logicznie zrobić, jest wyodrębnienie tekstu z PDF. Do tego używamy modułu znanego jako Tika. Jak zwykle, aby zainstalować tika, jeden wyczarowuje pip.

PIP Instaluj tika

Tika to moduł używany do wykrywania i ekstrakcji zawartości. Po zainstalowaniu musimy zaimportować obiekt parsera.

Od Tika Import Parser

Następnie potrzebujemy metody from_file (), która maksymalnie przyjmuje dwa argumenty. Pierwszym argumentem jest nazwa pliku PDF, a drugi argument nazywa się dodatkowym, co żąda rodzaju poszukiwanych danych. Opuszczenie dodatkowego pola pustego zażąda wszystkiego, od metadanych po treść. Tutaj meta zwraca metadane, tekst zwraca tekst, a param xmlcontent Zwraca zawartość XML.

Raw = parser.from_file („komentarz.pdf ')

Po uzyskaniu danych musimy wyodrębnić tylko tekst. Robimy to, wybierając „treść” z RAW.

RAW_TEXT = RAW ['Content']

Problem z Tiką polega na tym, że może się zawieść, gdy jest zbyt wiele stron. Użyjmy więc innej metody. Jeśli plik PDF jest krótki i słodki, na pewno użyj tiki. Możesz jednak również użyć modułu PYPDF2.

PIP Instaluj PYPDF2

Więc zacznijmy:

Importuj PYPDF2

Najpierw otwieramy dokument zainteresowania i czytamy z niego za pomocą metody Open () i klasy pdffilereader (). Metoda Open () bierze tutaj dwa argumenty: Pierwsza to nazwa pliku do odczytania, a drugi to tryb do odczytania. Tutaj „RB” oznacza czytaj binarny. Klasa PDffileReader przyjmuje następnie pdf_document.

pdf_document = Open („Witamy.pdf ”,„ rb ”)
pdf_document_read = PYPDF2.Pdffilereader (pdf_document)

Następnie zbieramy całkowitą liczbę stron przy użyciu metody Numpages. Zrobimy to, ponieważ utworzymy pętlę dla strony, która przechodzi od strony 1 do ostatniej strony, czytając każdą stronę.

numer_of_pages = pdf_document_read.Numpages

Następnie rozpoczynamy pętlę, aby odliczać każdą stronę.

dla strony w zakresie (1, numer_of_pages):

Następnie musimy zdobyć jedną stronę za pomocą metody getPage () i wyodrębniania tekstu od wewnątrz za pomocą metody extractText ().

One_page = pdf_document_read.GetPage (strona)
raw_text = one_page.ExtractText () Import Pyttsx3

Najpierw zainicjujemy moduł za pomocą init ().

Silnik = Pyttsx3.w tym()

Możemy ustawić głosy, objętość i ocenę za pomocą silnika.getProperty (). SetProperty () przyjmuje dwie wartości: właściwość do zmiany i jej wartość. W tym przypadku ustawiłem głosy na kobietę (głosy [1].id), z maksymalną objętością (1) i prędkością 128.

głosy = silnik.getProperty („głosy”)
silnik.setProperty („głos”, głosy [1].ID)
Objętość = silnik.getProperty („Volume”)
silnik.setProperty („Volume”, 1.0)
stawka = silnik.getProperty („stawka”)
silnik.setProperty („stawka”, 128)

Następnie używamy silnika.powiedz (), aby zsyntetyzować mowę i przeczytać tekst.

silnik.Powiedz (raw_text)
silnik.runandwait ()

Pełny kod wyglądałby mniej więcej tak:

Importuj PYPDF2
pdf_document = Open („Witamy.pdf ”,„ rb ”)
pdf_document_read = PYPDF2.Pdffilereader (pdf_document)
numer_of_pages = pdf_document_read.Numpages
dla strony w zakresie (1, numer_of_pages):
One_page = pdf_document_read.GetPage (strona)
raw_text = one_page.ExtractText ()
Import Pyttsx3
Silnik = Pyttsx3.w tym()
głosy = silnik.getProperty („głosy”)
silnik.setProperty („głos”, głosy [1].ID)
Objętość = silnik.getProperty („Volume”)
silnik.setProperty („Volume”, 1.0)
stawka = silnik.getProperty („stawka”)
silnik.setProperty („stawka”, 128)
silnik.Powiedz (raw_text)
silnik.runandwait ()

We wcześniejszym przykładzie mieliśmy angielski tekst po angielsku. Teraz spróbujemy przetłumaczyć tekst na inny język i przeczytać przetłumaczony tekst. W przypadkach tłumaczenia tekstu pierwsza część kodu jest podobna do poprzedniej sekcji. Kod do końca kodu PYPDF2 jest wymagany. Jednak po uruchomieniu pętli For zmienimy kod nieco. Tutaj musimy dodać tłumaczenie i sprawić, by wypowiedział to w akcentie języka docelowego.

Najpierw zainstaluj Googletrans.

instaluj Googletrans

Teraz zacznijmy tłumaczyć tekst.

od tłumacza importu Googletrans

Następnie nazywamy tłumacz ().

tłumacz = tłumacz ()

Używamy metody Translate (). Tutaj wprowadzamy pierwszy argument - tekst do tłumaczenia - i język docelowy - język, na który należy przekonwertować tekst. W tym przypadku postanowiłem przetłumaczyć tekst na francuski (lub „fr”).

tłumaczone = tłumacz.Tłumacz (raw_text, dest = 'fr')

Po przetłumaczeniu tekstu musimy wyodrębnić część tekstu.

tłumaczone_2 = przetłumaczone.tekst

Ten ostatni przetłumaczy i przechowuje przetłumaczony tekst na zmienną przetłumaczoną_2. Teraz potrzebujemy modułu, który przetłumaczy i przechowuje tekst mówiony na mp3. W tym celu potrzebujemy GTT i zabawy:

PIP Instaluj GTTS
instalacja PIP Playsound
Importuj GTTS
Od zabawy importu

GTTS.Klasa gtts () ma kilka argumentów. Jednak tutaj użyjemy tylko dwóch argumentów. Pierwszym argumentem jest tekst, który można odczytać, a drugi to język, w którym można przeczytać tekst. W tym przypadku postanowiłem przeczytać tekst w języku francuskim (FR). Powodem, dla którego używamy tutaj GTT zamiast PYTTSX3, jest wielkie akcenty, które idą z akapitem odczytu. Tak więc, gdy tekst jest czytany po francusku, z GTTS, będzie brzmieć tak, jakby francuski czyta tekst zamiast rodzimego mówcy angielskiego.

tekst = gtts.GTTS (tłumaczone_2, lang = „fr”)

Następnie zapisujemy tekst mówiony w mp3. W takim przypadku wybrałem, żeby nazwać to tekst.MP3:

tekst.Zapisz ("tekst.mp3 ")

Aby odtwarzać zapisane mp3, używamy Playsound ():

Zabra się („tekst.mp3 ")

Pełny kod wyglądałby mniej więcej tak:

Importuj PYPDF2
pdf_document = Open („Witamy.pdf ”,„ rb ”)
pdf_document_read = PYPDF2.Pdffilereader (pdf_document)
numer_of_pages = pdf_document_read.Numpages
dla strony w zakresie (1, numer_of_pages):
One_page = pdf_document_read.GetPage (strona)
raw_text = one_page.ExtractText ()
od tłumacza importu Googletrans
tłumacz = tłumacz ()
tłumaczone = tłumacz.Tłumacz (raw_text, dest = 'fr')
tłumaczone_2 = przetłumaczone.tekst
Importuj GTTS
Od zabawy importu
TTS = GTTS.GTTS (tłumaczone_2, lang = „fr”)
TTS.Zapisz ("tekst.mp3 ")
Zabra się („tekst.mp3 ")