Skip to content
跳到项目内容
全部项目
公司基础设施/持续迭代

语音评测与压测平台

数据集、分布式执行与版本对比

GoReactKubernetesRedisPython
数据集管理 · 版本与参考01 / 02

项目速览

业务背景

语音模型迭代同时面对识别质量、接口协议和并发容量问题:不同环境无法共享本地文件,参考标注可能有误,多个 Worker 的启动时刻也会影响压测结论。平台通过固定数据版本、跨区域副本校验、统一结果合同和同步发压,使每次运行能追溯输入、执行与评分条件。

负责范围
  • 测试集版本、参考资格与跨区域副本
  • 协议适配、Kubernetes 调度与同步发压
  • 统一计分、样本配对与异常覆盖
  • 分类结果处理、历史查询与运行验收
200 条

中英验收样本

一次单 Worker、单并发运行中 197 条成功、3 条接口失败;中文和英文分别有 99/100、98/100 条参与计分,质量覆盖不完整。

30 / 30

两类分类接口

鉴伪与情绪各以 1 QPS 运行 30 秒,均成功 30 次并保存分类结果;尚未验证容量上限。

14 MB → 约 32 KB

历史详情分页

一次历史结果详情从全量响应改为按页读取后的页面请求体量;完整结果仍保留。

01

核心业务

语音模型的版本比较要同时控制音频、参考文本、协议和并发。参考漏标会让正确识别看起来像插入错误;跨区域拿到不同版本的音频,即使两个结果都有分数也无法可靠比较;只统计成功请求的时延又会掩盖失败。平台要解决的是让测试条件、执行过程和结论都能追溯,而不是只生成一个总分。

架构以国内控制面统一管理数据集、任务和报告,执行面按目标分为国内 Kubernetes Worker 与海外独立 EKS Job。国内对象存储保存发布源,海外使用经过内容校验的私有副本;两侧结果最终交给国内 Collector,以相同参考和计分合同生成可比较的报告。通用压测任务由 Coordinator 按模板创建并行 Job,协议与执行脚本从平台调度中分离。

01数据集管理
维护音频、参考文本与版本;研发用途和验收用途分别预检,发布后固定版本。
02测试执行
任务模板引用执行与汇总脚本,调度器按运行配置创建 Kubernetes Job。
03质量分析
按可用参考计算 CER、WER 或 DER,保留覆盖数、失败和逐样例结果。
04性能测试
按固定并发或请求速率发起负载,查看成功率、错误与延迟分布。
02

技术栈

控制台
ReactAnt DesignVite
调度与执行
GoGinKubernetes JobPython
状态与文件
Redis对象存储持久卷
评测
CER / WER / DER逐样例对比并发与延迟
03

系统架构与部署

控制台发起运行,Coordinator 创建 Worker Job;Worker 读取数据并访问被测服务,结果聚合后保存并用于对比。

控制台与调度

React / Go / Gin

管理数据集、模板、运行状态、历史与对比。

执行任务

Kubernetes Job / Worker / Python

按模板启动执行脚本,结束后收集结果并汇总。

数据与状态

Redis / 对象存储 / 持久卷

保存运行状态、轻量预览、音频、完整结果和任务文件。

跨区域执行

国内 Kubernetes / AWS EKS

按目标选择执行环境,发布版本及其副本需先核对就绪状态。

04

核心业务链路

同一数据集跨区域比较

  1. 1发布冻结版本
  2. 2副本逐文件校验
  3. 3选择协议与参数
  4. 4区域 Job 执行
  5. 5回传校验
  6. 6统一计分

国内发布版本包含样本 ID、音频和参考;海外同步完成后回读文件摘要并生成绑定版本的回执。发起时检查参考和副本资格,海外 Job 只读取实际选择的音频;预测结果回传国内后核对字节数和 SHA-256,再与冻结参考计分。副本缺失或内容变化时拒绝运行,回传不完整也不进入计分。

多 Worker 压测

  1. 1选择模板
  2. 2配置负载
  3. 3Worker 准备
  4. 4共同开始
  5. 5收集结果

Indexed Job 按固定槽位分配 Worker,下载脚本和样本后通过 Redis 屏障登记。全部槽位就绪才发布共同开始时间,并预留 3 秒传播;准备心跳过期、超时或失败会中止等待。基础设施中断可由 Kubernetes 补建,但原 Worker 已发出的请求不能撤销,因此该次运行不能作为严格恒定负载基准。

