Поиск по сайту:
Спрашивать [с работника] надо тогда, когда не поздно дать по рукам (Неизв.).

Как создавать аудиокниги с помощью Python

23.07.2021
Как создавать аудиокниги с помощью Python

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

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

 

pip install tika

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

 

from tika import parser

Далее нам понадобится метод from_file(), который принимает максимум два аргумента. Первый аргумент – это имя файла pdf, а второй аргумент называется дополнительным, который запрашивает требуемый тип данных. Если оставить дополнительное поле пустым, будет запрашиваться все, от метаданных до контента. Здесь meta возвращает метаданные, text возвращает текст, а param xmlContent возвращает содержимое XML.

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

 

Когда у нас есть данные, нам нужно извлечь только текст. Мы делаем это, выбирая «контент» из необработанного.

raw_text = raw['content']

 

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

pip install PyPDF2

 

Читать  Как найти длину списка в Python

Итак, начнем:

import PyPDF2

 

Сначала мы открываем интересующий документ и читаем из него с помощью метода open() и класса PdfFileReader(). Метод open() принимает здесь два аргумента: первый – это имя файла для чтения, а второй – режим чтения. Здесь «rb» означает чтение двоичного файла. Затем класс 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.

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(), чтобы синтезировать речь и прочитать текст вслух.

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()

 

Читать  Создайте приложение PyQt на примере

В предыдущем примере английский текст произносился на английском языке. Теперь мы попробуем перевести текст на другой язык и прочитать переведенный текст вслух. В случаях при переводе текста первая часть кода аналогична предыдущему разделу. Требуется код вплоть до кода PyPDF2 включительно. Однако после запуска цикла 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")

 

Читать  Решатель судоку с графическим интерфейсом на Python

Далее сохраняем озвученный текст в 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")

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Microsoft Windows 11 еще нет, но мы, вероятно, увидим ее…

Спасибо!

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