跳到主要内容
Multi-Modal

第3章 视频与音频 Agent

视频 LLM(Video-LLaVA/Gemini 2.5/Qwen2.5-VL video)+ 音频(Whisper/Voxtral/GPT-4o Realtime/Gemini Live)全景对比、流式 API 范式、应用场景

video-llm audio-llm whisper gpt-4o-realtime gemini-live voxtral qwen-omni

第3章 🎬🎤 视频与音频 Agent

一句话:视频 LLM 让 agent 看 1h 监控/会议/教学,Realtime API 让 agent 200ms 延迟说话——这两个方向是 2025-2026 多模态最大变化。Gemini 2.5 Pro 在视频上一骑绝尘(1M 上下文,真看 1h),GPT-4o Realtime / Gemini Live 重塑了语音对话范式。

📑 目录


一、视频 Agent 全景

视频 = 时间维度 + 视觉,挑战:

1 张图  ── 1 个 visual frame
1 分钟视频  ── 30 fps × 60 s = 1800 frames
1 小时视频  ── 108,000 frames

如果每帧像普通 VLM 那样占 256 token → 1h 视频 = 27M token,远超任何 LLM

3 种主流策略:

1.1 帧采样

每秒抽 1-2 帧,把 1h 视频降到 ~3600-7200 帧。再 token 压缩 → 仍是几十万 token。

1.2 时间池化

CNN-style 时间维度池化(VideoChat / Video-LLaVA),把多帧合成单 spatio-temporal feature。

1.3 Long-context 直接吞

Gemini 2.5 Pro:1M 上下文 + 高效编码 → 可直接读 1h 视频(token 数几十万,模型扛得住)。


二、Gemini 2.5 视频原生

地址:https://ai.google.dev/gemini-api/docs/vision#video-input

优势:

  • 1M 上下文 ──1h 视频原生支持
  • 视频是 first-class citizen ──prompt 里直接 Part.from_uri(video_uri)
  • 自动抽帧(默认 1 fps,可配置)
  • 视频理解 benchmark Video-MME 领先(78%+)

典型用法(Python):

import google.generativeai as genai

# 上传视频
video_file = genai.upload_file('meeting.mp4')

# 等处理完
import time
while video_file.state.name == 'PROCESSING':
    time.sleep(5)
    video_file = genai.get_file(video_file.name)

# 调用
model = genai.GenerativeModel('gemini-2.5-pro')
response = model.generate_content([
    "总结这段会议的主要决策点和 action items",
    video_file
])
print(response.text)

Pricing(2026):

  • 视频 token:每秒 ~263 token(Gemini Pro)= 1h 视频 ≈ 95 万 token
  • 输入:1.25/Mtoken=1h视频约1.25/M token = 1h 视频约 **1.2** ⭐

业界共识:长视频处理首选 Gemini 2.5 ——别家差距明显。


三、Qwen2.5-VL video / VideoLLaMA / Video-LLaVA

3.1 Qwen2.5-VL video ⭐(开源 SOTA)

  • 支持长视频(动态帧率)
  • 32B / 72B 性能强
  • 已被 vLLM / SGLang 等推理框架支持
# vLLM 推理 Qwen2.5-VL 视频
vllm serve Qwen/Qwen2.5-VL-32B-Instruct \
    --tensor-parallel-size 4 \
    --max-model-len 65536  # 视频需要长上下文

3.2 VideoLLaMA / VideoLLaMA 3

学术开源,DAMO 等团队。

3.3 Video-LLaVA

LLaVA 团队的视频版,2023-12 发布。架构开放,适合改造研究。

3.4 ShareGPT4Video

数据集 + baseline,2024-06 发布,大规模视频 caption 数据(40M+ 高质量 caption)。


四、视频处理工程实践

4.1 抽帧

import cv2

def extract_frames(video_path, fps=1):
    """每秒抽 fps 帧"""
    cap = cv2.VideoCapture(video_path)
    video_fps = cap.get(cv2.CAP_PROP_FPS)
    interval = int(video_fps / fps)
    
    frames = []
    i = 0
    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        if i % interval == 0:
            frames.append(frame)
        i += 1
    cap.release()
    return frames

4.2 关键帧选择(降低 token)

不必每秒 1 帧——只在有变化时抽:

def keyframe_selection(video_path, threshold=0.3):
    """SSIM-based 关键帧"""
    from skimage.metrics import structural_similarity
    
    frames = extract_frames(video_path, fps=2)
    keyframes = [frames[0]]
    
    for f in frames[1:]:
        sim = structural_similarity(
            cv2.cvtColor(keyframes[-1], cv2.COLOR_BGR2GRAY),
            cv2.cvtColor(f, cv2.COLOR_BGR2GRAY)
        )
        if sim < (1 - threshold):
            keyframes.append(f)
    return keyframes

