taiage/pdf_a_audio.py

50 lines
1.6 KiB
Python

import sys
import os
import PyPDF2
from gtts import gTTS
def convertir_a_audio(pdf_input):
# Creamos el nombre del mp3 a partir del nombre del pdf
base_name = os.path.splitext(pdf_input)[0]
audio_output = f"{base_name}.mp3"
print(f"--- Procesando: {pdf_input} ---")
try:
texto_completo = ""
with open(pdf_input, 'rb') as f:
lector = PyPDF2.PdfReader(f)
# Recorremos cada página para sacar el texto
for pagina in lector.pages:
txt = pagina.extract_text()
if txt:
# Limpiamos saltos de línea para que gTTS no se líe
texto_completo += txt.replace('\n', ' ') + " "
# Comprobamos que haya algo que leer
longitud = len(texto_completo.strip())
if longitud < 10:
print("Error: No se ha podido extraer texto suficiente del PDF.")
return
print(f"Texto extraído correctamente ({longitud} caracteres).")
print("Conectando con Google para generar el audio (paciencia)...")
# Generamos el audio
tts = gTTS(text=texto_completo, lang='es')
tts.save(audio_output)
print(f"¡Éxito! Ya tienes tu audio en: {audio_output}")
except Exception as e:
print(f"Vaya, algo ha fallado: {e}")
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Uso: python3 pdf_a_audio.py <tu_archivo.pdf>")
else:
fichero = sys.argv[1]
if os.path.exists(fichero):
convertir_a_audio(fichero)
else:
print(f"Error: El archivo '{fichero}' no existe en esa ruta.")