GPT-Live-1 进入 API:全双工语音 Agent 的工程指南
语音 Agent 过去两年一直被困在一个尴尬的架构里:先把用户的话转成文字(STT),再交给大模型思考(LLM),最后把答案合成语音播出去(TTS)。三段流水线串起来,延迟叠延迟,打断几乎没法自然处理——用户说了一半,系统还在念上一句。2026 年 9 月 10 日,OpenAI 把 GPT-Live-1 放进 API,定价每分钟 0.05 美元,走的正是全双工路线:同一时刻既能听也能说,能对停顿、打断和「嗯、好」这类反馈做出反应。这不是一个更快的语音模型,而是把语音 Agent 的架构整个换掉了。
"全双工:边听边说,而不是轮流说话"
一、9 月 10 日到底发布了什么
GPT-Live-1 从 ChatGPT Voice 走进 API,官方描述里几个关键词值得逐字读:全双工(full duplex)、更强的指令遵循、自定义音色、电话(telephony)支持。它自带语音转写与回复文本,也就是说你不再需要自己拼一套 STT 组件来做日志与合规。安全方面,通过 ChatGPT Voice 和 API 生成的音频会带上 SynthID 水印,OpenAI 的公开验证工具可以检测这种出处信号,并且开放了 API 层面的校验入口,方便团队把「这段音频是不是 AI 生成」纳入自己的流程。
// 1) Open a full-duplex session and pick a voice. The model listens
// and speaks concurrently; you never wait for a "turn" to end.
const session = await fetch("https://api.openai.com/v1/realtime/sessions", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.OPENAI_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-live-1",
voice: "alloy-custom",
instructions: "You are a support agent. Keep replies under 20 seconds.",
input_audio_transcription: { model: "whisper-1" }, // built-in transcripts
}),
}).then((r) => r.json());
console.log("session", session.id, "expires", session.expires_at);二、全双工为什么不只是「快一点」
三段式架构里,每个环节都必须等上一个环节结束,延迟是加法。全双工把这件事变成并发:模型一边接收音频流,一边生成音频流,中间不再有「轮次」这个强边界。真正被解锁的能力有三个。第一是自然打断——模型能分辨用户是插话还是附和。第二是等待策略,用户思考时沉默变长,系统不必急着填空。第三是多任务并行:会话由语音模型维持,而真正耗时的动作交给后面一个 Agent 去做,用户在等待时依然有人陪着说话。如果你做过轮次式的语音机器人,就知道它背后藏着一笔隐形成本:一个专门跟踪「现在轮到谁」的状态机,外加一个待播队列。全双工把状态机删掉了,同时也删掉了你的安全网——轮次式设计里模型永远不会在用户说话时开口,所以不会出现抢话;现在这条规则得你自己守,靠播放门控和明确的抢话策略。
// 2) Interruptions are events, not exceptions. React to the stream.
function wire(ws, { onUserSpeech, onModelSpeech }) {
ws.on("message", (raw) => {
const evt = JSON.parse(raw);
switch (evt.type) {
case "input_audio_buffer.speech_started":
// user cut in: stop local playback immediately, do not finish the sentence
stopPlayback();
onUserSpeech();
break;
case "response.audio.delta":
queueAudio(evt.delta);
onModelSpeech();
break;
case "response.done":
logTurn(evt.response_id, evt.usage);
break;
}
});
}三、把推理委托出去,而不是塞进语音模型
一个容易踩的坑是把语音模型当成全能大脑:让它查数据库、算价格、跑长链推理。正确的做法是让 GPT-Live-1 只负责「对话」,把深度推理与动作交给后端 Agent——官方文档明确说,你可以自选后端模型、工具和 Agent 框架,GPT-Live-1 负责把对话维持住,并把更重的推理和动作委托出去。这条边界一旦划清,语音层就能保持低延迟,而复杂任务在自己的 Agent 里慢慢跑,跑完再回到对话层播报。
// 3) Keep the conversation alive while the backend agent does the work.
async function handleToolCall(call, voice) {
// fire the slow work behind the voice layer
const job = await backendAgent.start({
task: call.name,
args: call.arguments,
traceId: call.id,
});
// never let the caller sit in silence
voice.say("Let me pull that up for you.");
const result = await job.done();
voice.say(result.spokenSummary); // voice layer only receives the summary
return result.payload; // structured data stays server-side
}四、算清单价:每分钟 0.05 美元意味着什么
按分钟计费对语音产品来说是个重要信号:成本随「通话时长」线性增长,而不是随 token 数抖动。一通 6 分钟的电话大约是 0.3 美元,1000 通就是 300 美元——这个数字让「高峰期并发」「平均通话时长」变成最该监控的两个指标。反过来说,如果你的后端 Agent 还会额外烧 token,那真实成本是语音费加后端推理费。所以上线前一定要把两笔账分开算,并为「用户开着麦克风沉默」这种情况设一个自动挂断阈值。另外要盯分布而不是均值:账单通常被少数超长通话主导,所以告警应该设在通话时长 P95 和「超过上限仍未结束」这两项上。
# 4) Per-minute economics: two separate bill lines, not one.
VOICE_PER_MIN = 0.05 # USD, GPT-Live-1
BACKEND_IN = 3.0 / 1_000_000 # USD per input token
BACKEND_OUT = 15.0 / 1_000_000
def call_cost(minutes, backend_in, backend_out):
voice = minutes * VOICE_PER_MIN
agent = backend_in * BACKEND_IN + backend_out * BACKEND_OUT
return round(voice + agent, 4), round(voice, 4), round(agent, 4)
total, voice, agent = call_cost(6.0, 40_000, 3_000)
print("total", total, "| voice", voice, "| backend", agent)
# Guard the silent-mic case: cap duration, do not bill by surprise.
MAX_MINUTES = 30五、音频出处与合规:别等出事才补
语音是最容易被伪造和滥用的一种媒介。GPT-Live-1 自带转写,意味着你的通话记录天然有文本版本,审计与质检都方便;SynthID 水印与验证 API 则给了你一个「判断出处」的工具。实际做法是:在入库时同时保存音频与转写,记录水印校验结果,并把「这通电话是真人还是 AI」作为元数据放进合规链路。对做客服、医疗与金融的场景,这不是加分项,而是准入门槛。
// 5) Provenance: store audio + transcript + watermark verdict together.
async function recordTurn(turn) {
const verdict = await verifyProvenance(turn.audioUrl); // SynthID check
await db.calls.insert({
callId: turn.callId,
audioUrl: turn.audioUrl, // never store audio without its text
transcript: turn.transcript, // GPT-Live-1 gives this to you
watermark: verdict.status, // "openai-synthid" | "none" | "unknown"
generatedBy: "gpt-live-1",
checkedAt: new Date().toISOString(),
});
}六、上线清单
五条规则。第一,把语音层和后端 Agent 的职责写进架构图,语音层不许直连生产数据库。第二,给会话设最长时长与静默阈值,成本和安全一起管。第三,所有工具调用走后端 Agent,语音层只拿到结果,不拿凭据。第四,音频与转写成对落库,附上水印校验结果。第五,先用真实用户语料做一轮打断测试——合成语音里的「嗯、对、等一下」比你想象的更常见,处理不好就会显得很蠢。全双工不是换了个模型,是换了一套约束条件;把约束写清楚,它才会显得自然。还有一个意想不到的指标值得记录:打断率。它突然升高,几乎总意味着提示词变长了、模型开始长篇独白,用户因为已经听到想要的答案而抢话。
"打断是事件,不是异常"
"音频与转写成对落库,附出处校验"
📌 常见问题 FAQ
GPT-Live-1 和以前的语音模型到底差在哪?
差在架构。以前是 STT→LLM→TTS 三段串行,延迟相加,打断很难自然处理;GPT-Live-1 是全双工,同一时刻既能听也能说,能响应停顿、打断和简短附和,并且把深度推理委托给一个可选的后端 Agent。
每分钟 0.05 美元贵吗?
要看通话时长。6 分钟约 0.3 美元,1000 通约 300 美元,是可预测的线性成本;但如果后端 Agent 还会烧 token,真实成本要加上后端推理费,两笔账必须分开算。
我需要自己搭 STT 吗?
不需要。GPT-Live-1 自带语音转写与回复文本,可以省掉自建 STT 组件,日志、质检与合规都直接可用。
生成的音频能识别出处吗?
可以。通过 ChatGPT Voice 和 API 生成的音频带有 SynthID 水印,OpenAI 提供公开验证工具和 API 校验入口,方便把出处检查纳入你的流程。
最该先防的坑是什么?
把语音模型当成全能大脑、让它直连生产数据库。正确做法是语音层只管对话,所有工具调用与凭据留在后端 Agent。