
語音 AI 代理微調:Vapi、ElevenLabs 和本地模型
運行在 GPT-4 上的語音 AI 代理每分鐘對話花費 $0.10-0.30。微調的本地模型將成本降至幾乎為零。以下是如何構建不會讓你每次通話都破產的語音代理。
語音 AI 代理市場已經爆炸式增長。Vapi、ElevenLabs、Retell、Bland.ai——現在有數十個平台承諾為客戶支援、預約、潛在客戶資格認定和外撥銷售提供對話式語音代理。代理商在幾小時內就為客戶搭建起語音機器人。演示電話聽起來令人印象深刻。
然後發票到了。
每月處理 1,000 個通話、平均每次通話 4 分 鐘的單個語音 AI 代理,僅 LLM 骨幹成本就高達 $400-$1,200/月。這還不包括 STT、TTS、電話和平台費用。每月 10,000 次通話時,你要看的是 $4,000-$12,000——僅僅是讓語言模型決定下一步說什麼。
LLM 骨幹是昂貴的部分。而對於絕大多數語音代理使用案例,GPT-4 是嚴重的過度殺傷。
語音代理架構
每個語音 AI 代理遵循相同的管道:
- 語音轉文字(STT): 將呼叫者的音頻轉換為文本(Whisper、Deepgram、AssemblyAI)
- LLM 處理: 根據轉錄、上下文和指令生成代理響應
- 文字轉語音(TTS): 將響應文本轉換回音頻(ElevenLabs、PlayHT、XTTS)
STT 和 TTS 步驟相對便宜——Deepgram 每分鐘 $0.006,ElevenLabs 每分鐘 $0.01-0.03(取決於你的計劃)。LLM 步驟是錢花的地方。
典型的語音對話每輪生成 500-2,000 個 token,每次通話有 10-30 輪。這是每次對話 5,000-60,000 個 token。按 GPT-4o 定價(輸入/輸出每百萬 token $2.50/$10),一次有 20 輪的 4 分鐘通話僅 LLM 推理就花費約 $0.15-0.40。
微調的本地模型將 LLM 成本降至實際上為零。
為什麼語音代理非常適合微調
語音代理對話的範圍出乎意料地窄。牙科診所的預約代理可能只處理 15-20 種不同的對話模式:
- 安排新預約
- 重新安排現有預約
- 詢問保險接受情況
- 詢問辦公時間
- 請求方向指引
- 處理緊急情況
- 有禮貌的閒聊和問候
這是一個分類和響應生成任務——正是微調的 7B 或 8B 模型匹配 GPT-4 品質的工作類型。代理不需要推理新問題或從不同領域綜合信息。它需要識別呼叫者的意圖,從上下文中提取正確的信息,並生成自然的響應。
小型模型的延遲優勢
語音代理有嚴格的延遲要求。呼叫者期望在 300-800ms 內得到響應。超過 1 秒就感覺不自然。超過 2 秒,人們開始說「喂?你還在嗎?」
這是小型模型實際上比雲 API 有優勢的地方:
| 設置 | 首個 Token 時間 | 完整響應(平均) |
|---|---|---|
| GPT-4o 通過 API | 200-600ms | 800-2,000ms |
| GPT-3.5 通過 API | 150-400ms | 500-1,200ms |
| 微調 8B(本地,RTX 4090) | 30-80ms | 150-400ms |
| 微調 3B(本地,RTX 3090) | 15-40ms | 80-250ms |
本地推理完全消除了網絡往返時間。對於每 100ms 都很重要的語音代理,在本地硬體上運行微調模型產生明顯更自然的對話。代理響應速度比人類更快——這反直覺地讓它聽起來更像人類,因為沒有尷尬的沉默。
從對話轉錄構建訓練資料
語音代理模型最好的訓練資料是真實的對話轉錄。如果你已經在 GPT-4 上運行語音代理,你每天都在積累大量的訓練資料。
以下是流程:
第一步:收集轉錄
從你的語音平台匯出對話日誌。Vapi 通過其 API 提供完整的對話轉錄。Retell 和 Bland.ai 有類似的匯出功能。你需要包括系統提示和工具調用在內的完整輪流轉錄。
第二步:過濾品質
不是每次對話都是好的訓練資料。過濾以下條件:
- 成功結果: 代理實現目標的通話(預約完成、問題回答、潛在客戶資格確認)
- 自然流程: 沒有過多重試或混亂的對話
- 代表性覆蓋: 確保包含所有主要對話類型
通常,60-70% 的對話是好的訓練候選者。從 1,000 次總通話中,預計有 600-700 個可用的轉錄。
第三步:格式化為訓練對
將每次對話轉換為你的目標模型所期望的聊天格式:
{
"messages": [
{"role": "system", "content": "你是 Downtown Dental 的預約助手..."},
{"role": "user", "content": "你好,我想預約"},
{"role": "assistant", "content": "很高興幫您安排預約..."},
{"role": "user", "content": "你們接受 Delta Dental 嗎?"},
{"role": "assistant", "content": "是的,我們接受 Delta Dental PPO 和 Premier 計劃..."}
]
}
第四步:添加邊緣案例
用邊緣案例的合成範例補充你的真實轉錄:
- 沮喪或困惑的呼叫者
- 代理需要說「我不知道」或轉接人工的通話
- 同時請求(「我需要重新安排預約,也想問關於我的賬單」)
- 代理應優雅地偏轉的離題請求
500-1,000 次對話的資料集通常足以進行語音代理微調。更多資料有幫助,但對於單一目的代理,超過 1,000 個範例後回報遞減。
規模化成本比較
以下是不同規模級別的數字。假設平均通話時長 4 分鐘,每次通話 20 輪,每次對話約 30,000 個 token。
每月 1,000 次通話
| 組件 | GPT-4o 代理 | 微調 8B 代理 |
|---|---|---|
| LLM 推理 | $400-$1,200 | $0(本地) |
| STT(Deepgram) | $24 | $24 |
| TTS(ElevenLabs) | $99-$330 | $99-$330 |
| 硬體/託管 | $0 | $50-$100(雲 GPU) |
| 每月總計 | $523-$1,554 | $173-$454 |
每月 10,000 次通話
| 組件 | GPT-4o 代理 | 微調 8B 代理 |
|---|---|---|
| LLM 推理 | $4,000-$12,000 | $0(本地) |
| STT | $240 | $240 |
| TTS | $330-$990 | $330-$990 |
| 硬體/託管 | $0 | $150-$300 |
| 每月總計 | $4,570-$13,230 | $720-$1,530 |
每月 100,000 次通話
| 組件 | GPT-4o 代理 | 微調 8B 代理 |
|---|---|---|
| LLM 推理 | $40,000-$120,000 | $0(本地) |
| STT | $2,400 | $2,400 |
| TTS | $3,300-$9,900 | $3,300-$9,900 |
| 硬體/託管 | $0 | $500-$1,500 |
| 每月總計 | $45,700-$132,300 | $6,200-$13,800 |
在每月 100K 次通話時,微調模型每月節省 $39,500-$118,500。經濟學並不微妙。
架構:替換 LLM 骨幹
替換很簡單。你的語音代理架構保持不變——STT、LLM、TTS——你只需替換 LLM 層。
選項 A:Ollama + OpenAI 相容 API
大多數語音平台讓你指定自定義 LLM 端點。通過 Ollama 運行你的微調模型,它暴露 OpenAI 相容的 API:
ollama serve
# 模型可在 http://localhost:11434/v1/chat/completions 訪問
將 Vapi 或你的自定義語音管道指向 http://your-server:11434/v1/chat/completions 而不是 https://api.openai.com/v1/chat/completions。請求格式是相同的。
選項 B:vLLM 用於高吞吐量
如果你處理超過 50 個並發通話,Ollama 的單請求處理成為瓶頸。vLLM 提供帶有連續批處理的批量推理——它可以在單個 GPU 上處理數百個並發請求:
python -m vllm.entrypoints.openai.api_server \
--model ./fine-tuned-voice-agent \
--max-model-len 4096 \
--gpu-memory-utilization 0.9
選項 C:帶雲端回退的混合方案
對於適合你的微調模型訓練分佈的 90% 通話運行本地推理。將不尋常或複雜的通話路由到 GPT-4 作為回退。你在邊緣案例上保持品質的同時獲得大部分成本節省。
偵測很簡單:如果模型的置信度分數低於閾值,或者如果對話超過一定輪數,則升級到雲模型。
硬體要求
對於語音代理推理,延遲比吞吐量更重要。以下是有效的配置:
| 硬體 | 模型大小 | 並發通話 | 成本 |
|---|---|---|---|
| RTX 4090(24GB) | 8B Q4 | 5-15 | 一次性 $1,600 |
| A6000(48GB) | 8B Q8 或 14B Q4 | 10-30 | 一次性 $4,500 |
| L4(雲端) | 8B Q4 | 5-15 | $0.50/小時 |
| A10G(雲端) | 8B Q8 | 10-25 | $1.00/小時 |
一個 RTX 4090 每小時處理 10 個並發通話,平均每次通話 4 分鐘,可以處理 150 次通話——每天 3,600 次——每月 108,000 次。一個消費者 GPU。$1,600。
自托管 TTS 進一步降低成本
ElevenLabs 和 PlayHT 產生出色的語音品質,但在規模上成本累積起來。開源 TTS 模型已大大縮小了差距:
- XTTS v2(Coqui):接近人類品質,支援語音克隆,本地運行
- Piper TTS:品質較低但速度非常快,適合簡單使用案例
- StyleTTS2:帶有風格控制的高品質神經 TTS
本地運行 XTTS v2 每次通話零邊際成本。品質對於大多數語音而言大約是 ElevenLabs 的 85-90%。對於成本敏感的部署,自托管 TTS 可以從賬單中消除另外 $99-$9,900/月。
訓練微調語音代理模型
微調過程本身與任何聊天模型微調相同,帶有一些語音特定的注意事項:
- 保持響應簡短。 語音響應應該是 1-3 句話。長段落用語言說出來聽起來不自然。訓練模型要簡潔。
- 包含填充語和對話標記。 真實語音包括「當然」、「讓我查一下」、「請稍等」。這些讓 TTS 輸出聽起來自然。
- 在多輪對話上訓練。 模型需要處理來回對話,而不僅僅是單個問答對。
- 包含中斷處理。 呼叫者會打斷。訓練模型優雅地處理部分輸入。
將格式化後的資料集上傳到 Ertas 並選擇你的基礎模型——Llama 3.1 8B Instruct 或 Qwen 2.5 7B Instruct 對語音代理效果很好。根據資料集大小,微調需要 1-3 小時。通過 Ollama 部署生成的模型,並將你的語音管道指向它。