跳转至
Algo Dev Spec · v1.0

算法开发规范 v1.0

原型 · 定点化 · C 实现 · XiDSP 优化 · 金标回归 · 发布
文档编号:D1-B-SPEC-003 · 版本:v1.0 · 发布:2026-05-05
每一个算法都可复现 · 每一次迭代都不退步
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 十大要素

  1. 算法名称 + 版本号(遵循 SemVer)
  2. 所属 XiAlgo 套件与条目编号
  3. 适用场景与目标平台(XiDSP / XiCore / x86 / ARM)
  4. 核心数学原理 + 参考文献
  5. 输入/输出定义(采样率 / 位深 / 通道数 / 接口)
  6. 关键性能指标(如 AEC: ERLE ≥ 40 dB / AI NS: PESQ 提升 ≥ 0.4)
  7. 计算复杂度预算(MIPS / Memory)
  8. 对比基线(开源 / 竞品 / 上一版本)
  9. 测试集与金标策略
  10. 风险与 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 优化层次

  1. 算法级:数学变形(FFT 替换直接卷积、Goertzel 替换单 bin FFT 等)
  2. 流水线级:循环展开、软流水
  3. SIMD / VLIW:XiDSP 向量指令利用
  4. DMA / Cache:数据搬运与缓存局部性
  5. 双核 / 多核并行:任务切分

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 仓库

发布流程:

  1. 代码进入 xialgo/algorithms/<suite>/<algo>/ 目录
  2. 更新套件 Manifest(算法列表 + 版本 + API)
  3. 打 Tag:<algo-name>-v<version>
  4. 生成 Release Notes
  5. 推送到 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 研发中心