技巧:对静态视频(slides / talking head)关键帧可降到 1 张/分钟,token 压缩 60×。

4.3 视频 + 转录文本组合

更鲁棒做法:视频(关键帧)+ 全文转录(Whisper):

def video_summary(video_path):
    # 1. 关键帧
    keyframes = keyframe_selection(video_path)
    
    # 2. 音频转录
    transcript = whisper_transcribe(video_path)
    
    # 3. 一起送给 LLM
    response = gpt4o_call(
        prompt="基于以下关键帧和转录,总结视频",
        images=keyframes,
        text=f"转录:\n{transcript}"
    )
    return response

优势:transcript 提供语义、关键帧提供视觉细节,比单纯 Gemini video 还便宜 + 准确(很多场景)。


五、音频 Agent 全景

┌────────────────────────────────────────┐
│  ASR(Speech → Text)                   │
│   Whisper / Whisper Large v3 ⭐         │
│   Voxtral(Mistral)                    │
│   Qwen2.5-Audio                        │
│   Gemini Audio                         │
├────────────────────────────────────────┤
│  Native Audio LLM(Speech ↔ LLM)       │
│   GPT-4o Realtime ⭐ ⭐                  │
│   Gemini Live(2025) ⭐                  │
│   Qwen2.5-Omni(开源全模态)             │
│   Anthropic Realtime(2026 Q1)           │
├────────────────────────────────────────┤
│  TTS(Text → Speech)                   │
│   OpenAI tts-1 / 1-hd                  │
│   ElevenLabs                            │
│   Google Wavenet                        │
│   Cartesia / PlayHT                     │
└────────────────────────────────────────┘

六、Whisper

论文:arXiv 2212.04356,OpenAI 2022-09 发布。

特点:

  • 30+ 语言 ASR
  • 完全开源(MIT 许可证)
  • Large v3(2024)是当前 SOTA 开源 ASR

6.1 用法

import whisper

model = whisper.load_model('large-v3')
result = model.transcribe('audio.mp3')
print(result['text'])

6.2 fast-whisper / whisper.cpp

实战常用:

  • faster-whisper:CTranslate2 后端,4× 快于原版
  • whisper.cpp:C++ 实现,可跑 macOS / iPhone
  • WhisperX:加 forced alignment,精确时间戳

6.3 部署

# 用 fast-whisper 跑生产服务
pip install faster-whisper

from faster_whisper import WhisperModel
model = WhisperModel('large-v3', device='cuda', compute_type='float16')
segments, info = model.transcribe('audio.mp3', beam_size=5)

七、流式 API 范式 ⭐

7.1 旧范式(2022-2024):串联

用户说话 ─→ Whisper ─→ 文本 ─→ GPT-4 ─→ 文本 ─→ TTS ─→ 用户听
   (3-5 秒延迟)

问题:延迟高、转换损失语义(情感、语调丢失)、模型间割裂。

7.2 新范式(2024 起):Native 流式

GPT-4o Realtime API(2024-10)开创:

用户说话 ──┐
          ├─→ GPT-4o(同时听 + 理解 + 生成)──→ 用户听
用户视频 ──┘   (200-300 ms 延迟)

特点:

  • 同一模型处理音频输入 + 输出
  • 音频 token 化,与文本混合
  • 可中途打断、可情感化语音
  • WebSocket / WebRTC 流式

7.3 GPT-4o Realtime 用法

from openai import OpenAI

client = OpenAI()

with client.realtime.connect(model='gpt-4o-realtime-preview') as conn:
    conn.session.update(session={
        'modalities': ['audio', 'text'],
        'voice': 'alloy',
        'instructions': '你是一个友好的助手'
    })
    
    # 发送音频
    conn.send({'type': 'input_audio_buffer.append', 'audio': audio_b64})
    conn.send({'type': 'input_audio_buffer.commit'})
    conn.send({'type': 'response.create'})
    
    # 接收音频流
    for event in conn:
        if event.type == 'response.audio.delta':
            play(event.delta)

7.4 Gemini Live(2025)

类似 Realtime,多模态原生(同时音频 + 视频):

import google.generativeai as genai

# Gemini Live 开 session
session = genai.live.connect(model='gemini-2.0-flash-live')

# 同时发音频和视频帧
session.send_audio(audio_chunk)
session.send_video_frame(camera_frame)

# 接收
for response in session:
    if response.audio:
        play(response.audio)
    if response.text:
        print(response.text)

