50 lines
1.6 KiB
Python
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.")
|