Robimy audiobooka

Robimy audiobooka

Lubię czytać książki. Ze względu na brak czasu wolę jednak ich słuchać. Niestety, nie wszyskie pozycje są dostępne jako audiobooki. Na szczęście większość możemy kupić w formacie epub. Jeżeli mamy epuba, to możemy poprosić Amazon Polly, żeby zrobiła nam audiobooka. Polly Amazonówna nie jest niestety w stanie zastąpić w pełni Macieja Stuhra lub Wiktora Zborowskiego, ale efekt końcowy naprawdę nadaje się do słuchania.

Polly to usługa AWS, która zamienia tekst na pliki dźwiekowe. Dziś pokażę jak za pomocą Pythona i właśnie Polly zamienić plik epub na mp3.

Cały proces to 4 kroki:

  • wyekstrahowanie 😉 tekstu książki z pliku epub
  • podzielenie tekstu na części o długości max. 1500 znaków (ograniczenie Polly)
  • zamiana tekstu na dzwięk (pliki mp3)
  • połączenie plików w jedną całość

Wyrzucamy ozdobniki

Amazon Polly nie możemy niestety nakarmić plikiem epub. Potrzebujemy czystego tekstu, który musimy wyssać z naszego ebooka. Na szczęscie nie musimy sami parsować pliku. Wykorzystamy bibliotekę epub-conversion.

Jako bookname podajemy ścieżkę do pliku z naszym ebookiem i w pierwszej linii otwieramy naszą książkę. Pozostały kod wydobywa z pliku w formacie epub tekst publikacji, który otrzymamy w zmiennej str.

Dzielimy

Do Polly nie możemy przesłać tekstu dłuższego niż 1500 znaków. Musimy więc nasz tekst podzielić, nie checemy jednak urywać w środku słowa. Jak wiemy Python potrafi wszystko. A jeżeli nie potrafi, to ktoś sprawił, że już potrafi. Do naszego zadania użyjemu modułu textwrap, który importujemy

a do podzielenia tekstu wystarczy jedna linia kodu

i dostajemy listę tekstów, które możemy już przesłać Polly do zamiany na pliki dźwiękowe.

Karmimy Polly

Jeżeli AWS i Python to jako SDK użyjemy Boto. Potrzebjemy klienta usługi Polly

i możemy zaczynać. Do zamiany ciągu znaków na plik dzwiękowy służy metoda SynthesizeSpeech. Metoda ta ma kilka parametrów. Nie skorzystamy ze wszystkich, wybierzemy jednak rodzaj głosu, przekażemy tekst do syntezy oraz okreslimy format wyjściowy.

Możemy poprosić o innego lektora. Dla języka polskiego mamy Ewę, Jacka, Jana i Maję.

Jak tekst podstawiamy w pętli kolejno wszystkie wyrażenia tekstowe z naszej listy:

Łączymy pliki w całość

Przy konwersji książki dostaniemy kilkaset plików dzwiękowych. Możemy co prawda odtwarzać je po kolei, ale wygodniej będzie połączyć je w całość. Pomoże nam w tym moduł pydub.

Co tu się dzieje? Sprawdzamy czy w odpowiedzi Polly mamy dane i zapisujemy je do pliku tymczasowego (linie 1 do 6). W liniach 7-8 dołączamy ten tymczasowy plik do plików przetworzonych wcześniej. Tak, dzięki modułowi pydub jest to takie proste. nastepnie robimy porządek i usuwamy niepotrzebną już część.

I to właściwie tyle. Jeszcze tylko eksport całości do pliku mp3

i mamy gotowego audiobooka.

Jedna uwaga. Out of the box pydub obsługuje tylko format wav. Jeżeli chcemy wyeksportować naszą pracę do formatu mp3 potrzebujemy ffmpeg lub avconv.

Cieszymy się

Mamy za darmo (no prawie) audiobooka. Na pewno jakość nie będzie idealna, ale darowanemu koniowi…

Kod dostępny jest na GitHubie.

I jeszcze prywata na koniec. Jeżeli ktoś jest użytkownikiem iPhone i lubi słuchać audiobooków to polecam Audio Readera 🙂


One thought on “Robimy audiobooka

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

%d bloggers like this: