Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Qwen2.5-Omni-7B: Pequeño Pero Poderoso

INEZA FELIN-MICHEL

INEZA FELIN-MICHEL

Updated on May 1, 2025

El campo de la inteligencia artificial está evolucionando rápidamente, superando los límites de lo que las máquinas pueden percibir, comprender y generar. Un salto significativo en esta evolución está marcado por la introducción del modelo Qwen2.5-Omni-7B, un modelo multimodal integral de referencia desarrollado por el equipo de Qwen. Este modelo representa un cambio de paradigma, pasando de interacciones centradas en texto a adoptar una experiencia verdaderamente omnimodal. Procesa sin problemas una amplia gama de entradas (texto, imágenes, audio y video) al mismo tiempo que genera respuestas en formatos textuales y de voz natural, a menudo de forma fluida y en tiempo real. Este artículo profundiza en las complejidades técnicas, los puntos de referencia de rendimiento y las aplicaciones prácticas del innovador modelo Qwen2.5-Omni-7B.

💡
¿Quieres una excelente herramienta de prueba de API que genere hermosa Documentación de API?

¿Quieres una plataforma integrada Todo-en-Uno para que tu equipo de desarrolladores trabaje con máxima productividad?

¡Apidog cumple todas tus demandas y reemplaza a Postman a un precio mucho más asequible!
button

¿Qué es Qwen2.5-Omni-7B? ¿Y por qué es tan bueno?

En esencia, el modelo Qwen2.5-Omni-7B emplea una novedosa arquitectura de extremo a extremo denominada "Thinker-Talker" (Pensador-Hablador). Esta filosofía de diseño tiene como objetivo crear un sistema unificado capaz tanto de una percepción integral como de una generación expresiva a través de múltiples modalidades.

El componente "Thinker" es responsable de procesar y comprender el rico entramado de entradas multimodales. Integra codificadores especializados para diferentes tipos de datos:

  • Texto: Aprovecha módulos avanzados de comprensión del lenguaje basados en transformadores, probablemente construidos sobre las sólidas bases de la serie Qwen2.
  • Visión (Imágenes y Fotogramas de Video): Incorpora transformadores de visión (ViTs) o arquitecturas similares para extraer características espaciales de imágenes y características temporales de fotogramas de video.
  • Audio: Utiliza codificadores de audio diseñados para procesar formas de onda o espectrogramas brutos, capturando características acústicas, patrones de habla, sonidos ambientales y elementos musicales.

Una innovación crucial dentro de la arquitectura es el RoPE Multimodal Alineado en el Tiempo (TMRoPE). Las codificaciones posicionales estándar como Rotary Position Embedding (RoPE) destacan en datos secuenciales como texto, pero necesitan adaptación para escenarios multimodales, especialmente video donde los fotogramas visuales y las secuencias de audio deben estar sincronizados. TMRoPE aborda esto alineando las marcas de tiempo de los fotogramas de video con los segmentos de audio correspondientes. Esta sincronización permite al modelo construir una comprensión temporal coherente de los eventos audiovisuales, permitiéndole responder preguntas como "¿Qué sonido ocurre cuando el objeto cae en el video?"

El componente "Talker" se encarga de la generación de salidas. Consiste en:

  • Decodificador de Texto: Un potente decodificador de modelo de lenguaje que genera respuestas textuales basadas en la comprensión multimodal fusionada del Thinker.
  • Sintetizador de Voz: Un módulo integrado de texto a voz (TTS) capaz de generar voz con sonido natural en tiempo real. Este módulo probablemente emplea vocoders neuronales sofisticados y potencialmente técnicas de incrustación de hablante para permitir diferentes salidas de voz (como 'Chelsie' y 'Ethan').

La naturaleza de extremo a extremo significa que todo el proceso, desde la percepción hasta la generación, ocurre dentro de un único modelo unificado, minimizando la latencia y permitiendo interacciones fluidas y continuas donde las respuestas pueden comenzar antes de que la entrada se procese por completo.

Entonces, ¿por qué es tan especial Qwen2.5-Omni-7B?

El modelo Qwen2.5-Omni-7B se distingue por varias características técnicas clave:

  • Percepción y Generación Omnimodal: A diferencia de los modelos especializados para modalidades únicas, Qwen2.5-Omni-7B está diseñado inherentemente para entradas combinadas. Puede analizar un video, escuchar su pista de audio, leer instrucciones de texto adjuntas y generar una respuesta que sintetice información de todas estas fuentes, produciendo tanto texto como audio hablado.
  • Interacción en Tiempo Real y en Streaming: La arquitectura Thinker-Talker admite el procesamiento de entrada en fragmentos y la generación de salida inmediata. Esto facilita aplicaciones verdaderamente interactivas como asistentes de voz que pueden responder a mitad de una oración o herramientas de análisis de video que proporcionan comentarios a medida que se desarrollan los eventos.
  • Síntesis de Voz de Alta Fidelidad: El módulo TTS integrado busca naturalidad y robustez, con resultados favorables en comparación con otros sistemas TTS en streaming y no en streaming (por ejemplo, utilizando SEED-TTS-eval). Maneja texto complejo y mantiene la consistencia del hablante cuando es aplicable.
  • Rendimiento Competitivo entre Modalidades: Los puntos de referencia muestran que el modelo Qwen2.5-Omni-7B tiene un rendimiento sólido en diversas tareas. Supera al especializado Qwen2-Audio en algunas tareas de audio y logra un rendimiento comparable al de Qwen2.5-VL-7B, centrado en visión-lenguaje, en tareas de visión, demostrando su fortaleza omnimodal equilibrada. Sus resultados de vanguardia en OmniBench destacan su competencia en la integración de múltiples modalidades.
  • Seguimiento Efectivo de Instrucciones de Voz: Una capacidad notable es su habilidad para comprender y ejecutar instrucciones entregadas a través de la voz con una eficacia comparable a las instrucciones de texto. Esto se valida mediante puntos de referencia como MMLU y GSM8K realizados utilizando entradas de voz, mostrando su potencial para operaciones manos libres y control por voz.

Aquí están los puntos de referencia para Qwen2.5-Omni

Las evaluaciones cuantitativas subrayan las capacidades del modelo Qwen2.5-Omni-7B. A lo largo de un amplio espectro de puntos de referencia, demuestra competencia:

Multimodalidad a Texto: En OmniBench, el modelo 7B logra una notable puntuación promedio del 56.13%, superando significativamente a modelos como Gemini-1.5-Pro (42.91%) y a modelos multimodales especializados en tareas que implican razonamiento combinado de imagen, audio y texto.

Audio a Texto:

  • ASR: En Librispeech test-clean/test-other, logra WERs de 1.8/3.4, competitivos con Whisper-large-v3 (1.8/3.6) y Qwen2-Audio (1.6/3.6). En Common Voice 15 (en/zh), logra puntuaciones máximas de 7.6/5.2 WER.
  • S2TT: En CoVoST2 (en->de / zh->en), logra puntuaciones BLEU de 30.2/29.4, demostrando sólidas capacidades de traducción de voz.
  • Comprensión de Audio: En MMAU, obtiene un promedio del 65.60%, destacando en tareas de razonamiento de sonido, música y habla. En VoiceBench (Promedio), alcanza 74.12, lo que indica un sólido rendimiento en puntos de referencia conversacionales complejos basados en voz.

Imagen a Texto: El modelo Qwen2.5-Omni-7B muestra un rendimiento comparable al del modelo dedicado Qwen2.5-VL-7B en puntos de referencia de visión-lenguaje como MMMU (59.2 vs 58.6), MMBench-V1.1-EN (81.8 vs 82.6), MMStar (64.0 vs 63.9) y TextVQA (84.4 vs 84.9). También destaca en tareas de referenciación como RefCOCO/+/g.

Video (sin audio) a Texto: En puntos de referencia como Video-MME (sin subtítulos) y MVBench, logra puntuaciones de 64.3 y 70.3 respectivamente, demostrando una sólida comprensión de video incluso sin señales de audio acompañantes en estas pruebas específicas.

TTS Zero-shot: Evaluada en SEED-TTS-eval, la versión ajustada con RL muestra un WER bajo (1.42/2.32/6.54 para zh/en/difícil) y una alta similitud de hablante (0.754/0.641/0.752), lo que indica una generación de voz consistente y de alta calidad.

