Explorando la inteligencia artificial y OpenAI con Python

0 of 25 lessons complete (0%)

Extracción de audio de video.

Configurando solicitud a OpenAI. Prt 4

You don’t have access to this lesson

Please register or sign in to access the course content.

Ya para finalizar nuestro código procedemos a guardar nuestro archivo:

with open(f"{carpeta}/{nombre_archivo}_articulo.txt", 'w') as f:
    f.write(respuesta)
print(f"Artículo generado guardado en {carpeta}/{nombre_archivo}_articulo.txt")
print(respuesta)

Todo nuestro código quedara así:

import openai
import sys
import os
import whisper
import yt_dlp

def descargar_youtube(url):
    title = input("Ingresa el nuevo nombre de tu video a analizar: ")

    ydl_opts = {
        'format': 'best',
        'outtmpl': f'{title}.%(ext)s',
        'noplaylist': True,
        'download': False 
    }

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])  
       
    title = title + f".mp4"
    return title

print("¿Qué tipo de video desea analizar?")
print("1. Video descargado")
print("2. Video de YouTube")
opcion = int(input("Elija una opción: "))

if opcion == 1:
    archivo_video = input("Ingrese el nombre del video: ")
elif opcion == 2:
    url = input("Ingrese la URL del video de YouTube: ")
    archivo_video = descargar_youtube(url)
else:
    print("Opción no válida.")
    sys.exit()

nombre_archivo = os.path.splitext(archivo_video)[0]
carpeta = nombre_archivo
if not os.path.exists(carpeta):
    os.makedirs(carpeta)

archivo_audio = f"{carpeta}/{nombre_archivo}.wav"
os.system(f'ffmpeg -i "{archivo_video}" -vn "{archivo_audio}"')

model = whisper.load_model("base")
result = model.transcribe(archivo_audio)
archivo_texto = f"{carpeta}/{nombre_archivo}.txt"
 
with open(archivo_texto, 'w') as f:
    f.write(result["text"])
print(f"Transcripción guardada en {archivo_texto}")

opciones = {
    1: "Crea un resumen de este texto",
    2: "Crea un artículo original basado en este texto",
    3: "Crea un post para redes sociales basado en este texto",
    4: "Crea un correo basado en este texto",
    5: "Introduce un comando personalizado"
}
opcion = int(input("¿Qué desea hacer con la información del video?\n1. Crear un resumen\n2. Crear un artículo original\n3. Crear un post para redes sociales\n4. Crear un correo\n5. Introducir un comando personalizado\nElija una opción: "))

openai.api_key = "TU-API"

if opcion in opciones:
    if opcion == 5:
        prompt_personalizado = input("Introduzca el comando personalizado: ")
        prompt = prompt_personalizado + f"{result['text']}"
    else:
        prompt = f"{opciones[opcion]}: '{result['text']}'"

    modelo = "gpt-3.5-turbo"
    mensaje = [
        {"role":"system","content":"Eres un experto en redacción, resúmenes y creación de títulos."},
        {"role":"user","content":prompt}
    ]

    response = openai.ChatCompletion.create(
        model = modelo,
        messages = mensaje,
        temperature= 0.8,
        max_tokens=1024
    )

    respuesta = response["choices"][0]["message"]["content"]
else:
    print("Opción inválida. Inténtelo de nuevo.")

with open(f"{carpeta}/{nombre_archivo}_articulo.txt", 'w') as f:
    f.write(respuesta)
print(f"Artículo generado guardado en {carpeta}/{nombre_archivo}_articulo.txt")
print(respuesta)

Nota del maestro: Recuerda que este curso es gratuito y no cuenta con soporte. Si tienes problemas o dudas, puedes escribirme en Twitter haciendo clic aquí y esperar a que tenga un tiempo libre para poder contestarte. También puedes considerar tomar el curso profesional en nuestra plataforma de Azul School, que incluye soporte prioritario para todos nuestros cursos y muchos más beneficios. Haz clic aquí para comprar tu membresía anual u obtener más información al respecto.