优势:屏幕共享 + 视频 + 语音三合一(适合远程会议 / 协作场景)。

7.5 Qwen2.5-Omni(开源全模态)

阿里 2025-Q3 开源,7B 全模态(音频 + 视频 + 文本一体)。

  • 完全开源
  • 可端侧部署
  • 性能接近 GPT-4o(部分 benchmark)

7.6 流式 API 应用

场景方案
手机助手(Siri/Google Assistant 替代)GPT-4o Realtime + 自家 wake word
远程客服Realtime + 工具调用
同声传译Realtime,实时翻译
AI 老师 / 陪练Realtime + 教学 prompt
远程医疗咨询Gemini Live(屏幕 + 视频 + 语音)

八、TTS(Text-to-Speech)

虽然 Realtime API 内置 TTS,但独立 TTS 仍有用:

8.1 主流商业 TTS

服务特色价格
OpenAI tts-1 / tts-1-hd主流,质量稳定$15/M chars
ElevenLabs业界最强 ⭐ 表情/克隆$99/月起
Google Wavenet多语言,云原生$4/M chars
Cartesia极低延迟(<100ms)按用量
PlayHT克隆,创作$39/月起

8.2 开源 TTS

  • XTTS-v2(Coqui):多语言克隆
  • F5-TTS:质量极好的 zero-shot 克隆
  • Bark:Suno AI 开源
  • GPT-SoVITS:中文社区流行
  • Spark-TTS(2025):Apache 2.0,工业级

8.3 用法

# OpenAI TTS
import openai

response = openai.audio.speech.create(
    model='tts-1-hd',
    voice='alloy',
    input='你好,这是一段测试'
)
response.stream_to_file('out.mp3')

# ElevenLabs
from elevenlabs import generate, save
audio = generate(
    text='你好',
    voice='Rachel',
    model='eleven_turbo_v2_5'
)
save(audio, 'out.mp3')

九、应用场景与选型

       Q1: 视频 or 音频?

       ├── 视频
       │   ├── 长视频(>10 min) → Gemini 2.5 Pro ⭐
       │   ├── 短视频开源 → Qwen2.5-VL video
       │   └── 帧采样 + Whisper 组合 → GPT-4o + Whisper

       └── 音频

           ├── 单纯 ASR(转录)
           │   ├── 高质量 → Whisper Large v3 ⭐
           │   ├── 极速 → faster-whisper
           │   └── 端侧 → whisper.cpp

           ├── 流式对话
           │   ├── 闭源 + 高质量 → GPT-4o Realtime ⭐
           │   ├── 视频 + 音频 → Gemini Live ⭐
           │   └── 开源 → Qwen2.5-Omni

           └── TTS
               ├── 高质量 → ElevenLabs / OpenAI tts-1-hd
               ├── 低延迟 → Cartesia
               └── 开源 → F5-TTS / XTTS-v2

9.1 视频 + 音频组合最佳实践

典型企业场景(会议摘要、教学视频分析):

def video_audio_pipeline(video_path):
    # 方案 A: 全交给 Gemini
    return gemini_2_5_video_analyze(video_path)
    
    # 方案 B: 拆分(更便宜 + 可控)
    transcript = whisper_transcribe(extract_audio(video_path))
    keyframes = keyframe_selection(video_path)
    summary = gpt4o(transcript=transcript, keyframes=keyframes)
    return summary
方案Cost(1h 视频)质量延迟
全 Gemini 2.5~$1.5中-高
Whisper + 关键帧 + GPT-4o~$0.5高 ⭐

✅ 自我检验清单

  • 能说出视频 token 爆炸问题及 3 种解法
  • 能解释 Gemini 2.5 在长视频上的优势
  • 能区分 Qwen2.5-VL video / VideoLLaMA / Video-LLaVA
  • 能说出关键帧选择的实战意义
  • 能解释 Realtime API 的范式与传统 ASR+LLM+TTS 串联的区别
  • 能背出 GPT-4o Realtime / Gemini Live / Qwen2.5-Omni 三家定位
  • 能根据”视频 / 音频转录 / 流式对话 / TTS”4 个场景给出选型

📚 参考资料

视频

  • Video-LLaVA (arXiv 2311.10122)
  • VideoLLaMA 3 (arXiv 2406.07476)
  • ShareGPT4Video (arXiv 2406.04325)
  • Qwen2.5-VL Technical Report

音频 / 流式

TTS

工程实践

下一章:第4章 多模态 Agent 评测 —— MMMU / MathVista / MMBench / Video-MME / VoiceBench 等 5 大主流 benchmark + SOTA 数据 + 幻觉问题分析。