Cómo crear audiolibros usando Python

Cómo crear audiolibros usando Python
Como ya sabrán, Python es una herramienta de programación maravillosa porque nos permite hacer prácticamente cualquier cosa! Esto también significa que podemos crear nuestro propio software. En este tutorial, aprenderemos a sintetizar el discurso, conseguiremos que Python lea los PDF, incluso los traduzca y luego los leeremos a nosotros.

Lo que vamos a hacer aquí es hacer que Python lea un PDF y traducirlo para nosotros. Primero, intentaremos crear un audiolibro inglés. Como tal, lo primero que debemos hacer lógicamente es extraer el texto del PDF. Para esto, usamos el módulo conocido como tika. Como de costumbre, para instalar tika, uno evoca pip.

PIP Instale tika

Tika es un módulo utilizado para la detección y extracción de contenido. Una vez instalado, necesitamos importar el objeto analizador.

de tika importador de importación

A continuación, necesitamos el método from_file (), que toma dos argumentos al máximo. El primer argumento es el nombre del archivo PDF, y el segundo argumento se llama adicional, que solicita el tipo de datos buscados. Dejar el campo adicional en blanco solicitará todo, desde metadatos hasta contenido. Aquí, Meta devuelve los metadatos, el texto devuelve el texto y Param XMLContent Devuelve el contenido XML.

Raw = analizador.from_file ('comentario.PDF ')

Una vez que tenemos los datos, necesitamos extraer solo el texto. Hacemos esto seleccionando el "Contenido" de RAW.

RAW_TEXT = RAW ['Content']

El problema con Tika es que puede bloquearse cuando hay demasiadas páginas. Entonces, usemos otro método también. Si el PDF es corto y dulce, por supuesto, usa tika. Sin embargo, también puede usar el módulo pypdf2.

PIP install Pypdf2

Vamos a empezar:

importar pypdf2

Primero, abrimos el documento de interés y leemos de él utilizando el método Open () y la clase PDFFILEREADER (). El método Open () toma dos argumentos aquí: el primero es el nombre del archivo a leer, y el segundo es el modo a leer en. Aquí, "RB" significa Leer Binario. La clase PDFFILERADER se toma el PDF_Document.

PDF_Document = Open ("Bienvenido.PDF "," RB ")
PDF_Document_read = PYPDF2.PDFFILEREADER (PDF_Document)

Luego, recopilamos el número total de páginas utilizando el método Numpages. Haremos esto ya que crearemos un bucle for que va de la página 1 a la última página, leyendo cada página a medida que avanza.

Number_of_pages = PDF_Document_read.numpages

Luego comenzamos un bucle para contar cada página.

Para la página en el rango (1, number_of_pages):

Luego, necesitamos obtener una página utilizando el método getPage () y extraer el texto desde adentro usando el método ExtractText ().

One_page = PDF_Document_read.getPage (página)
RAW_TEXT = One_Page.ExtractText () import pyttsx3

Primero inicializamos el módulo usando init ().

motor = pyttsx3.en eso()

Podemos establecer las voces, el volumen y la velocidad utilizando el motor.GetProperty (). El setProperty () toma dos valores: la propiedad para cambiar y su valor. En este caso, he establecido las voces en una mujer (voces [1].id), con el volumen máximo (1) y una tasa de 128.

Voces = motor.GetProperty ('Voces')
motor.setProperty ('Voice', Voices [1].identificación)
volumen = motor.GetProperty ('volumen')
motor.setProperty ('volumen', 1.0)
tasa = motor.GetProperty ('tasa')
motor.setProperty ('tasa', 128)

Luego usamos el motor.decir () para sintetizar el discurso y hacer que el texto lea en voz alta.

motor.decir (raw_text)
motor.runandwait ()

El código completo se vería algo así:

importar pypdf2
PDF_Document = Open ("Bienvenido.PDF "," RB ")
PDF_Document_read = PYPDF2.PDFFILEREADER (PDF_Document)
Number_of_pages = PDF_Document_read.numpages
Para la página en el rango (1, number_of_pages):
One_page = PDF_Document_read.getPage (página)
RAW_TEXT = One_Page.ExtractText ()
import pyttsx3
motor = pyttsx3.en eso()
Voces = motor.GetProperty ('Voces')
motor.setProperty ('Voice', Voices [1].identificación)
volumen = motor.GetProperty ('volumen')
motor.setProperty ('volumen', 1.0)
tasa = motor.GetProperty ('tasa')
motor.setProperty ('tasa', 128)
motor.decir (raw_text)
motor.runandwait ()

En el ejemplo anterior, teníamos un texto en inglés hablado en inglés. Ahora, intentaremos traducir el texto a otro idioma y obtener el texto traducido lea en voz alta. En casos, al traducir un texto, la primera parte del código es similar a la sección anterior. Se requiere el código hasta el código PYPDF2. Sin embargo, una vez que comience el bucle for, cambiaremos un poco el código. Aquí, necesitamos agregar la traducción y hacerla hablar con el acento del idioma de destino.

Primero, instale Googletrans.

PIP instalar googletrans

Ahora, comencemos a traducir el texto.

De Googletrans Import Translator

A continuación, llamamos al traductor ().

traductor = tradator ()

Usamos el método traduce (). Aquí, ingresamos el primer argumento, el texto para traducir, y el idioma de destino, el idioma en el que debe convertirse el texto. En este caso, he elegido traducir el texto al francés (o de lo contrario 'fr').

traducido = traductor.traducir (raw_text, dest = 'fr')

Una vez que hemos traducido el texto, necesitamos extraer la parte del texto.

traducido_2 = traducido.texto

Este último traducirá y almacenará el texto traducido a la variable traducida_2. Ahora necesitamos un módulo que traduzca y almacene el texto hablado en un mp3. Para esto, necesitamos GTTS y PlaySound:

PIP Instale GTTS
PIP install PlaySound
importar GTTS
de la importación de playsound playSound

El GTTS.La clase GTTS () tiene algunos argumentos. Sin embargo, aquí usaremos solo dos argumentos. El primer argumento es el texto que se lee, y el segundo es el lenguaje para leer el texto en. En este caso, he elegido leer el texto en francés (fr). La razón por la que estamos usando GTT aquí en lugar de PYTTSX3 es por los grandes acentos que van con el párrafo de lectura. Entonces, cuando se lea un texto en francés, con GTTS, suena como si una persona francesa esté leyendo el texto en lugar de un hablante nativo de inglés.

texto = GTTS.GTTS (traducido_2, lang = "fr")

A continuación, guardamos el texto hablado en un mp3. En este caso, he elegido nombrarlo texto.MP3:

texto.guardar ("texto.mp3 ")

Para reproducir el mp3 guardado, usamos playsound ():

Playsound ("Texto.mp3 ")

El código completo se vería algo así:

importar pypdf2
PDF_Document = Open ("Bienvenido.PDF "," RB ")
PDF_Document_read = PYPDF2.PDFFILEREADER (PDF_Document)
Number_of_pages = PDF_Document_read.numpages
Para la página en el rango (1, number_of_pages):
One_page = PDF_Document_read.getPage (página)
RAW_TEXT = One_Page.ExtractText ()
De Googletrans Import Translator
traductor = tradator ()
traducido = traductor.traducir (raw_text, dest = 'fr')
traducido_2 = traducido.texto
importar GTTS
de la importación de playsound playSound
TTS = GTTS.GTTS (traducido_2, lang = "fr")
TTS.guardar ("texto.mp3 ")
Playsound ("Texto.mp3 ")