Добавить в корзинуПозвонить
Найти в Дзене
Simple Prog

Создание аудиокниг с помощью Python

Как вы, возможно, уже знаете, Python – замечательный язык программирования, потому что он позволяет нам делать практически все! Это также означает, что мы можем создавать собственное программное обеспечение. В этом уроке мы узнаем, как синтезировать речь, научим Python читать PDF-файлы и даже переведем и озвучим их! Посмотрите другие статьи "Python простым языком": Итак, Python должен прочитать нам PDF-файл и перевести его. Сначала мы попытаемся создать аудиокнигу на английском языке. Таким образом, первое, что мы должны сделать, – это извлечь текст из PDF. Для этого нам понадобится модуль tika. Как обычно, чтобы установить tika, нужно поколдовать с pip. pip install tika Tika — это модуль, используемый для обнаружения и извлечения контента. После установки нужно импортировать объект parser. from tika import parser Далее нам понадобится метод from_file(), принимающий два аргумента. Первый аргумент принимает имя PDF-файла, второй (дополнительный) – тип искомых данных. Если не указать вто

Как вы, возможно, уже знаете, Python – замечательный язык программирования, потому что он позволяет нам делать практически все! Это также означает, что мы можем создавать собственное программное обеспечение. В этом уроке мы узнаем, как синтезировать речь, научим Python читать PDF-файлы и даже переведем и озвучим их!

Посмотрите другие статьи "Python простым языком":

Итак, Python должен прочитать нам PDF-файл и перевести его. Сначала мы попытаемся создать аудиокнигу на английском языке. Таким образом, первое, что мы должны сделать, – это извлечь текст из PDF. Для этого нам понадобится модуль tika. Как обычно, чтобы установить tika, нужно поколдовать с pip.

pip install tika

Tika — это модуль, используемый для обнаружения и извлечения контента. После установки нужно импортировать объект parser.

from tika import parser

Далее нам понадобится метод from_file(), принимающий два аргумента. Первый аргумент принимает имя PDF-файла, второй (дополнительный) – тип искомых данных. Если не указать второй аргумент, будет произведён поиск всех типов данных: от метаданных до самого контента. Здесь meta вернёт метаданные, text – текст, а параметр xmlContent – XML данные.

raw = parser.from_file('comment.pdf')

Теперь, получив все данные, мы должны извлечь текст. Это можно сделать, выбрав content в нашем raw:

raw_text = raw['content']

Проблема модуля Tika заключается в том, что при слишком большом количестве страниц всё может сломаться. Поэтому мы воспользуемся другим методом. Если PDF-файл довольно короткий, определённо стоит воспользоваться Tika. Однако, вы также можете использовать модуль PyPDF2.

pip install PyPDF2

Итак, приступим:

import PyPDF2

Первым делом откроем наш документ и прочитаем его, используя метод open() и класс PdfFileReader(). Метод open() принимает два аргумента: имя файла и режим чтения. Здесь rb означает “чтение бинарного файла” (“read binary”). Затем класс PdfFileReader принимает pdf_document.

Далее мы определяем количество страниц методом numPages. Нам это понадобится для цикла for, который будет итерироваться от страницы 1 до последней.

number_of_pages = pdf_document_read.numPages

Затем мы начинаем цикл for для счета страниц.

for page in range(1, number_of_pages):

Теперь нам нужно получить одну страницу с помощью getPage() и извлечь из неё текст методом extractText().

import pyttsx3

Вызовем init(), чтобы инициализировать модуль.

engine = pyttsx3.init()

Мы можем настроить голос, громкость и скорость при помощи engine.getProperty(). Метод setProperty() принимает два аргумента: свойство, которое необходимо изменить, и его новое значение. В нашем случае установлен женский голос (voices[1].id) с максимальной громкостью (1) и темпом 128.

Чтобы синтезировать речь и прочитать текст вслух, воспользуемся методом engine.say().

Весь код будет выглядеть как-то так:

В данном примере у нас был английский текст, озвученный на английском. Теперь же мы попробуем перевести текст на другой язык и прослушать перевод. В этом случае первая часть кода остаётся неизменной – это всё, что касается работы с pdf. Но в начале цикла for мы кое-что изменим: добавим перевод и произведём чтение на нужном нам языке.

Первым делом установим googletrans.

pip install googletrans

Теперь мы можем приступить к переводу текста.

from googletrans import Translator

Далее вызываем Translator().

translator = Translator()

Мы воспользуемся методом translate(). В его синтаксисе первый аргумент принимает текст на перевод, а второй – язык, на который мы хотим перевести. В данном случае текст переводится на французский ('fr').

translated = translator.translate(raw_text, dest='fr')

Переведя текст, мы должны извлечь из него текстовую часть.

translated_2 = translated.text

Таким образом мы переведем и сохраним результат в переменной translated_2. Теперь нам нужен модуль, который будет переводить и сохранять озвученный текст в mp3. Тут нам пригодятся gTTS и PlaySound:

У класса gtts.gTTS() есть несколько аргументов. Однако мы будем использовать только два: первый аргумент – это текст, который нужно прочитать, а второй – язык, на котором будет прочитан текст. Мы будем читать текст на французском языке (fr).

Причина, по которой мы используем здесь gTTS вместо pyttsx3, заключается в более естественном звучании: когда текст читается на французском языке с помощью gTTS, это будет звучать так, как будто текст читает француз, а не носитель английского языка.

text = gtts.gTTS(translated_2, lang="fr")

Далее мы сохраним озвученный текст в формате mp3. Назовем его text.mp3:

text.save("text.mp3")

Чтобы проиграть сохранённый mp3, используем playsound():

playsound("text.mp3")

Получится примерно следующий код: