📄 在线说话人日志如何数准人数:候选池与确认后输出
英文题目:Toward accurate speaker inventories for online speaker diarization
标签:#说话人分离标注 | #说话人计数 | #流式处理 | #信号处理
评分:6.8/10 | 创新 1.2/2 | 技术严谨 1.2/1.5 | 实验充分 1.3/1.5 | 清晰度 0.8/1 | 影响力 1/1.5 | 开源 0/1.5 | 可复现 0.3/0.5 | 工程/实践 1/1.5
👥 作者与机构
- Youngki Kwon:机构信息未在 arXiv HTML 中可靠披露
- Hee-Soo Heo:机构信息未在 arXiv HTML 中可靠披露
- Minjae Lee:机构信息未在 arXiv HTML 中可靠披露
- Bong-Jin Lee:机构信息未在 arXiv HTML 中可靠披露
📌 核心摘要
在线说话人日志要求音频到达后按0.5 s嵌入步进顺序输出说话人标签,系统内部维护的说话人清单会被实时字幕直接读取,固定容量超过上限即合并,未见说话人混在单个缓存中也会混为一人,而无界距离注册又会把噪声和轮换边界拆成多余说话人。基线DC-OST按最近质心余弦距离路由嵌入,距离不大于自适应阈值则归入已注册说话人并立即输出其标签,否则放入单个缓存并先输出下一个未用编号,注册则要等缓存大小达到预设K才以中值向量为质心建立新说话人。改进保留该路由规则,把单个缓存换成相互隔离的候选说话人池,每步嵌入仍立即放入一个候选,但候选只有累积到足够多个相互兼容嵌入后才注册为正式说话人。注册条件满足前,其对应输出被暂存在有序队列中等待确认或否定,只有候选确认后标签才放行,超时则以后备标签离开,队首已决输出也需按步进顺序等待,从而把延迟只花在未定输出上。与已有方法的关键差异在于注册不再由单次远距离观测触发,未确认身份不提前进入输出,候选池解决交替出现的新说话人混叠,延迟队列解决首个片段误标。九个数据集宏观平均下说话人计数误差从225.0%降到20.7%,宏观错误率从17.59%降到15.95%,VoxSRC-23上同时为参比系统最低。跟踪器额外等待的算法延迟只度量队列滞留,全部输出平均增加0.109 s,其中被暂存的8.6%平均等待1.27 s、观测最大4.16 s,前端0.5 s基础延迟各变体共有。该结论不适用于重叠段,单标签输出在会议数据上仍有较高漏检下限。
🔗 开源与复现资源
本次未形成可展示的已核验资源记录,开放状态尚未核实。
可达状态仅表示本次链接检查结果,不代表许可证、本文权重或运行复现已验证。
🧭 深度解读
在线日志要输出什么:边听边给谁在说话
说话人日志要回答谁在什么时候说话。在线系统要求按时间顺序输出标签,而且等待时间有上界。对刚进入语音领域的同学,可以把输入想成连续音频流,目标是给每个语音时刻贴一个说话人编号,还要保留人数和出场顺序这些应用直接会读的信息。论文把在线过程中已经承认的说话人集合叫做说话人清单,它不是事先注册好的,而是一边听一边长大的。直播字幕每出现一个新人就多列一个人,读的正是这个清单。
清单里每个身份背后一般有一个质心向量,随着该说话人积累更多观测而更新。嵌入步骤每 0.5 秒在检测到的语音上取一次,窗口长 1.5 秒,所以相邻步骤在音频时间上可能隔得很远。基线跟踪器 DC-OST 就是这样一个基于嵌入的跟踪器,它没有固定说话人容量,能容纳很多人的录音。
说话人清单 × 说话人容量: 说话人清单指在线过程中已经承认并可对外输出的说话人集合,应用直接读取它来枚举出现了谁;说话人容量指系统事先固定好的最多能返回几个人。二者搭配的意义在于,容量决定了清单能不能继续长大,容量固定则人多时只能合并,容量开放则注册门槛决定了清单会不会分裂。
理解清单很关键,因为一旦标签发出就不能修改,注册时证据不足以后也无法撤销。已有设计的区别主要就在什么时候往清单里加人,论文后面所有改动都围绕这个触发条件展开。
已有路线为什么数不准:定死名额与只看距离
论文把现有做法分成两类。第一类事先定死说话人容量,也就是系统一生最多能返回几个人。表现形式可以是输出槽位数,到达顺序缓存满了就覆盖最老的,也可以是训练决定的吸引子数量预算,分块设计则把预算用在每个块而不是整段录音。第二类是基于嵌入的开放设计,每来一个嵌入就和已有清单比,找不到足够近的就接纳为新说话人。论文比较的 3 个公开系统正好覆盖这两种思路。
Streaming Sortformer 用了 4 个输出槽加到达顺序缓存,第五个人会覆盖最老的而不是获得新身份。LS-EEND 把吸引子序列固定为 8 并用终止标记读出有效数。DIART 不设容量,每个人保留一个表示,嵌入与所有人距离都超过常数就新建说话人。两类规则都是事先定死的。前者在真人数超过容量后必然合并,后者因为对话中不断出现距离很远的嵌入而不断分裂,噪声和说话人交界都会拆出新身份。
论文指出,过去这些结构没有统一名字,有的叫吸引子,有的叫说话人缓存、跟踪缓冲、质心或保留样本,但核心分歧都是何时加人。比较时输入、目标和在线运行阶段相同,都是流式输出不可修改标签,区别只在清单增长规则。
DER 看不见的问题:人数偏少与偏多
论文要解决的具体问题是清单的人数不准,而主指标 DER 报告不了这个方向。人数误差分 2 个方向。偏少是合并,两个人共用一个身份,放不下的语音被记成说话人混淆。偏多是分裂,一个人被摊到多个身份。论文的人数误差定义很直白,对每段录音用系统返回的不同说话人数减去参考人数得到带符号误差,合并为负,分裂为正,再取绝对值求和除以参考总人数,2 个方向都算误差而不让它们抵消。
它只量个数,不管身份对没对,对错的时间由 DER 管。DER 按人持有时间加权,不说回来了几个人。JER 虽然给每个参考说话人相等权重,提高了短说话人的权重,但仍在最优映射上打分,对个数和方向保持沉默。例子就是在多人野外视频集上,DER 最低的无界跟踪器反而人数偏多最严重,而人数最准的系统 DER 是其 2 倍多。固定容量的系统在该集上少返回四成多的人,无界基线多返回六成多的人。
这正是论文要同时报告两个轴的原因。
合并 × 分裂: 合并指两个或更多真实说话人在清单里共用一个身份,表现为人数偏少;分裂指一个真实说话人被摊到多个身份上,表现为人数偏多。二者都是人数误差的方向,论文用带符号误差区分方向,用绝对值求和避免正负抵消,再结合 DER 才能同时看到时间错了多少和人数偏向哪边。
对初学者要记住,DER 好看不等于人数对,人数对也不等于时间贴得准,两者必须一起看。
总体改动是什么:只改何时注册其余不动
方法整体流程可以沿着一个嵌入走一遍。前端用公开的流式检测器和已发布的嵌入模型,窗口 1.5 秒、每 0.5 秒一步,基础延迟 0.5 秒。跟踪器手里有已确认质心的注册表、候选池和等待队列。来了一个嵌入,先算它与所有已确认质心的余弦距离,取最近的一个。如果距离在自适应路由阈值内,就归给那个人并更新质心。
阈值随已注册人数线性增长再截断,这是沿用基线的机制,不是本文新引入的。如果距离超出阈值,就进入候选池处理:算它与每个候选成员距离的中位数,够近就加入最近候选,不够近就自立一个新候选。输出是否立刻放行取决于候选是否已定。只有集齐足够成员的候选才转正,其输出才用新身份放行,否则暂存在队列里等几步。管道其他部分都不变。
3 个变体共用前端和切分,只差决策策略:基线规则用一个共享缓冲,候选池版本把未定输出立刻用兜底身份放行,完整版本再加上等待。用同一个切分比较时,误报和漏检在 3 个变体间完全相同,差异只体现在说话人混淆上。这意味着后面看到的 DER 变化都可以直接读成混淆的变化。
候选池如何攒证据:分开存放再集齐才转正
基线有两个可改进点。第一,所有未见说话人共用一个缓冲,交替出现就会混在一个标识里,用混合的中值向量注册成一个人。第二,每个决定只看一个观测,单个离群点距离超阈值就立刻打出下一个未用编号并开始一个新说话人。候选池同时回答这两点。它用多个候选代替单个缓冲,同一注册尺寸现在对每个候选分别适用。
被注册表拒绝的嵌入按成员距离的中位数与每个候选打分,在接纳阈值内就加入最近者,否则新开一个候选。这样交替出现的两个未见说话人会在不同候选中各自积累。只有当某个候选成员数达到注册尺寸才注册,提交的质心是这些成员的归一化均值。因为每个成员加入时都通过了接纳检验,这几个嵌入是同一个人的累积证据,而不是碰巧没命中注册表的几个嵌入。低于门限的候选不获得任何标签,单个噪声观测不会在清单留下痕迹。
除第一个说话人直接用首个嵌入初始化外,之后任何说话人都要等某个候选集齐多个嵌入。长期停留在单个成员且超过音频时长阈值的候选会被丢弃,运行点取注册尺寸为 5,接纳阈值为 0.45,丢弃时间为 30 秒。
候选说话人池 × 证据门控注册: 候选说话人池指把未被已有清单接纳的嵌入按候选分开存放的结构,每个候选各自积累;证据门控注册指只有当某个候选集齐足够多个互相兼容的嵌入才把它转正为正式说话人。二者搭配把原来共用一个缓冲、攒够数量就注册的规则,改成按候选分别攒证据,从而让交替出现的未见说话人不再混成一个人,也让单个噪声点留不下痕迹。
这样人数就被证据量管住了,而不是被一次距离判断定死,分裂因此大幅减少。
确认后才输出:等几步再决定用新身份还是兜底
有了候选池,还要决定输出何时能用新身份。基线是缓冲攒够前就先打出下一个编号,本文反过来,候选未定时先压住输出。每个进入候选的输出在队列里记两个可能身份:兜底身份是注册表中最邻近的已确认说话人,临时身份是它所属候选未来转正后的编号。候选能否转正一般几步内就有分晓,所以队列只等很短。
等待由延迟预算控制,每步更新注册后再检查队首:候选已注册就用新身份放行,等到预算仍未注册就用兜底身份放行,超时后不再回看,若候选后来才转正,这段就记成合并。队列按步骤顺序释放,已路由的输出到即决,只会排在更早的未定输出后面等待,论文把这叫队头阻塞,预算作用在队首而不是整条队列。运行点预算取 2.0 秒,正好对应集齐多个成员所需的步数。
前端边界共享,所以跟踪器的全部代价就是这一段暂存,只影响小部分输出,全部输出平均多 0.1 秒左右,被压住的输出平均多 1 秒多,观测最大值是超时落在语音间隙、在下一个嵌入步才释放。
确认门控标签分配 × 等待队列: 等待队列指把归属未定候选的输出按顺序暂存起来的结构,每个条目同时记着已确认的最邻近说话人和候选的临时身份;确认门控标签分配指等候选转正就用新身份放行,到时仍未转正就用兜底身份放行,不让未确认的说话人先出现在输出里。二者搭配把前瞻只花在真正需要的地方,而不是对每个输出固定加延迟。
关键保证是没有说话人在被确认前就出现在输出里,猜的只是超时那一小部分兜底输出。
没有训练新模型:调用现成前端并固定阈值
这篇工作没有训练新的说话人模型,需要说清楚没训练什么、实际计算是什么。嵌入模型用已发布的检查点,在另外两个大规模说话人数据集上训练过,这两个都不是 9 个评测集。检测器用公开流式检测器,是小参数因果结构,零前瞻。跟踪器的注册尺寸、接纳阈值、延迟预算、丢弃时间和自适应路由阈值的常数,都在两个开发集上按 DER 与人数误差折中固定,评测集不进入这些选择。
运行时没有梯度更新,只有质心随观测累积的平均更新、候选成员集合的加入与删除、队列的压入与弹出。基线注册用缓冲的中值向量作质心,新方法用候选成员的归一化均值作质心。参数冻结在这里只意味着阈值和尺寸固定,不推出系统输出确定,因为输入嵌入和到达顺序本身在变。缺失的信息也要点名:论文没有报告训练资源消耗,推理开销只以算法延迟分布给出,不是墙钟时间。
复现时不需要重新训练嵌入模型,重点是把检测操作点、切分规则和跟踪器阈值对齐。
在什么数据和规则下测:九个集与两种切分
评测用 9 个公开集共 1907 段录音。DIHARD 一到三代覆盖 11 个领域,声学最难,每段 1 到 9 人且多在 4 人以下,有中等重叠。VoxConverse 和 VoxSRC 系列是野外视频,正是本文关心的多人情况,每段 1 到 28 人,重叠最少。AMI 和 AliMeeting 是英语和普通话会议,AMI 除一段外都是 4 人,AliMeeting 是 2 到 4 人,重叠最多。与现有系统的对比用其中两个挑战集的评测集,公开产物按同样协议重跑,DER 和人数误差一起打分。
指标方面,DER 与其误报、漏检、混淆分量用百分比表示,差异用百分点。延迟是算法延迟,一个输出指一个 0.5 秒嵌入步的标签,附加延迟指队列把它压住超过基线规则放行时刻的时间。重叠下限也要交代:本文跟踪器每步只出一个标签,天然漏掉重叠语音,而对比系统按各自重叠感知输出打分,所以每个数据集都报告单标签漏检下限。 collar 方面,各数据集按自家协议打分,Vox 系列用 0.25 秒,其余不用;宏观平均则把 9 个集统一在 0.15 秒下重打,所以宏观数不是各列的简单平均。
3 个变体都标注每个检测到的输出,队列在流结束时清空。
DER × 说话人数误差: DER 指按时间加权的日志主指标,包含误报、漏检和说话人混淆三部分,说话时间长的人权重更大;说话人数误差指系统返回的不同说话人数与参考人数的绝对差之和除以参考总人数,两个方向都计为误差。二者搭配才能发现 DER 最低但人数错得最离谱的情况,论文因此坚持两个轴一起报告。
公平条件是同一前端、同一协议重跑,无产物的系统只引用发表数字。
多人集上按人数分组发生了什么
下面这张按参考人数分组的图把 DER 与人数偏向拆开,适合看清 DER 看不见的分化。横轴是参考人数分组,纵轴左侧是 DER,右侧是平均带符号误差,零线表示不多不少,组大小已在图注中给出。观察时先看 DER 曲线谁随人数上升更快,再看右侧谁在零线上方分裂、谁在下方合并。
看图路径: 1. 先看横轴参考人数分组与每组录音数,再对比左图 DER 曲线谁随人数上升更快;2. 再看右图平均带符号误差零线上下谁偏合并谁偏分裂;3. 重点比较基线规则与完整方法在左图重合但右图分开的位置
论文图 1。原论文 Figure 1::“Per-speaker-count behaviour on VoxSRC-23, grouped by the number of reference speakers (197/128/58/17/13 recordings).”。
图后解释实际可见内容:左侧两条基于嵌入的跟踪器在各组几乎重合,右侧却从第一组就分开,说明 DER 相同但清单完全不同。固定槽位的系统最多返回 4 人,超过 4 人后缺口按参考数减四扩大,在 17 人以上组 DER 达到 50%。无容量系统虽无容量仍在最大组偏少。完整方法在 4 人以内接近精确,在最大组少 3 人左右,而固定容量系统少 13 人以上。未胜出项是这只是 VoxSRC-23 上的现象,不能推广到少人数集。
为把分组现象落到可核对的数字,整理下表。在 VoxSRC-23 上按参考人数分组,比较固定容量与开放跟踪器的人数偏向与 DER,指标方向都是越低越好,误差正为偏多、负为偏少。
| 分组 | 组内录音数 | DER 现象 | 人数偏向 | 容量含义 |
|---|---|---|---|---|
| 1-4 | 197 | 各方法接近 | 完整方法近精确 | 容量内尚可 |
| 5-8 | 128 | 固定容量开始上升 | 固定容量转入合并 | 容量开始不够 |
| 9-12 | 58 | 差距拉大 | 缺口随人数扩大 | 开放跟踪器仍可跟随 |
| 13-16 | 17 | 固定容量显著恶化 | 缺口继续扩大 | 多人 regime 压力显现 |
| 17+ | 13 | 固定容量达 50% | 完整方法少 3.0,固定容量少 13.5 到 16.7 | 容量上限决定偏向 |
开放跟踪器在 DER 上不随人数崩塌,但只有加了候选池与延迟的版本能在右侧保持接近零线,基线规则在右侧偏向分裂。代价是完整方法在最大组仍少 3 人,说明证据门控在极多人下偏保守。反例是固定容量系统在少人数组并不差,因此该表的结论只在人数上限未知且跨度大的条件下成立。
宏观两个轴同时改善吗:人数与时间一起看
核心宏观问题是候选池加延迟是否让人数误差降一个数量级,同时 DER 也下降,代价是多少。表前说明比较问题、公平条件和指标方向:九集宏观平均在统一 collar 下重打,比较基线规则与完整方法的人数误差与 DER,两者都是越低越好,延迟越低越好;固定容量系统少返回四成多、无界基线多返回六成多是同一问题的另一面。
| 评价轴 | 基线规则 | 完整方法 | 变化方向 | 代价口径 |
|---|---|---|---|---|
| 人数误差 | 225% | 21% | 大幅下降 | 清单由候选池决定 |
| DER 宏观 | 17.59% | 15.95% | 下降 1.64 个百分点 | 差异来自混淆 |
| VoxSRC-23 人数 | 多 63% | 最准 | 由分裂转向准确 | 需等待确认 |
| 全部输出等待 | 0 秒 | 0.109 s | 小幅增加 | 算法等待非墙钟 |
表后解释主要收益、具体代价与反例:人数误差从 225% 到 21%、DER 从 17.59% 到 15.95%、全部输出平均多 0.109 秒是全文最强的联合证据,VoxSRC-23 上同时拿到最低 DER 与最准人数。代价是等待只花在需要确认的输出上,平均值会被大量零等待稀释。未胜出项是 DIHARD III 上完整方法落后固定槽位系统约 4.6 个百分点,人数也不如固定吸引子系统,说明人数少于容量时固定容量反而占优,不能把多人数集的同时最好推广到所有集。
池与延迟各自在什么数据上起作用
消融要回答池与延迟各自在什么数据上起作用,是否必须一起用。把基线规则、只加候选池、池加延迟放在一起,看混淆与人数误差在不同数据上的变化,误报漏检三者共享,差异只看混淆,宏观为统一 collar 重打。
| 数据类型 | 只加池的混淆变化 | 再加延迟的变化 | DER 表现 | 人数误差表现 |
|---|---|---|---|---|
| DIHARD 与 AMI | 降 3.55 %p 与 2.47 %p | 增加很少 | 明显改善 | 大幅改善 |
| Vox 系列 | 升 0.18 到 0.87 %p | 降 1.17 到 1.53 %p | 先升后降 | 保持低位 |
| AliMeeting 重叠 | 池无帮助 | 基本持平 | 34.60 到 34.76 持平 | 440% 到 13% |
| 参考边界重打 | 各集混淆改善 | 进一步改善 | 九集都改善 | 基本不动 |
表后解释看到运行机制:在未见说话人会在同一缓冲交替的地方,池做了大部分工作;在 Vox 系列顺序反过来,单加池反而让混淆上升,因为真正新说话人的最初片段若不等确认就会用兜底身份出去,延迟把它拿回来。AliMeeting 是唯一池没有帮助的集,DER 持平但人数从 440% 到 13%,机制是持续双人重叠产生反复出现且互相兼容的混合嵌入,这是证据门控拒绝不了的输入。用参考边界去掉检测器误差后,9 个集 DER 都改善,残余漏检恰为各集单标签下限,人数误差基本不动,说明人数结论不依赖切分好坏。限制是无 collar 集上 DER 大头是误报漏检,跟踪器改善主要体现在混淆部分。
延迟预算花在哪里:扫到集齐步数就饱和
延迟部分要回答预算给多少就够、等待都花在谁身上。9 个集共一百多 10000 个输出放在一起,看预算扫描的宏观混淆对全部输出平均附加延迟,以及被压住的小部分按离开方式拆分,百分比占全部输出,均值与最大值为行内统计,延迟都是算法等待。
| 等待类型 | 占全部输出 | 平均附加延迟 | 最大延迟 | 去向 |
|---|---|---|---|---|
| 零等待 | 91.4% | 0 秒 | 0 秒 | 直接放行 |
表后解释先看饱和点。预算从 0 扫到 2.5 秒,宏观混淆从 5.17% 降到 4.31% 后不再下降,2.0 秒正好是候选集齐多个成员所需的步数,再加 0.5 秒也买不到东西,所以采用 2.0 秒。再看被压住的构成:等到自己候选转正、超时用兜底出去、本身已决只因排在未定输出后面被挡 3 类,其中只有超时兜底是猜。全部输出平均 0.109 秒,被压住的平均 1.27 秒,最大 4.16 秒是超时落在语音间隙、下个嵌入步才释放。限制是这是算法等待,不是墙钟,前端 0.5 秒基础延迟另计;若应用不能容忍队头阻塞,就要改顺序释放,但论文未评测该变体。
什么情况下结论不成立:重叠与少人数集
论文自己点的最清楚局限是重叠。每步只出一个标签,天然漏掉重叠语音,会议集去掉切分误差后残余的大部分仍是这类问题,下一步是每步允许多个说话人。AliMeeting 的例子说明,持续重叠下的混合嵌入会反复通过接纳检验,池也拦不住,此时 DER 持平,只有个数变好。另一个边界是少人数集。在多数录音不足 4 人的集上,固定容量反而数得更准,本文方法人数误差不如固定吸引子系统,DER 也不如固定槽位系统和引用的另一系统。
还有实现口径:对比系统按各自重叠感知输出打分,本文按单标签打分并报告下限,跨系统比较重叠部分并不完全同口径。超参数在两个开发集上折中,阈值与注册尺寸的扫描显示 DER 最优与人数最优不在同一点,换数据可能要重选。超时输出不再回看,若候选后来转正就记成合并,这部分误差随预算选择而变。阈值过松过严都会丢人数或时间,但中间一段都可用,丢弃时间则注明未调。
复现第一步做什么:先对齐切分再动跟踪器
值得尝试的时机是录音人数范围宽、上限未知且应用直接读清单,比如野外视频的多人日志;若每段人数都少于已知容量且重叠多,固定容量系统可能更合适。复现第一步是先对齐切分与打分:用同样的流式检测器操作点和 collar 规则跑出误报漏检,再接入跟踪器,这样才能让 3 个变体的差异只落在混淆上。关键信息条件要保留:嵌入每 0.5 秒一步、窗口 1.5 秒;路由阈值随注册人数自适应。
池用成员距离中位数与接纳阈值比较;注册要多个成员;队列预算作用在队首并在流末清空。运行点可直接用注册尺寸为 5、接纳阈值 0.45、预算 2.0 秒、丢弃 30 秒、自适应参数 0.45 加 0.005 乘人数截断 0.8。需要补的验证是丢弃时间的敏感性、顺序释放改为允许乱序的影响,以及在自己数据上重扫接纳阈值与注册尺寸,因为原文只在两个开发集上固定。
来源方面,本次未发现可验证的作者代码模型数据链接,不能说已公开;重跑现有系统要各自找发布产物,无产物系统只能引用。容易误解的是无训练不等于确定性,输出仍随输入顺序和嵌入噪声而变;平均延迟 0.109 秒不等于每步都只多这么多,被压住的毕竟平均多 1.27 秒。
一句话总结与取舍:用短等待换人数准确
综合看,本文把何时注册从一次距离判断改成按候选累积证据,并把标签也等到确认后再放。九集宏观人数误差降一个数量级,宏观 DER 降 1.64 个百分点,其中池贡献 0.77 个百分点,延迟再贡献 0.87 个百分点;清单由池决定,延迟只重分配标签。代价是小部分输出要等,平均到全部输出是 0.109 秒。适用条件很明确:人数上限未知、多人交替出现时收益大。
持续重叠多、人数少而容量已知时优势减弱。初学者复述关键步骤可以记成路由比对、候选分开攒、集齐才转正、未定先排队,4 个动作缺一不可。例子可以帮助记忆:把候选池想成给每个疑似新人单独建一个文件夹,攒够 5 张互相像的照片才发工牌,没有工牌就不让进输出名单,但这只是帮助理解的比喻,真正的依据还是距离中位数、数量门限和队列等待的实测结果。
📎 论文与评分元数据
排名:前50% | 文档类型:方法研究 | arXiv 原文
⚖️ 评分明细
评分属于系统判断,不是论文实验结果;八维数值与总分见页首,原始审计记录保留在后端。
评分规则:type-aware-v1
评分模型:muse-spark-1.3-contributor
评分请求协议:openai_responses