Share This
Связаться со мной
Крути в низ
Categories
//Создание аудиокниг с помощью Python

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

25.07.2021Category : Python

Перевод статьи How to Create Audiobooks Using Python.

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

Итак, 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.

pdf_document = open("welcome.pdf", "rb") pdf_document_read = PyPDF2.PdfFileReader(pdf_document)

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

number_of_pages = pdf_document_read.numPages

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

for page in range(1, number_of_pages):

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

one_page = pdf_document_read.getPage(page) raw_text = one_page.extractText()
import pyttsx3

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

engine = pyttsx3.init()

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

oices = engine.getProperty('voices') engine.setProperty('voice', voices[1].id)  volume = engine.getProperty('volume') engine.setProperty('volume', 1.0)  rate = engine.getProperty('rate') engine.setProperty('rate', 128)

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

engine.say(raw_text) engine.runAndWait()

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

import PyPDF2  pdf_document = open("welcome.pdf", "rb") pdf_document_read = PyPDF2.PdfFileReader(pdf_document) number_of_pages = pdf_document_read.numPages  for page in range(1, number_of_pages):     one_page = pdf_document_read.getPage(page)     raw_text = one_page.extractText()     import pyttsx3     engine = pyttsx3.init()     voices = engine.getProperty('voices')     engine.setProperty('voice', voices[1].id)     volume = engine.getProperty('volume')     engine.setProperty('volume', 1.0)     rate = engine.getProperty('rate')     engine.setProperty('rate', 128)     engine.say(raw_text)      engine.runAndWait()

В данном примере у нас был английский текст, озвученный на английском. Теперь же мы попробуем перевести текст на другой язык и прослушать перевод. В этом случае первая часть кода остаётся неизменной – это всё, что касается работы с 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:

pip install gTTS pip install playsound  import gtts from playsound import 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")

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

import PyPDF2  pdf_document = open("welcome.pdf", "rb") pdf_document_read = PyPDF2.PdfFileReader(pdf_document) number_of_pages = pdf_document_read.numPages  for page in range(1, number_of_pages):     one_page = pdf_document_read.getPage(page)     raw_text = one_page.extractText()      from googletrans import Translator         translator = Translator()     translated = translator.translate(raw_text, dest='fr')     translated_2 = translated.text      import gtts     from playsound import playsound      tts = gtts.gTTS(translated_2, lang="fr")     tts.save("text.mp3")     playsound("text.mp3")

sozdanie audioknig s pomoshhju python 3063887 - Создание аудиокниг с помощью Python

Кодинг-марафон по Python

Реши 10 задач и выиграй 5500 рублей

Подписаться ×

  • 15 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close