Appearance
语音模型专题
版本:
v1.3最后更新:
2026-07-09适用对象:正在做语音助手、会议转写、呼叫中心、语音陪练、无障碍朗读、电话机器人、音频检索和实时语音交互的产品、研发与平台工程同学
语音系统经常给人一种错觉:
- 输入是声音,输出还是模型结果,所以只是文本系统外面多包了一层音频
真实项目里,这个理解通常会很快失效。
因为语音系统和文本系统最大的区别在于:
- 输入是连续流,不是离散表单
- 用户会停顿、打断、重复、改口
- 延迟对体验影响更直接
- 噪声、口音、回声、设备差异会不断扰动整条链路
根据 2026-07-09 复核可访问的 OpenAI Audio and speech 与 Realtime and audio 当前官方资料,可以先建立一个关键共识:
语音系统真正要解决的不是“会不会转写或说话”,而是怎样把音频输入、会话控制、工具调用、延迟预算、连接方式和评测闭环接成一套稳定体验。
1. 先把语音系统拆成四类任务
OpenAI 当前 Audio and speech 指南把音频应用拆成几种核心模式:
- audio input
- audio output
- text transcript
- realtime session
结合工程实践,常见任务可以拆成四类:
1.1 Speech to Text
适合:
- 字幕
- 会议纪要
- 电话录音分析
- 搜索与检索
1.2 Text to Speech
适合:
- 播报
- 配音
- 语音回复
- 无障碍朗读
1.3 Speech to Speech
适合:
- 语音助手
- 实时客服
- 口语陪练
- 设备语音交互
1.4 Speech Translation
适合:
- 同传
- 双语客服
- 跨语种陪练
如果这几类任务一开始没有拆开,后面很容易发生链路混乱。
2. request-based、realtime session 和“给现有聊天加音频”不是一回事
OpenAI 当前文档已经把音频路线拆得很清楚:
request-based audio APIsrealtime sessionsmultimodal chat completions
这三个入口解决的问题不一样。
2.1 更适合 request-based
适合:
- 音频文件转写
- 批量字幕
- 会议录音离线处理
- 文本转语音播报
特点:
- 输入边界清楚
- 可接受稍高时延
- 更容易重试、回放和审计
2.2 更适合 realtime
适合:
- 实时语音助手
- 低延迟电话机器人
- 连续翻译
- 边说边转写
特点:
- 输入是持续流
- 需要会话状态
- 用户随时可能打断
- 时延直接影响主观自然度
2.3 “给现有文本聊天加音频”更像增量改造
OpenAI 当前 Audio and speech 文档还明确提到:
- 如果你已有基于聊天的文本应用,也可以给它加音频输入输出
- 当前这类音频聊天模式要用支持音频的 chat 模型
这条路线更适合:
- 现有文本客服加语音入口
- 已有知识助手补语音输入
- 先验证语音入口,而不是先做完整 voice agent
一句话理解:
有完整文件就偏 request-based,有持续说话就偏 realtime,只是给现有聊天补音频则更像现有聊天流的模态扩展。
3. 语音系统的核心链路不是一条,而是四条
3.1 转写链路
text
Audio
-> preprocess
-> transcription
-> punctuation / formatting
-> domain normalization
-> storage / search3.2 语音对话链路
text
Microphone
-> VAD / turn detection
-> transcription or speech reasoning
-> LLM / tools
-> response planning
-> speech generation
-> playback3.3 翻译链路
text
Live audio
-> streaming ingest
-> translation session
-> translated audio / transcript deltas
-> operator or user playback3.4 语音运营链路
text
Audio session
-> transcript + events
-> QA / safety review
-> metrics / cost / latency analysis
-> improvement loop很多系统只关注第二条链路,却忽略第一、第三和第四条,最后就会出现:
- 体验问题很难定位
- 真实错误没法复盘
- 无法知道问题在转写、推理、翻译还是播放
4. realtime 里其实又分三种 session,不要全混成“语音对话”
这是当前官方资料里最值得先补进团队心智的一点。
OpenAI 当前 Realtime and audio 把 realtime 至少拆成三种:
voice-agent sessiontranslation sessiontranscription session
4.1 voice-agent session
更适合:
- 助手需要回应用户
- 助手需要调工具
- 助手要维护会话状态
这类 session 走标准 Realtime conversation lifecycle。
4.2 translation session
更适合:
- 应用只想持续翻译说话人内容
- 不需要标准 assistant turn 生命周期
OpenAI 当前文档明确说明:
- translation session 是连续型的
- 不使用普通 assistant turn 生命周期
- 不该等
response.create - 也不该等客户端先 commit 一个用户 turn 再开始翻译
这意味着翻译系统和普通 voice agent 根本不是一个状态机。
4.3 transcription session
更适合:
- 你只想拿 live transcript deltas
- 不需要模型生成 spoken response
OpenAI 当前文档明确建议:
- 如果要 streaming transcript deltas,用 realtime transcription session
- 如果是文件上传、request-based transcription 或偏 diarization 的工作流,则回到 speech-to-text 路线
4.4 一个最容易踩的坑
很多团队会把:
- 实时字幕
- 实时翻译
- 语音助手
都挂在一套“会话机器人”框架上。
但这三者的:
- turn lifecycle
- 触发时机
- 工具能力
- 结果形态
都不一样。
5. 连接方式应该按媒体捕获位置来选,不要按“谁更高级”来选
OpenAI 当前 realtime 文档把连接方式拆成:
WebRTCWebSocketSIP
5.1 WebRTC
更适合:
- 浏览器
- 移动端
- 直接采集或播放音频的前端客户端
如果你的应用是在用户设备上直接采音、播音,这通常是最自然的路线。
5.2 WebSocket
更适合:
- 你的服务端已经拿到了原始音频流
- 有媒体流水线、worker、呼叫系统或广播 ingest
这类场景里,WebSocket 往往比前端直连更贴近系统真实边界。
5.3 SIP
更适合:
- telephony voice agents
但当前官方资料也提醒:
- 在 translation 或 transcription 上使用 SIP 前,要先确认模型支持
5.4 更实用的选型口诀
- 浏览器 / 手机直采直放:
WebRTC - 服务端媒体流水线:
WebSocket - 电话系统:
SIP
6. Realtime 不是只管低延迟,还要管凭证、标识和 GA 事件模型
很多团队把 Realtime 工程理解成“接上 WebRTC 就完了”,这远远不够。
6.1 前端接入通常要走 ephemeral credentials
OpenAI 当前 GA 文档明确要求:
- 浏览器或移动端客户端应通过
POST /v1/realtime/client_secrets创建短期凭证 - WebRTC 会话走
/v1/realtime/calls
这意味着:
- 不应该把长期 API key 暴露到前端
6.2 safety identifier 很值得尽早接入
OpenAI 当前文档明确建议:
- 如果应用识别具体终端用户,应在 Realtime 请求里带稳定、隐私保护的
safety identifier
这对企业系统的价值很实际:
- 风险定位更容易收敛到单个用户
- 更适合做 abuse 监控和追责
6.3 这个标识不会自动从别的接口继承
官方资料还明确提醒:
- 它不会从别的 Responses API 请求自动继承到 Realtime session
也就是说:
- 你如果别处已经传了
safety_identifier,在 Realtime 里还得单独传
6.4 GA 事件模型也不能忽略
OpenAI 当前 GA 迁移说明提到:
- 要设置
session.type - 输出音频配置移到
session.audio.output - 要使用新的 response delta 事件名称
这说明很多“前端怎么听”“后端怎么记事件”的代码,在 GA 之后都不能继续沿用旧 beta 心智。
7. STT 的难点根本不只是 WER
很多团队一说语音转写,就只盯:
- WER
但企业里更常影响可用性的,往往包括:
- 专有名词
- 品牌词
- 人名地名
- 数字、金额、编号
- 中英文混说
7.1 企业里更该单独测的几类词
例如:
- 产品型号
- 客户名
- 组织名
- SKU
- 数字串
- 业务术语
7.2 转写结果不一定直接给用户看
很多场景下,转写结果还会进入:
- 检索
- 总结
- 工单分类
- 审批建议
所以转写错误的后果可能会被后续链路放大。
7.3 realtime transcription 还有“延迟-质量”拨盘
OpenAI 当前 Realtime and audio 文档明确说明:
gpt-realtime-whisper给的是可控延迟- 更低 delay 会更早给 partial text
- 更高 delay 往往能提升 transcript 质量
这意味着生产里更像真实的问题不是:
- “能不能实时转写”
而是:
- 你想要更早 partial,还是更稳 final
7.4 生产默认值一定要在真实音频上选
官方资料也明确提醒要用真实条件测试:
- 目标语言
- 口音
- domain vocabulary
如果只在安静实验室音频上调参数,线上几乎一定会出偏差。
8. TTS 的质量不只是“声音好不好听”
很多人第一次做 TTS 时,最先关注的是:
- 声音自然不自然
但产品上更重要的常常还有:
- 发音稳定性
- 术语准确性
- 语速
- 情绪
- 可懂度
- 首包延迟
8.1 什么叫“声音好听但产品不可用”
常见情况包括:
- 读数字和专有词总出错
- 情绪不合适
- 太慢或太快
- 生成太慢,实时场景完全不可用
8.2 不同产品要的不是同一种 TTS
例如:
- 会议播报要清晰与稳定
- 客服机器人要自然与低延迟
- 内容配音要更强风格控制
所以不要把所有 TTS 需求都当成一个任务。
8.3 当前官方路线还强调“可流式返回”
OpenAI 当前 Audio and speech 文档明确说明:
- speech generation 可以边生成边回流音频
这对工程的启发很直接:
- 不是所有 TTS 都应该先整段生成完再播
9. speech-to-speech 的关键不是“把 STT 和 TTS 串起来”
OpenAI 当前音频文档明确把 speech-to-speech 定义为:
- 模型在一个低延迟 session 里同时听、推理、说
这和“先 STT、再文本推理、再 TTS”的链路虽然相关,但心智不一样。
9.1 speech-to-speech 更适合哪些场景
- conversational voice agents
- 实时客服
- 需要工具调用的口语交互
- 需要维护 session state 的连续对话
9.2 当前官方给的一个很重要建议
OpenAI 当前 realtime 文档明确建议:
- 对多数生产 voice agents,
reasoning.effort先从low开始 - 再根据延迟容忍度和任务复杂度逐步上调
这条建议很重要,因为很多团队一上来就把“更强 reasoning”理解成“更好语音体验”,但语音场景里延迟往往先把体验打垮。
9.3 语音里“先开口”通常比“想很久再说”更关键
所以更常见的稳态策略是:
- 低 effort 起步
- 先保证 turn feedback 快
- 再逐步加复杂度
10. 实时语音的本质是延迟预算和 turn 状态管理
Realtime 语音的难点往往不只是“模型能说”,而是:
- 用户在多快时间内感到系统“像在和我对话”
10.1 建议先拆预算,而不是先选模型
常见预算层包括:
- 采集缓冲
- VAD / turn detection
- 识别或理解
- 工具调用
- 语音生成
- 播放
10.2 首次可感知响应比总时长更影响主观体验
因为用户通常更敏感的是:
- 系统多久开始回应
而不是:
- 最终整段语音总共多长
10.3 translation session 更是连续流,不要拿普通 assistant turn 去套
OpenAI 当前文档明确写到:
- translation session 不用普通 assistant turn lifecycle
- 不要等
response.create - 不要等客户端 commit user turn 再开始翻译
所以翻译链路的状态机设计,不该照搬 voice agent。
11. 会话控制比模型本身更容易把体验做差
很多语音体验问题根本不是模型太弱,而是会话控制没设计好。
11.1 Turn detection
需要解决:
- 什么时候算用户说完
- 多久开始回应
- 停顿是结束还是继续想说
11.2 Interruption
需要解决:
- 用户打断时是否立刻停播
- 之前已计划的回答如何取消
- 是否要保留已执行的工具结果
11.3 Session state
需要解决:
- 会话历史如何延续
- 哪些中间状态要保留
- 哪些状态在租户 / 用户切换后必须失效
11.4 事件对象最好单独标准化
更像生产系统的语音会话日志,至少可以保留:
session_idturn_idaudio_chunk_countvad_boundary_countbarge_intool_wait_msfirst_audio_delta_msfinal_task_status
这也是为什么 realtime 语音的系统工程难度往往高于同等复杂度的文本助手。
12. 语音系统里的工具调用要更保守
语音比文本更容易误触发,因为:
- 识别有误差
- 用户可能改口
- 对话更连续
所以语音系统里对工具调用通常要更保守。
12.1 低风险自动执行
适合:
- 只读查询
- 一般性检索
- 无副作用摘要
12.2 中风险二次确认
适合:
- 外发消息
- 预约调整
- 表单提交
12.3 高风险必须审批
适合:
- 转账
- 改权限
- 导出敏感数据
- 删除记录
语音系统里,用户听到确认与真正执行之间的边界一定要做得比文本更清楚。
13. 语音任务怎么评测才像生产系统
13.1 转写类
适合看:
- WER / CER
- 术语识别正确率
- 数字与专有词准确率
- final transcript 稳定性
13.2 语音生成类
适合看:
- 自然度
- 可懂度
- 发音一致性
- 首包延迟
13.3 实时交互类
适合看:
- turn 成功率
- interruption 成功率
- 首次响应时延
- 任务完成率
- tool wait 期间沉默过长比例
13.4 运营类
企业里更值得额外看:
- 人工转接率
- 误触发率
- 成本
- 故障回放覆盖率
- safety identifier 覆盖率
13.5 发布门禁最好至少分三层
必过门禁:高风险动作确认、误执行率、工具越权软门禁:平均延迟、首包延迟、人工转接率观察门禁:新口音、新噪声场景、新设备类型
14. 企业里更常见的失败模式
14.1 只做 Demo 环境,不测真实噪声
上线后通常会立刻暴露:
- 口音
- 麦克风质量
- 环境噪声
- 回声
14.2 把实时语音当成文本系统加一层 ASR/TTS
这样最容易忽略:
- turn detection
- interruption
- 延迟预算
- 连接方式和会话凭证
14.3 把翻译、转写、voice agent 混成同一条 session 状态机
这会让:
- 生命周期
- 事件模型
- 工具策略
一起变乱。
14.4 高风险动作没有二次确认
语音系统里这是非常危险的设计。
14.5 不记录会话事件
这样出问题时很难知道:
- 是识别错了
- 决策错了
- 还是播放和打断错了
15. 语音系统的实践建议
15.1 先区分离线和实时
不要试图用一条链同时解决全部场景。
15.2 先区分 voice-agent、translation、transcription 三种 session
不要继续用“实时语音”一个词概括全部产品。
15.3 先建术语表和高风险词表
企业语音项目里,这往往比“再换个模型”更快改善体验。
15.4 先定延迟预算
没有预算就很难知道该优化哪一层。
15.5 先想清人工兜底
尤其在客服、审批、电话机器人场景里,人工接管不是可选项。
15.6 前端直连场景先把短期凭证和安全标识接好
否则很容易后补时改动一大片接入链路。
16. 推荐搭配阅读
17. 重点官方资源
以下资源在 2026-07-09 复查时可访问: