👁️ 什麼是多模態 API?
多模態 AI 能處理文字以外的資料——圖片、音訊、影片。而多模態 API 讓你在程式碼中使用這些能力。
💡 一句話理解 文字 API = AI 能「讀」和「寫」 多模態 API = AI 還能「看圖」、「聽聲音」、「說話」
2026 多模態能力一覽
| 能力 | OpenAI | Claude | Gemini |
|---|---|---|---|
| 看圖理解 | ✅ GPT-4o | ✅ Claude Sonnet 4.6 | ✅ Gemini 3.1 Pro |
| 語音轉文字 | ✅ Whisper | ❌ | ✅ |
| 文字轉語音 | ✅ TTS-1 | ❌ | ✅ |
| 影片理解 | ⚠️ 有限 | ❌ | ✅ 原生 |
| 圖片生成 | ✅ DALL-E 3 | ❌ | ✅ Imagen 3 |
2026 年三巨頭多模態能力速查
2026 年主流 API 陣容已經穩定下來,三家各有擅長領域:
- GPT-5.4(OpenAI):圖片理解 + 語音 + 文字轉語音全包,影片支援仍在預覽階段。單張圖片最高可處理 2048×2048,超過自動降採樣。
- Claude Sonnet 4.6:圖片理解品質目前最強,尤其在圖表、手寫、複雜 UI 分析上領先。不支援語音和影片輸入,但支援 PDF 原生上傳(最多 100 頁,自動處理文字 + 圖片)。
- Gemini 3.1 Pro:唯一原生支援長影片(最長 2 小時)和音訊輸入的模型,多模態統一處理,適合跨媒體工作流。
選型簡單原則:單純看圖選 Claude,要處理影片/音訊選 Gemini,需要語音輸出選 GPT。更完整的模型比較可以參考 模型大亂鬥。
📸 Vision API:讓 AI 看圖
基本用法(OpenAI)
import base64
def encode_image(image_path):
"""把圖片轉成 base64"""
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
# 方法 1:本地圖片
image_b64 = encode_image("receipt.jpg")
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "這張收據的金額是多少?請列出每個項目和總金額。"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{image_b64}",
"detail": "high" # high / low / auto
}
}
]
}],
max_tokens=500
)
print(response.choices[0].message.content)
# "這張收據的項目如下:
# 1. 拿鐵咖啡 - NT$120
# 2. 可頌麵包 - NT$85
# 總計:NT$205"
# 方法 2:用 URL
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "描述這張圖片的內容。"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/photo.jpg"}
}
]
}]
)
Claude Vision
response = claude_client.messages.create(
model="claude-sonnet-4-20260514",
max_tokens=500,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/jpeg",
"data": image_b64,
},
},
{"type": "text", "text": "這張收據的金額是多少?"}
],
}]
)
多張圖片比較
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "比較這兩張產品圖,列出差異。"},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img1_b64}"}},
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{img2_b64}"}},
]
}]
)
Vision 實用場景
| 場景 | 做法 | Prompt 範例 |
|---|---|---|
| 收據辨識 | 上傳收據照片 → 擷取金額 | 「列出每個項目和金額,用 JSON」 |
| UI 截圖分析 | 上傳 UI → 找問題 | 「這個介面有什麼 UX 問題?」 |
| 圖表理解 | 上傳圖表 → 分析趨勢 | 「描述這張圖表的趨勢和重點,用於數據分析」 |
| OCR 替代 | 上傳文件照片 → 擷取文字 | 「擷取這張圖片中所有的文字」 |
| 商品辨識 | 上傳商品照 → 描述特徵 | 「這是什麼產品?估計價格?」 |
🎤 語音轉文字(Speech-to-Text)
OpenAI Whisper API
# 音訊檔案 → 文字
with open("meeting.mp3", "rb") as audio_file:
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
language="zh", # 指定中文加速辨識
response_format="verbose_json", # 取得時間戳
)
print(transcript.text)
# 含時間戳的輸出(verbose_json 格式)
for segment in transcript.segments:
start = segment["start"]
end = segment["end"]
text = segment["text"]
print(f"[{start:.1f}s - {end:.1f}s] {text}")
實戰:會議錄音自動摘要
結合 Whisper 和 AI 寫作能力,自動產生會議紀錄:
def summarize_meeting(audio_path):
"""錄音 → 逐字稿 → AI 摘要"""
# Step 1: 語音轉文字
with open(audio_path, "rb") as f:
transcript = client.audio.transcriptions.create(
model="whisper-1", file=f, language="zh"
)
# Step 2: AI 摘要
summary = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": f"""把以下會議逐字稿整理成結構化摘要:
逐字稿:
{transcript.text}
格式:
1. 會議主題
2. 重要決議(✅ 標記)
3. 待辦事項(標明負責人)
4. 下次會議議題"""
}]
).choices[0].message.content
return summary
🔊 文字轉語音(Text-to-Speech)
OpenAI TTS API
# 文字 → 語音檔案
response = client.audio.speech.create(
model="tts-1", # tts-1(快) 或 tts-1-hd(高品質)
voice="nova", # alloy, echo, fable, onyx, nova, shimmer
input="大家好,歡迎收聽今天的 AI 技術分享。",
speed=1.0 # 0.25 ~ 4.0
)
# 存為 MP3
response.stream_to_file("output.mp3")
Streaming TTS(即時播放)
# 串流模式 — 邊生成邊播放
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="alloy",
input="這是一段即時生成的語音。"
) as response:
response.stream_to_file("stream_output.mp3")
語音選擇指南
| 語音 | 特色 | 適合 |
|---|---|---|
| alloy | 中性、專業 | 客服、旁白 |
| echo | 沉穩男聲 | Podcast、教學 |
| nova | 活潑女聲 | 對話、助手 |
| shimmer | 溫暖女聲 | 有聲書、冥想 |
| onyx | 低沉男聲 | 新聞、權威感 |
| fable | 故事風格 | 兒童內容、有聲書 |
🎬 影片理解(Gemini)
Gemini 是目前影片理解能力最強的 API。若想了解更多 AI 影片工具,參考 AI 影片生成指南。
import google.generativeai as genai
model = genai.GenerativeModel("gemini-2.5-pro")
# 上傳影片
video_file = genai.upload_file("product_demo.mp4")
# 等待處理完成
import time
while video_file.state.name == "PROCESSING":
time.sleep(5)
video_file = genai.get_file(video_file.name)
# 分析影片
response = model.generate_content([
video_file,
"請分析這段產品示範影片,列出:1) 展示了哪些功能 2) 每個功能出現在幾分幾秒 3) 整體建議"
])
print(response.text)
實戰:5 分鐘教學影片變搜尋得到的逐字稿
把一段產品教學影片丟給 Gemini,要求同時輸出逐字稿 + 章節時間戳 + 關鍵操作截圖時間點,一次抵三個工具。
prompt = """分析這段教學影片,輸出 JSON:
{
"chapters": [{"start": "00:32", "title": "...", "summary": "..."}],
"transcript": [{"time": "00:05", "text": "..."}],
"key_screenshots": [{"time": "01:20", "reason": "第一次出現設定頁"}]
}"""
response = model.generate_content([video_file, prompt])
產出的 JSON 可以直接灌進站內搜尋、做 SEO 章節標記、或串 AI 寫作產生部落格版本。
🔗 組合技:多模態 Pipeline
把多個多模態能力串起來,打造完整的 AI 工作流。
async def multimodal_customer_service(audio_message, photo=None):
"""多模態客服:聽語音 + 看照片 → 生成回覆 → 語音回覆"""
# 1. 語音轉文字
transcript = client.audio.transcriptions.create(
model="whisper-1", file=audio_message, language="zh"
)
# 2. 組合文字和圖片(如果有)
messages = [{"type": "text", "text": transcript.text}]
if photo:
photo_b64 = encode_image(photo)
messages.append({
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{photo_b64}"}
})
# 3. AI 生成回覆
ai_response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "你是客服助理,回覆要簡短友善。"},
{"role": "user", "content": messages}
]
).choices[0].message.content
# 4. 文字轉語音
audio_reply = client.audio.speech.create(
model="tts-1", voice="nova", input=ai_response
)
audio_reply.stream_to_file("reply.mp3")
return {"text": ai_response, "audio": "reply.mp3"}
💰 成本比較與陷阱
多模態 API 的計費比純文字複雜得多,沒算清楚就會被帳單嚇到。
2026 年主流多模態計費對照
| 項目 | GPT-5.4 | Claude Sonnet 4.6 | Gemini 3.1 Pro |
|---|---|---|---|
| 圖片(1024×1024 high) | 約 $0.0025/張 | 約 $0.0032/張 | 約 $0.0019/張 |
| 音訊輸入 | $0.006/分鐘(Whisper) | 不支援 | $0.003/分鐘 |
| TTS 文字轉語音 | $15/百萬字 | 不支援 | $16/百萬字 |
| 影片輸入 | 預覽版 | 不支援 | 約 $0.30/分鐘(含音軌) |
| PDF 原生 | 按頁轉圖計費 | 按內容 token 計費(便宜很多) | 按頁轉圖計費 |
三個最常見的成本陷阱
1. 圖片解析度沒壓縮就送
使用者上傳的手機照片動輒 4032×3024,如果直接用 detail: "high" 送進 GPT-5.4,一張會吃掉 1500+ tokens。實測:先在本地用 Pillow 壓到 1024 長邊,成本直接砍 60%,辨識率幾乎沒差。
2. Whisper 音檔沒先做 VAD
會議錄音常有長時間靜音(午休、休息),Whisper 仍照分鐘計費。先用 webrtcvad 或 silero-vad 切掉靜音段,1 小時錄音可能只剩 35 分鐘實際語音。
3. 影片全程高解析度分析
Gemini 預設用 1 fps 取樣分析影片,若你只需要「找出商品出現的片段」這種粗略任務,可以明確指定 fps=0.25(每 4 秒 1 幀),成本降到 1/4。
🎯 3 個真實場景:多模態 API 怎麼解決實際問題
場景 1:收據辨識 + 自動記帳(每月省 3 小時手工輸入)
小型企業主每月要把 200+ 張收據手動輸入會計軟體。用 Claude Sonnet 4.6 搭配 結構化輸出:
prompt = """分析這張收據,輸出 JSON:
{"date": "YYYY-MM-DD", "vendor": "店家", "items": [{"name":"","price":0}],
"total": 0, "tax": 0, "category": "餐飲|交通|辦公|其他"}"""
實測:200 張收據從 3 小時手工變 8 分鐘自動化,API 成本 $0.64,辨識正確率 94%(剩 6% 自動丟進人工審核佇列)。關鍵是 Claude 對台灣發票格式辨識度比 GPT 高出約 10%。
場景 2:截圖 Bug Report 直接變修改建議
使用者在產品裡按「回報問題」時,自動截圖 + 錄 30 秒操作畫面,交給 GPT-5.4 產出工程師可讀的 bug report:
# 同時送截圖和錯誤日誌
content = [
{"type": "text", "text": "使用者截圖 + 當下 console log,推斷什麼壞掉,給修改建議。"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{screenshot_b64}"}},
{"type": "text", "text": f"console logs:\n{console_text}"}
]
產出範例:「看起來是表單驗證元件在 mobile viewport 下的 z-index 低於 navbar,建議檢查 FormField.tsx 的 stacking context。」搭配 AI Coding 可以直接生出 diff。
場景 3:教學影片批次變可搜尋知識庫
線上課程平台有 500+ 小時影片課程,用戶抱怨「找不到想看的段落」。用 Gemini 3.1 Pro 批次處理:
- 每支影片切 10 分鐘片段(避免單次請求超時)
- 產出逐字稿 + 章節標記 + 每段的關鍵字
- 灌入向量資料庫做 RAG 搜尋
實測成本:500 小時 × $0.30/分鐘 ≈ $9,000 一次性處理費,換來平均觀看完成率從 34% 升到 58%。
🧰 生產環境踩坑清單
寫 Demo 和上線是兩回事。以下是實際部署多模態 API 時踩過的坑:
- 圖片超過 20MB 直接被拒:OpenAI 和 Claude 都有硬限制,上傳前先檢查檔案大小並壓縮。
- Base64 編碼放在 URL 會超過 payload 上限:大圖片改用 Files API 先上傳取得 file_id,再引用。
- 多張圖片順序會影響答案:Claude 對圖片順序敏感,把「重要的圖放在 prompt 後面」通常效果較好。
- Whisper 對會議室混音效果差:多人同時講話會漏字,建議用 Krisp 或 pyannote 先做 speaker diarization。
- TTS 不認 Markdown:把
**粗體**和[連結](url)直接念出來很蠢,送進 TTS 前先做純文字化。 - PDF 原生上傳(Claude)vs 轉圖(GPT):100 頁 PDF,Claude 原生版本便宜且快 3 倍,但對掃描檔(非可選取文字)Claude 辨識率反而不如 GPT 轉圖版。
❓ FAQ
Vision API 能辨認中文手寫嗎?
GPT-4o 和 Gemini 對印刷中文辨識率很高(> 95%)。手寫中文辨識率中等(70-85%),取決於字跡清晰度。建議加上 Prompt「請盡量辨識,不確定的用 [?] 標記」。
Whisper 支援台語/粵語嗎?
Whisper 支援 99 種語言,包含中文(zh)。台語(nan)和粵語(yue)有基本支援但精度較低。重度口音的場景建議先用 Whisper 再用 GPT 修潤。
多模態 API 的成本怎麼算?
Vision:圖片按解析度計 token,一張 1024×1024「high detail」約 765 tokens。Whisper:$0.006/分鐘。TTS:$15/百萬字(tts-1)。影片(Gemini):按影片長度和解析度計費。
可以用 Vision API 做即時影像分析嗎?
技術上可以(定期截圖 → 送 Vision API),但延遲 1-3 秒且成本高。適合非即時場景(每分鐘分析一次)。真正的即時影像分析建議用 edge AI 模型(YOLO、MediaPipe)。
GPT-5.4、Claude、Gemini 到底怎麼選?
簡單規則:純看圖任務選 Claude Sonnet 4.6(圖表、手寫、UI 分析最強);要處理影片或音訊選 Gemini 3.1 Pro(唯一原生支援 2 小時長影片);需要語音輸出或完整端到端客服選 GPT-5.4(TTS + Whisper + Vision 一條龍)。多數實務場景你會用到兩家以上。
圖片 detail: high 和 low 差多少?
low 固定消耗 85 tokens(約 $0.0003),只能辨識大致內容。high 依原圖尺寸切成多個 512×512 tile,每個 170 tokens,一張 1024×1024 約 765 tokens。若只是要判斷「這張圖有沒有人」用 low 就夠,要讀收據細項、圖表數字一定要 high。
PDF 怎麼處理最划算?
Claude Sonnet 4.6 的原生 PDF 上傳最省——直接上傳一個 50 頁的財報只要幾毛錢。GPT 和 Gemini 會把 PDF 轉成圖片(每頁一張),成本會是 Claude 的 5-10 倍。但若 PDF 是掃描檔或有複雜圖表,轉圖反而辨識率較高。建議:可選取文字的 PDF 交給 Claude,掃描檔交給 Gemini。