Texto a Texto: Aunque es principalmente multimodal, sus capacidades solo de texto siguen siendo sólidas. En MMLU-redux obtiene una puntuación de 71.0, en GSM8K 88.7 y en HumanEval 78.7, generalmente por detrás del modelo de texto especializado Qwen2.5-7B, pero comparándose bien con otros modelos de 7-8B como Llama3.1-8B.

Okay, lo entiendo. Disculpas por el formato anterior. Reescribiré la sección a partir de los detalles de implementación, integrando los ejemplos de código de forma más natural en un formato de artículo fluido.


Ejecutando el Modelo Qwen2.5-Omni-7B: Implementación Práctica

La transición de las capacidades teóricas a la aplicación práctica requiere comprender cómo interactuar programáticamente con el modelo Qwen2.5-Omni-7B. Las herramientas principales para esto son la biblioteca transformers de Hugging Face, mejorada con integraciones específicas de Qwen, y el útil paquete qwen-omni-utils para una gestión simplificada de entradas multimodales.

El viaje comienza con la configuración del entorno. Asegúrate de tener las bibliotecas principales, incluyendo transformers, accelerate (para manejo eficiente de multi-GPU y precisión mixta), torch, soundfile (para E/S de audio) y el crucial qwen-omni-utils. Es altamente recomendable instalar la versión de vista previa específica de transformers que incluye soporte para la arquitectura Qwen2.5-Omni y usar el extra [decord] para qwen-omni-utils para un procesamiento de video más rápido:

# Recommended installation
pip install transformers accelerate torch soundfile qwen-omni-utils[decord] -U
# Install the specific transformers version with Qwen2.5-Omni support
pip install git+https://github.com/huggingface/transformers@v4.51.3-Qwen2.5-Omni-preview

Una vez que el entorno está listo, cargar el modelo y su procesador correspondiente es el siguiente paso. Para gestionar los importantes recursos computacionales requeridos, especialmente la VRAM, se recomienda encarecidamente usar precisión bfloat16 (torch_dtype=torch.bfloat16 o "auto") y habilitar Flash Attention 2 (attn_implementation="flash_attention_2"). Flash Attention 2 optimiza el mecanismo de atención, reduciendo la huella de memoria y aumentando la velocidad en hardware compatible (arquitectura NVIDIA Ampere o posterior). El argumento device_map="auto" distribuye inteligentemente las capas del modelo entre las GPUs disponibles.

import torch
import soundfile as sf
from transformers import Qwen2_5OmniForConditionalGeneration, Qwen2_5OmniProcessor
from qwen_omni_utils import process_mm_info

# Define model identifier and load components
model_path = "Qwen/Qwen2.5-Omni-7B"

print("Loading model and processor...")
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
    model_path,
    torch_dtype=torch.bfloat16, # Use BF16 for memory efficiency
    device_map="auto",         # Distribute model across available GPUs
    attn_implementation="flash_attention_2" # Enable Flash Attention 2
)
processor = Qwen2_5OmniProcessor.from_pretrained(model_path)
print("Model and processor loaded successfully.")

Con el modelo cargado, podemos explorar sus capacidades a través de ejemplos que reflejan los cuadernos de recetas proporcionados.

Comprensión Universal de Audio con el Modelo Qwen2.5-Omni-7B

El cuaderno de recetas cookbooks/universal_audio_understanding.ipynb demuestra la destreza del modelo en el manejo de diversas tareas de audio. Primero abordemos el Reconocimiento Automático de Voz (ASR).

La entrada debe estructurarse como una lista de conversación. Proporcionamos un prompt del sistema (esencial para habilitar la posible salida de audio, incluso si no se usa para ASR) y un mensaje del usuario que contiene la entrada de audio (especificada a través de una URL o ruta local) y el prompt de texto que instruye al modelo.

# Prepare conversation for ASR using a sample audio URL
audio_url_asr = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/hello.wav"

