Inicio / Inteligencia Artificial / Inteligencia Artificial y LLMs / IA Multimodal

IA Multimodal

Visión, audio, video, DALL-E, Whisper, Stable Diffusion y modelos unificados.

Avanzado
🔒 Solo lectura
📖

Estás en modo lectura

Puedes leer toda la lección, pero para marcar progreso, hacer ejercicios y ganar XP necesitas una cuenta Pro.

Desbloquear por $9/mes

IA Multimodal

Los modelos multimodales procesan y generan múltiples tipos de datos: texto, imágenes, audio y video. Representan la convergencia de la IA hacia sistemas que perciben el mundo como los humanos.

¿Qué es la IA multimodal?

┌────────────────────────────────────────────────┐
│              MODELO MULTIMODAL                  │
│                                                 │
│  ENTRADAS:              SALIDAS:                │
│  📝 Texto        ──┐   ┌──▶  📝 Texto          │
│  🖼️ Imágenes     ──┤   │                       │
│  🔊 Audio        ──┼──▶├──▶  🖼️ Imágenes       │
│  🎬 Video        ──┤   │                       │
│  📊 Datos        ──┘   └──▶  🔊 Audio          │
│                                                 │
│  Ejemplos:                                      │
│  - GPT-4o: texto + imagen + audio → texto       │
│  - Gemini 2.0: texto + imagen + video → texto   │
│  - DALL-E 3: texto → imagen                     │
│  - Sora: texto → video                          │
│  - Whisper: audio → texto                       │
└────────────────────────────────────────────────┘

Visión: análisis de imágenes

Con GPT-4o

from openai import OpenAI
import base64

client = OpenAI()

# Opción 1: imagen desde URL
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "¿Qué hay en esta imagen? Describe con detalle."},
            {"type": "image_url", "image_url": {
                "url": "https://example.com/foto.jpg",
                "detail": "high"  # "low", "high", o "auto"
            }}
        ]
    }],
    max_tokens=500,
)

print(response.choices[0].message.content)

# Opción 2: imagen en base64
with open("diagram.png", "rb") as f:
    base64_image = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Explica este diagrama de arquitectura."},
            {"type": "image_url", "image_url": {
                "url": f"data:image/png;base64,{base64_image}"
            }}
        ]
    }],
)

Casos de uso de vision

# OCR avanzado: extraer texto de documentos
def extract_text_from_document(image_path):
    with open(image_path, "rb") as f:
        b64 = base64.b64encode(f.read()).decode()

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=[{
            "role": "user",
            "content": [
                {"type": "text", "text": """Extrae TODO el texto de esta imagen.
                Mantén el formato y estructura original.
                Devuelve solo el texto extraído."""},
                {"type": "image_url", "image_url": {
                    "url": f"data:image/png;base64,{b64}"
                }}
            ]
        }]
    )
    return response.choices[0].message.content

# Análisis de gráficos y charts
def analyze_chart(chart_image_path):
    """Analiza un gráfico y extrae insights."""
    # GPT-4o puede leer barras, líneas, pie charts, etc.
    response = extract_from_image(
        chart_image_path,
        "Analiza este gráfico. ¿Cuáles son las tendencias principales? "
        "¿Qué datos específicos puedes extraer?"
    )
    return response

Generación de imágenes

DALL-E 3

response = client.images.generate(
    model="dall-e-3",
    prompt="Un robot programador trabajando en una laptop, estilo acuarela",
    size="1024x1024",
    quality="hd",
    n=1,
)

image_url = response.data[0].url
revised_prompt = response.data[0].revised_prompt  # DALL-E mejora tu prompt
print(f"Prompt usado: {revised_prompt}")

Stable Diffusion (open source)

from diffusers import StableDiffusionXLPipeline
import torch

pipe = StableDiffusionXLPipeline.from_pretrained(
    "stabilityai/stable-diffusion-xl-base-1.0",
    torch_dtype=torch.float16,
)
pipe = pipe.to("cuda")

image = pipe(
    prompt="A futuristic city at sunset, cyberpunk style, 4k",
    negative_prompt="blurry, low quality, distorted",
    num_inference_steps=30,
    guidance_scale=7.5,
).images[0]

image.save("city.png")

Audio: Speech-to-Text y Text-to-Speech

Whisper (transcripción)

# Whisper de OpenAI: transcripción multilingüe
audio_file = open("podcast.mp3", "rb")

transcript = client.audio.transcriptions.create(
    model="whisper-1",
    file=audio_file,
    language="es",
    response_format="verbose_json",
    timestamp_granularities=["segment"],
)

for segment in transcript.segments:
    print(f"[{segment['start']:.1f}s] {segment['text']}")

# Whisper local (open source)
import whisper

model = whisper.load_model("large-v3")
result = model.transcribe("audio.mp3", language="es")
print(result["text"])

Text-to-Speech

# OpenAI TTS
response = client.audio.speech.create(
    model="tts-1-hd",
    voice="nova",        # alloy, echo, fable, onyx, nova, shimmer
    input="Hola, soy una voz generada por inteligencia artificial.",
    speed=1.0,
)

response.stream_to_file("output.mp3")

# ElevenLabs (alta calidad, clonación de voz)
from elevenlabs import generate, play

audio = generate(
    text="Este es un ejemplo de voz clonada.",
    voice="tu_voz_clonada",
    model="eleven_multilingual_v2",
)
play(audio)

Video: Generación y análisis

# Análisis de video con Gemini 2.0
import google.generativeai as genai

model = genai.GenerativeModel("gemini-2.0-flash")

# Subir video
video_file = genai.upload_file("demo.mp4")

# Analizar
response = model.generate_content([
    video_file,
    "Describe lo que ocurre en este video paso a paso."
])
print(response.text)

# Generación de video (Sora y similares)
# OpenAI Sora: genera videos de hasta 60s desde texto
# RunwayML Gen-3: genera clips de 10s
# Nota: estas APIs son de acceso limitado (2025)

Modelos multimodales nativos

# GPT-4o: nativo multimodal (texto + imagen + audio)
# Una sola llamada puede procesar múltiples modalidades

response = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    modalities=["text", "audio"],
    audio={"voice": "alloy", "format": "wav"},
    messages=[{
        "role": "user",
        "content": "Explica qué es la fotosíntesis en una oración."
    }]
)

# Respuesta en texto Y audio simultáneamente
print(response.choices[0].message.content)       # Texto
audio_data = response.choices[0].message.audio    # Audio WAV

# Gemini 2.0: procesa texto, images, audio, video, código
# en una sola API unificada

Resumen

  • Los modelos multimodales procesan texto, imágenes, audio y video.
  • GPT-4o y Gemini 2.0 son nativamente multimodales.
  • Vision: OCR, análisis de diagramas, descripción de imágenes.
  • Audio: Whisper para transcripción, TTS para generación de voz.
  • Generación de imágenes: DALL-E 3, Stable Diffusion (open source).
  • Video: análisis con Gemini, generación temprana con Sora.
  • La tendencia es hacia modelos unificados que manejan todas las modalidades.

¿Te gustó esta lección?

Con Pro puedes marcar progreso, hacer ejercicios, tomar quizzes, ganar XP y obtener tu constancia.

Ver planes desde $9/mes