分类接口基础处理与压测

  1. 1校验音频与协议
  2. 2内网请求
  3. 3提取标签和分数
  4. 4保存逐样例结果
  5. 5汇总成功与失败

鉴伪和情绪识别使用各自的音频时长约束,适配器保留类别与分数,鉴伪额外保留阈值;统一标签后再与参考比较。测试环境中两种能力各执行 1 QPS、30 秒,均 30 次成功且结果保存完整;这是低负载链路验证,不是容量上限。

05

关键机制与取舍

01冻结数据与副本回执:让跨区域比较有共同输入

约束
数据集一边修改、一边跨区域复制时,目标端可能读到旧清单或部分音频;只看“同步成功”无法证明运行使用了当前版本。
做法
草稿与发布版本分离,发布后使用固定版本标识。受保护的同步任务逐文件复制并从目标端回读 SHA-256,完成后写入绑定源版本标记的回执;海外执行前校验发布标记和回执,缺失或不匹配直接拒绝。执行器按样本清单与选择条件下载所需音频。
效果
同一轮运行能追溯到确定的数据版本;同步中断不会留下可被误认为就绪的副本。

02同步屏障:把准备时间与压测窗口分开

约束
容器调度、脚本下载和音频准备耗时不同;各自准备好就开始会产生错峰,配置的并发不等于实际负载。
做法
Indexed Job 为每个 Worker 分配固定槽位,通过 Redis 心跳登记就绪;全部槽位满足条件才原子发布共同开始时间。心跳 5 秒过期,准备最多等待 10 分钟且受任务总超时约束;放行后迟到的替换 Worker 报错,避免静默改变负载。
效果
压测时长从共同起点计算;被抢占后的补建不抹去已发请求,严格基准需检查中断并重新运行。

03协议适配与统一计分:避免把不可比结果放在同一标尺

约束
实时、同步和异步接口返回结构与延迟含义不同;缺失参考、无效角色段或目标说话人配对错误也不能计算有效质量分。
做法
适配器统一输出文本、说话人时间段、性能事件与错误,保留样本 ID 和协议信息;国内 Collector 依据冻结参考计算中文 CER、英文 WER 和角色 DER,并分别记录有效覆盖。实时首个结果、同步总耗时和异步轮询总耗时分口径展示。
效果
失败和缺失留在覆盖统计中;只有数据版本、参考、计分协议和样本范围一致的运行才可比较提升或回退。

04参考错误与历史结果:撤销比较资格而非改写事实

约束
一段参考漏掉多人对话时,大量正确输出可能被计算为插入,CER 甚至超过 100%;直接截断分数或用模型输出改答案会遮住根因。
做法
保留原音、预测和旧结果,对有问题的参考版本标记待复核并拦截新的质量计分,历史详情保留原值与警告;独立机器候选与人工核验参考分开,修订后发布新版本。
效果
历史运行仍可复查,受影响版本不参与质量最优或差值判断,机器参考不会被误认为人工金标。

05大结果按需读取:降低比较页负担

约束
历史列表一次载入全部逐样例结果会使页面随着运行数和数据集规模增长而变慢。
做法
运行索引保留轻量预览,完整结果在选中时加载;样例列表按服务端分页,并保留冻结样本 ID 用于跨页配对。
效果
一次历史详情请求从约 14 MB 降至约 32 KB / 页;完整结果与逐样例核对能力保留,数字属于单次验证。
06

AI 协作开发

Codex 参与平台能力完善、测试与文档维护,并将运行结果与验证范围记录下来。

  • 实现

    协议与结果处理

    修复分类明细在完整结果中遗漏的问题,补充国内接口时长预检和针对性测试。

  • 验证

    核对计分和覆盖

    按样本与参考状态复核质量分数、失败和覆盖数,区分真实接口结果与受控测试。

  • 维护

    以现网为发布基线

    发现候选分支缺少现网报告功能后,以现网版本建立发布候选,再核对模板、执行器与测试结果并更新手册。

鉴伪与情绪的低负载测试只证明该范围内的链路可用;固定并发、容量上限和真实飞书登录页面仍需单独验证。

07

阶段成果

  • 将数据准备、分布式执行、质量计分与历史对比连接为可回查的工作流。
  • 支持跨区域执行和固定负载测试,结果保留覆盖率、异常与样例级证据。

继续浏览

语音评测与压测平台 · 数据集管理 · 版本与参考
100%
语音评测与压测平台放大预览

数据集管理 · 版本与参考

别急,先让缓存热一下。