conversation_asr = [
    {
        "role": "system",
        "content": [{"type": "text", "text": "You are Qwen, a virtual human..."}] # Standard system prompt
    },
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": audio_url_asr},
            {"type": "text", "text": "Please provide the transcript for this audio."}
        ]
    }
]

# Process multimodal info. Note: use_audio_in_video is False here.
USE_AUDIO_IN_VIDEO_FLAG = False
print("Processing ASR input...")
text_prompt_asr = processor.apply_chat_template(conversation_asr, add_generation_prompt=True, tokenize=False)
audios_asr, images_asr, videos_asr = process_mm_info(conversation_asr, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)

# Prepare final model inputs using the processor
inputs_asr = processor(
    text=text_prompt_asr,
    audio=audios_asr, images=images_asr, videos=videos_asr, # Pass processed modalities
    return_tensors="pt", padding=True,
    use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # Consistent flag setting
)
# Move inputs to the correct device and data type
inputs_asr = inputs_asr.to(model.device).to(model.dtype)
print("ASR input ready for generation.")

La utilidad process_mm_info maneja la carga y el preprocesamiento de la URL de audio. El processor luego combina el prompt de texto tokenizado con las características de audio procesadas, creando los tensores de entrada. Ten en cuenta que el indicador use_audio_in_video se establece consistentemente en False ya que no hay video involucrado.

Para generar la transcripción, llamamos al método model.generate. Para un ASR más rápido, establecemos return_audio=False.

print("Generating ASR transcription...")
with torch.no_grad(): # Disable gradient calculations for inference
    text_ids_asr = model.generate(
        **inputs_asr,
        use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG,
        return_audio=False, # Only need text output
        max_new_tokens=512  # Limit output length
    )

# Decode the generated token IDs back to text
transcription = processor.batch_decode(text_ids_asr, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print("\n--- Qwen2.5-Omni-7B Model: ASR Result ---")
print(f"Audio Source: {audio_url_asr}")
print(f"Generated Transcription: {transcription}")

Más allá del habla, el modelo puede analizar otros sonidos. Intentemos identificar un evento sonoro, como una tos. El proceso es similar, sustituyendo la fuente de audio y ajustando el prompt de texto.

# Prepare conversation for sound analysis
sound_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/cough.wav"

conversation_sound = [
    {"role": "system", "content": [{"type": "text", "text": "You are Qwen, a virtual human..."}]},
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": sound_url},
            {"type": "text", "text": "What specific sound event occurs in this audio clip?"}
        ]
    }
]

# Process input (similar steps as ASR)
print("\nProcessing sound analysis input...")
text_prompt_sound = processor.apply_chat_template(conversation_sound, add_generation_prompt=True, tokenize=False)
audios_sound, _, _ = process_mm_info(conversation_sound, use_audio_in_video=False) # No images/videos
inputs_sound = processor(text=text_prompt_sound, audio=audios_sound, return_tensors="pt", padding=True, use_audio_in_video=False)
inputs_sound = inputs_sound.to(model.device).to(model.dtype)
print("Sound analysis input ready.")

# Generate sound analysis (text only)
print("Generating sound analysis...")
with torch.no_grad():
    text_ids_sound = model.generate(**inputs_sound, return_audio=False, max_new_tokens=128)

# Decode and display the result
analysis_text = processor.batch_decode(text_ids_sound, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]
print("\n--- Qwen2.5-Omni-7B Model: Sound Analysis Result ---")
print(f"Audio Source: {sound_url}")
print(f"Sound Analysis: {analysis_text}")

Extracción de Información de Video con el Modelo Qwen2.5-Omni-7B

El cuaderno de recetas cookbooks/video_information_extracting.ipynb se centra en extraer información de secuencias de video, una tarea en la que destaca el procesamiento audiovisual integrado del modelo Qwen2.5-Omni-7B.

Aquí, la diferencia crucial es a menudo la necesidad de procesar tanto los fotogramas visuales como la pista de audio del video. Esto se controla mediante el parámetro use_audio_in_video, que debe establecerse en True tanto durante process_mm_info como en la llamada al processor.

# Prepare conversation for video analysis using a sample video URL
video_url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen2.5-Omni/draw.mp4"

