Algo Dev Spec · v1.0
算法开发规范 v1.0
原型 · 定点化 · C 实现 · XiDSP 优化 · 金标回归 · 发布
每一个算法都可复现 · 每一次迭代都不退步
6
研发阶段
≥99%
金标一致性
100%
回归必过
算法开发规范 v1.0
摘要
本规范定义 Xisound 声学算法从研究原型到量产发布的完整研发流程。 覆盖 需求立项、原型开发、定点化、C 实现、XiDSP 优化、金标回归、发布归档 六大阶段。 适用 XiAlgo 六大套件 的所有算法条目(基础信号处理 / 空间音频 / AI 降噪 / 车载算法 / 工具链 / 专业声学)。 核心价值观:每一个算法可复现、每一次迭代不退步、每一次发布有金标。
1. 适用范围
1.1 覆盖对象
- 基础信号处理:EQ / DRC / Limiter / Crossover / Gain / Delay / AEC / NS
- 空间音频:HRTF / Ambisonics / Spatial Up-mix / VBAP
- AI 声学:AI 降噪 / AI 分离 / 语音增强 / 声学场景识别
- 车载算法:Cabin Tuning / Road Noise Cancellation / Active Sound Design
- 工具链算法:FIR 设计、IIR 设计、自动调音算法
- 专业声学:房间校正、系统功率管理、混音自动化
1.2 不在范围
- 纯 ML 训练工程(另行规范 ML-Ops)
- 第三方算法封装(走 License 评估流程)
2. 六阶段研发流程
2.1 总流程图
graph LR
R[阶段 1<br/>需求立项] --> P[阶段 2<br/>原型研发]
P --> F[阶段 3<br/>定点化]
F --> C[阶段 4<br/>C 实现]
C --> O[阶段 5<br/>XiDSP 优化]
O --> G[阶段 6<br/>金标回归]
G --> Rel[发布 XiAlgo]
class R xyL0
class P xyL2
class F xyL3
class C xyL3
class O xyL4
class G xyWarn
class Rel xySuccess
2.2 阶段产出一览
| 阶段 | 主要产出 | 负责人 | 门禁审批 |
|---|---|---|---|
| 1. 需求立项 | Algo Spec + 参考文献综述 + 性能目标 | 算法 PM | 算法 Leader |
| 2. 原型研发 | Python / MATLAB 浮点参考 + 数据集 | 算法工程师 | 算法 Leader |
| 3. 定点化 | Fix-point 参考 + 精度分析 | 算法工程师 | 算法 Leader |
| 4. C 实现 | 跨平台 C 代码 + Bit-exact 验证 | 算法 / C 工程师 | 算法 Leader |
| 5. XiDSP 优化 | DSP 汇编 / 内建优化 + 性能达标 | DSP 工程师 | 芯片 Leader |
| 6. 金标回归 | Golden reference + 测试集 + CI | QA + 算法 | QA Leader |
| 发布 | XiAlgo 仓库 + 版本记录 + 文档 | 算法 Leader | CTO |
3. 阶段 1:需求立项
3.1 Algo Spec 必含项
Algo Spec 十大要素
- 算法名称 + 版本号(遵循 SemVer)
- 所属 XiAlgo 套件与条目编号
- 适用场景与目标平台(XiDSP / XiCore / x86 / ARM)
- 核心数学原理 + 参考文献
- 输入/输出定义(采样率 / 位深 / 通道数 / 接口)
- 关键性能指标(如 AEC: ERLE ≥ 40 dB / AI NS: PESQ 提升 ≥ 0.4)
- 计算复杂度预算(MIPS / Memory)
- 对比基线(开源 / 竞品 / 上一版本)
- 测试集与金标策略
- 风险与 Fallback 方案
3.2 文献综述与对标
- 对标至少 3 篇近 3 年相关论文 / 专利
- 对标至少 1 个竞品实现(Harman / Bose / Dirac 等公开 Spec)
- 评审时明确超越基线的理由(性能 / 效率 / 易用性)
4. 阶段 2:原型研发(浮点参考)
4.1 语言与工具
- 主推:Python(NumPy / SciPy / PyTorch / Librosa)
- 次选:MATLAB(老代码库或客户要求时)
- 禁用:仅自家能跑的私有工具链
4.2 原型代码约束
- 代码放入仓库
algo-research/<algo-name>/ - 必须含:
run.py(一键复现) +requirements.txt+README.md - 数据依赖:引用公开数据集或内部匿名化数据集,禁止提交客户私有音频
- 结果可视化:频谱图 / 时域图 / 主观评分,以
reports/归档
4.3 评审产出
- 原型评审会(Proto Review):算法 Leader + 产品 PM + QA 联合
- 产出:可复现的 Python 浮点参考 + 测试集 + 对比报告
5. 阶段 3:定点化
5.1 位宽策略
| 场景 | 位宽 | 说明 |
|---|---|---|
| 常规信号处理(EQ/DRC) | Q1.31 / Q4.28 | XiDSP 标准 fixed |
| 高精度 IIR | Q2.30 + 双精度累加 | 防止级联累积误差 |
| AI 模型推理 | INT8 / INT16 | 配合量化训练 |
| 对数 / 对数域 | log2 域 定点 | 节省 log 运算 |
5.2 定点化流程
graph LR
F[浮点参考] --> A[动态范围分析]
A --> Q[量化位宽选择]
Q --> S[定点仿真]
S --> C{精度达标?}
C -- 否 --> Q
C -- 是 --> G[固化 Q 格式]
class F xyL0
class A,Q xyL2
class S xyL3
class C xyWarn
class G xySuccess
5.3 精度验收
- 定点 vs 浮点 SNR 劣化 ≤ 1 dB(常规信号处理)
- 主观 MOS 劣化 ≤ 0.1(AI 类算法)
- 覆盖极端输入(满量程 / 静音 / 白噪声 / 扫频)
6. 阶段 4:C 实现
6.1 C 编码规范
- 基础规范:见 sw-dev-spec.md §2.2
- 额外约束:
- 无动态内存(算法路径禁用
malloc/free,用外部池) - 无浮点(定点算法路径)
- 无递归
- 函数状态通过 context struct 传入(可重入)
- 所有幅度敏感代码加饱和保护(saturation macros)
6.2 Bit-exact 验证
- C 实现的输出必须与定点参考 Bit-exact(对同一输入,输出字节完全一致)
- 采用"Python 定点参考生成
golden.bin→ C 跑同样输入 → diff"方式 - 发现不一致必须定位到具体语句并修复
6.3 可移植性要求
- C 代码需能在 x86 / ARM / XiDSP 至少三类平台编译通过
- 禁用特定编译器 intrinsics(放到 §7 XiDSP 优化阶段)
- 平台差异通过
platform_porting.h统一抽象
7. 阶段 5:XiDSP 优化
7.1 优化层次
- 算法级:数学变形(FFT 替换直接卷积、Goertzel 替换单 bin FFT 等)
- 流水线级:循环展开、软流水
- SIMD / VLIW:XiDSP 向量指令利用
- DMA / Cache:数据搬运与缓存局部性
- 双核 / 多核并行:任务切分
7.2 性能目标
- 常规信号处理:达到 Spec MIPS 预算的 80% 以内(留 20% 余量)
- AI 推理:满足 Spec 规定的 实时性倍率 ≥ 2x(留算力冗余)
- 如超预算需重回阶段 3 / 阶段 2 调整
7.3 优化产出
- 性能报告(Cycles per sample / MIPS / Memory)
- 向量指令覆盖率报告
- 关键路径 profiling
8. 阶段 6:金标回归
8.1 金标(Golden Reference)
每个算法必须提供一套金标,用于持续回归:
| 组成 | 格式 | 说明 |
|---|---|---|
| 输入测试集 | WAV + JSON 配置 | 至少 20 条覆盖典型 + 极端 |
| 参考输出 | WAV / 二进制 | 由"最新已发布的定点参考"生成 |
| 指标文件 | JSON | SNR / PESQ / POLQA / 自定义指标 |
| 主观样本 | WAV | 主观听测用(每版抽样) |
8.2 回归策略
graph LR
D[代码变更] --> B[CI 触发]
B --> R[跑金标测试集]
R --> C{指标达标?}
C -- 是 --> P[入主干]
C -- 否 --> F[回退 + 分析]
class D xyL0
class B,R xyL2
class C xyWarn
class P xySuccess
class F xyError
- Nightly Regression:全量金标
- PR 回归:快速子集(≤ 15 分钟)
- 主观回归:季度一次,由专业听测
8.3 失败处理
- 金标不一致 默认代码错误,而非修改金标
- 如果是真实的算法升级(性能更好),需走 金标更新 ADR,并双人签批
- 绝不允许"因为金标变了就改金标"
金标红线
金标不是"我说对就对"。每次金标更新必须: 1. 有 ADR 记录 2. 有对比报告(新 vs 旧) 3. 双人签批(算法 Leader + QA Leader)
9. 发布与版本
9.1 发布到 XiAlgo 仓库
发布流程:
- 代码进入
xialgo/algorithms/<suite>/<algo>/目录 - 更新套件 Manifest(算法列表 + 版本 + API)
- 打 Tag:
<algo-name>-v<version> - 生成 Release Notes
- 推送到 XiStudio 插件市场 / 客户 License 包
9.2 版本号
- 遵循 SemVer
- MAJOR:API 不兼容变更(如参数含义变化)
- MINOR:新增参数 / 新增模式
- PATCH:精度优化 / 性能优化 / Bug 修复
9.3 Deprecation 策略
- 废弃算法需至少 一个大版本 Deprecation 期
- Deprecation 期内仍在仓库中,但 Manifest 标记
deprecated: true - 建议迁移路径写入 Release Notes
10. 附录
10.1 推荐工具链
| 场景 | 工具 |
|---|---|
| 原型 | Python 3.11 + NumPy + SciPy + PyTorch |
| 主观评估 | MUSHRA(webMUSHRA) |
| 客观指标 | PESQ / POLQA / STOI / PEAQ |
| 定点仿真 | Fxpmath / 自研定点库 |
| C 测试 | Unity Test / Google Test |
| XiDSP Profiling | 自研 xdsp-profiler |
10.2 关联文档
10.3 版本历史
| 版本 | 日期 | 要点 |
|---|---|---|
| v1.0 | 2026-05-05 | 首版 · 六阶段流程 + 金标红线 |
algo-dev-spec.md · D1-B-SPEC-003 · v1.0 · 2026-05-05 · Xisound 研发中心