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 рублей

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

  • 9 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован.

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

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

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