conversation_video = [
    {"role": "system", "content": [{"type": "text", "text": "You are Qwen, a virtual human..."}]},
    {
        "role": "user",
        "content": [
            {"type": "video", "video": video_url},
            # Prompt requiring integrated audio-visual understanding
            {"type": "text", "text": "Describe the actions in this video and mention any distinct sounds present."}
        ]
    }
]

# Process multimodal info, crucially enabling audio from video
USE_AUDIO_IN_VIDEO_FLAG = True # Enable audio track processing
print("\nProcessing video analysis input (with audio)...")
text_prompt_video = processor.apply_chat_template(conversation_video, add_generation_prompt=True, tokenize=False)

# process_mm_info handles video loading (using decord if installed)
audios_video, images_video, videos_video = process_mm_info(conversation_video, use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG)

# Prepare final model inputs
inputs_video = processor(
    text=text_prompt_video,
    audio=audios_video, images=images_video, videos=videos_video,
    return_tensors="pt", padding=True,
    use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG # MUST be True here as well
)
inputs_video = inputs_video.to(model.device).to(model.dtype)
print("Video input ready for generation.")

Al generar la respuesta para el análisis de video, podemos solicitar tanto la descripción textual como la salida de voz sintetizada utilizando return_audio=True y especificando un speaker.

# Generate video analysis (requesting both text and audio output)
print("Generating video analysis (text and audio)...")
with torch.no_grad():
    text_ids_video, audio_output_video = model.generate(
        **inputs_video,
        use_audio_in_video=USE_AUDIO_IN_VIDEO_FLAG, # MUST be True here too
        return_audio=True,         # Request speech synthesis
        speaker="Ethan",           # Choose a voice (e.g., Ethan)
        max_new_tokens=512
    )

# Decode the text part of the response
video_analysis_text = processor.batch_decode(text_ids_video, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0]

print("\n--- Qwen2.5-Omni-7B Model: Video Analysis Result ---")
print(f"Video Source: {video_url}")
print(f"Generated Text Analysis: {video_analysis_text}")

# Save the generated audio response if it exists
if audio_output_video is not None:
    output_audio_path = "video_analysis_response.wav"
    sf.write(
        output_audio_path,
        audio_output_video.reshape(-1).detach().cpu().numpy(), # Reshape and move to CPU
        samplerate=24000, # Qwen Omni uses 24kHz
    )
    print(f"Generated audio response saved to: {output_audio_path}")
else:
    print("Audio response was not generated (check system prompt or flags).")

Estos ejemplos detallados ilustran el flujo de trabajo central para interactuar con el modelo Qwen2.5-Omni-7B para diversas tareas multimodales. Al estructurar cuidadosamente la conversación de entrada, utilizar las utilidades proporcionadas y configurar correctamente parámetros como use_audio_in_video y return_audio, los desarrolladores pueden aprovechar las capacidades perceptivas y generativas completas de este modelo avanzado. Recuerda que la gestión de los recursos de la GPU mediante técnicas como la precisión BF16 y Flash Attention 2 a menudo es necesaria para manejar entradas complejas como videos más largos.

Conclusión

El modelo Qwen2.5-Omni-7B representa un avance significativo en la IA multimodal. Su arquitectura de extremo a extremo, características innovadoras como TMRoPE, sólido rendimiento en puntos de referencia en diversas tareas y capacidades de interacción en tiempo real establecen un nuevo estándar. Al integrar sin problemas la percepción y la generación para texto, imágenes, audio y video, abre posibilidades para aplicaciones de IA más ricas, naturales y capaces, desde asistentes virtuales sofisticados y herramientas de análisis de contenido hasta experiencias educativas inmersivas y soluciones de accesibilidad. A medida que el ecosistema a su alrededor madura, el modelo Qwen2.5-Omni-7B está llamado a ser una tecnología fundamental que impulse la próxima ola de sistemas inteligentes.

💡
¿Quieres una excelente herramienta de prueba de API que genere hermosa Documentación de API?

¿Quieres una plataforma integrada Todo-en-Uno para que tu equipo de desarrolladores trabaje con máxima productividad?

¡Apidog cumple todas tus demandas y reemplaza a Postman a un precio mucho más asequible!
button