多模态应用
问题
如何将图片、语音、视频等多模态能力集成到 AI 应用中?
答案
一、多模态能力矩阵
| 模态 | 输入 → 理解 | 输出 → 生成 | 典型场景 |
|---|---|---|---|
| 图片 | GPT-4o Vision, Claude Vision | DALL-E, Stable Diffusion | 图片分析、生成 |
| 语音 | Whisper, Azure STT | TTS(ElevenLabs, Azure) | 语音助手 |
| 视频 | Gemini Pro, GPT-4o | Sora(预览) | 视频理解 |
| 文档 | VLM 文档理解 | PDF 生成 | 文档分析 |
二、图片理解集成
// GPT-4o Vision:图片 + 文字多模态输入
const response = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [{
role: 'user',
content: [
{ type: 'text', text: '这张图片里有什么?' },
{
type: 'image_url',
image_url: {
url: 'data:image/png;base64,...', // Base64 或 URL
detail: 'auto', // low / high / auto
},
},
],
}],
})
detail 参数选择
| 值 | Token 消耗 | 效果 | 适用 |
|---|---|---|---|
low | 85 tokens | 快但粗 | 简单分类 |
high | 85 + 170×tiles | 精细 | OCR、细节分析 |
auto | 自动 | 模型判断 | 通用 |
三、语音集成
// 语音转文字 (STT)
const transcription = await openai.audio.transcriptions.create({
file: audioFile,
model: 'whisper-1',
language: 'zh',
})
// 文字转语音 (TTS)
const speech = await openai.audio.speech.create({
model: 'tts-1',
voice: 'alloy',
input: '你好,有什么可以帮你的?',
})
四、实际应用场景
| 场景 | 多模态组合 | 说明 |
|---|---|---|
| 以图搜图 | 图片 → Embedding → 相似搜索 | 电商、内容审核 |
| 文档 OCR 问答 | 文档图片 → VLM → 文本 → RAG | 合同、发票 |
| 会议记录 | 语音 → 文本 → 摘要 | 会议纪要 |
| AI 客服 | 语音 → 文本 → LLM → 语音 | 电话客服 |
| 商品描述生成 | 图片 → 描述文本 | 电商运营 |
常见面试问题
Q1: 多模态 LLM 和传统 CV/语音模型有什么区别?
答案:
| 维度 | 多模态 LLM | 传统模型 |
|---|---|---|
| 灵活性 | 自然语言交互,任务灵活 | 固定任务 |
| 泛化性 | 零样本能力强 | 需要标注训练 |
| 精度 | 通用场景好,专业场景弱 | 专业场景强 |
| 成本 | 按 Token 计费,较贵 | 推理成本低 |
实际项目中常结合使用:多模态 LLM 处理开放场景,专业模型处理高精度需求。
Q2: 图片输入的 Token 消耗如何计算?
答案:
以 GPT-4o 为例:
detail: low:固定 85 tokens(缩放到 512×512)detail: high:85 + 170 × 图块数(按 512×512 切块)- 一张 1024×1024 图片 high 模式约消耗 765 tokens
Q3: 如何做实时语音对话?
答案:
关键挑战是延迟:
- 流式 STT — 边听边转写(非等说完再转)
- 流式 LLM — 流式生成回答
- 流式 TTS — 收到部分文本即开始合成
- VAD — 语音活动检测,判断用户说完
端到端延迟目标 < 1s,需要各环节流式衔接。OpenAI Realtime API 可实现。