Convierta cualquier archivo .pdf en un audio libro con Python

Como todos saben la biblioteca Python Text to Speech de Google básicamente lee cualquier fragmento de texto y lo convierte a un archivo .mp3. Entonces fue cuando surgió la idea de este.
Muchos tendrán almacenados muchos libros pdf y por supuesto no leídos.

Te gusta leer libros. ¿Realmente lo haces? Yo tengo un directorio en el que guardo los libros en pdf que planeo leer, pero muy pocas veces lo hago. Así que al encontrar este proyecto, creo que el postergar esas lecturas se terminó.

  • Permitir que el usuario elija un archivo .pdf
  • Convierte el archivo en una cadena
  • Archivo de salida .mp3.

Permitir que el usuario elija un archivo .pdf

Python puede leer archivos fácilmente. Solo necesito usar el método open («filelocation», «rb») para abrir el archivo en modo lectura. Sin embargo, no se quiere copiar y pegar archivos en el directorio del código cada vez que quiero usar el código. Entonces, para hacerlo más fácil, se usa la biblioteca tkinter para abrir una interfaz que nos permita elegir el archivo.

from tkinter import Tk
from tkinter.filedialog import askopenfilename

Tk().withdraw() # no queremos una GUI completa, así que evita que aparezca la ventana raíz
filelocation = askopenfilename() # abre el cuadro de diálogo GUI

Excelente. Ahora tenemos la ubicación del archivo almacenada en una variable de ubicación de archivo.

Permitir al usuario elegir un archivo .pdf

Convierte el archivo en una cadena

Como se mencionó anteriormente, para abrir un archivo en Python solo necesitamos usar el método open (). Pero también queremos convertir el archivo pdf en fragmentos de texto regulares. Así que bien podríamos hacerlo ahora. Para hacer eso usaremos una biblioteca llamada pdftotext.

Vamos a instalarlo:

sudo pip instalar pdftotext

Luego:

from tkinter import Tk
from tkinter.filedialog import askopenfilename
import pdftotext

Tk().withdraw() # no queremos una GUI completa, así que evita que aparezca la ventana raíz
filelocation = askopenfilename() # abre el cuadro de diálogo GUI

with open(filelocation, "rb") as f:  # abre el archivo en modo lectura (rb) y llámalo f
    pdf = pdftotext.PDF(f)  # almacenar una versión de texto del archivo pdf f en la variable pdf

Si imprime esta variable, obtendrá una matriz de cadenas. Cada cadena es una línea en el archivo. Para ponerlos todos en un archivo .mp3, tendremos que asegurarnos de que estén todos almacenados como una sola cadena. Así que recorreremos esta matriz y agreguemos todos a una cadena.

from tkinter import Tk
from tkinter.filedialog import askopenfilename
import pdftotext

Tk().withdraw() # no queremos una GUI completa, así que evita que aparezca la ventana raíz
filelocation = askopenfilename() # abre el cuadro de diálogo GUI

with open(filelocation, "rb") as f:  # abre el archivo en modo lectura (rb) y llámalo f
    pdf = pdftotext.PDF(f)  # almacenar una versión de texto del archivo pdf f en la variable pdf

string_of_text = ''
for text in pdf:
    string_of_text += text

Ahora lo tenemos todo como un todo.

Convierta el archivo en una sola cadena

Archivo de salida .mp3

Ahora estamos listos para usar la biblioteca gTTS (texto a voz de Google). Todo lo que tenemos que hacer es pasar la cadena que hicimos, almacenar la salida en una variable, luego usar el método save () para enviar el archivo a la computadora.

Vamos a instalarlo:

sudo pip install gtts

Luego:

from tkinter import Tk
from tkinter.filedialog import askopenfilename
import pdftotext
from gtts import gTTS

Tk().withdraw() # no queremos una GUI completa, así que evita que aparezca la ventana raíz
filelocation = askopenfilename() # abre el cuadro de diálogo GUI

with open(filelocation, "rb") as f:  # abre el archivo en modo lectura (rb) y llámalo f
    pdf = pdftotext.PDF(f)  # almacenar una versión de texto del archivo pdf f en la variable pdf
string_of_text = ''
for text in pdf:
    string_of_text += text

final_file = gTTS(text=string_of_text, lang='en')  # almacenar archivo en variable
final_file.save("Generated Speech.mp3")  # guardar archivo en la computadora

¡Tan sencillo como eso! hemos terminado

Si desea saber más sobre cómo personalizar esta API, consulte esta página


¿Quieres aprender a programar de manera profesional?

 

Te invitamos a formar parte de Azul School donde vas a tener acceso a cursos profesionales con certificado. Además tienes acceso a una red social de programadores donde puedes conocer gente de tu ciudad o país.

 

Si quieres acceder a todas las funciones te regalamos un descuento del 75% usando este cupón (no vas a encontrar este descuento en ningún otro lugar) Cupón: azulweb y lo puedes cambiar aquí: Haz clic aquí para cambiar el cupón del 75%.

 

También puedes probar la plataforma de forma gratuita y obtener un curso gratuito aquí: Haz clic aquí para probar la plataforma de forma gratuita.


Ernesto Mota

Ernesto Mota

Nací en el d.f., sigo siendo defeño, hoy radico en la hermosa ciudad de Cuernavaca, Morelos, soy Ing. en Sistemas computacionales, con un posgrado en Tecnologías de información, Doctorando en ambientes virtuales de aprendizaje y realidad aumentada, Tecnólogo es mi categoría laboral, y mi linea de investigación es la realidad aumentada aplicada a nuevos entornos de aprendizaje.

También te podría gustar...