中文
重大变更
- 项目从
MelBandRoformer.cpp更名为BSRoformer.cpp,核心库目标从mel_band_roformer更名为bs_roformer。 - CLI 可执行文件更名为
bs_roformer-cli。 - C++ 头文件路径从
mel_band_roformer/...改为bs_roformer/...。 - CMake 选项前缀从
MBR_*改为BSR_*,例如:MBR_BUILD_TESTS->BSR_BUILD_TESTSMBR_BUILD_CLI->BSR_BUILD_CLI
- 测试与运行时环境变量改为
BSR_*前缀,例如BSR_MODEL_PATH、BSR_TEST_DATA_DIR。保留的 CPU 兼容覆盖开关为BSR_FORCE_CPU=1。
新增功能
- 新增 BS Roformer 架构支持,同时继续支持 Mel-Band-Roformer。
- GGUF 转换脚本支持架构自动检测,并新增
--arch参数,可显式指定bs/bs_roformer/mel_band/mel_band_roformer。 - 新增
Inference::CancelCallback,Process()和ProcessOverlapAdd()支持推理取消;取消时抛出std::runtime_error("Inference cancelled")。 - 新增
Inference::GetNumStems(),方便调用方读取模型输出 stem 数量。 - 新增 CLI wall-time 基准脚本
scripts/benchmark.ps1。
性能优化
- 推理侧缓存图状态和缓冲区,减少重复分配。
- STFT/ISTFT 改为基于查表的 FFT 实现,并加入内存池以降低分配开销。
- 优化 BS Roformer 图构建与执行路径,减少不必要的拷贝、reshape 和中间张量。
- 优化 QKV/RoPE/Flash Attention 相关图节点,并为不兼容权重形状保留 fused QKV 回退路径。
- 优化 mask estimator 拼接逻辑,使用更均衡的 concat 构图方式。
修复
- 修复 BSRoformer 中冗余 normalization,改善模型输出一致性。
- 修复/补强 CUDA、Vulkan 与运行时 DLL 复制相关构建逻辑。
- 文档更新后端质量与性能说明,明确 Vulkan 保守验证可使用
GGML_VK_DISABLE_COOPMAT2=1。
测试
- 新增取消回调行为测试。
- 新增 STFT/ISTFT 与 PyTorch golden 数据一致性测试。
- 更新测试目标、测试说明和环境变量命名。
English
Breaking Changes
- Renamed the project from
MelBandRoformer.cpptoBSRoformer.cpp; the core CMake target is nowbs_roformer. - Renamed the CLI executable to
bs_roformer-cli. - Updated public include paths from
mel_band_roformer/...tobs_roformer/.... - Renamed CMake options from
MBR_*toBSR_*, for example:MBR_BUILD_TESTS->BSR_BUILD_TESTSMBR_BUILD_CLI->BSR_BUILD_CLI
- Runtime/test environment variables now use the
BSR_*prefix, such asBSR_MODEL_PATHandBSR_TEST_DATA_DIR. The retained CPU compatibility override isBSR_FORCE_CPU=1.
Added
- Added BS Roformer architecture support while keeping Mel-Band-Roformer support.
- Extended the GGUF converter with architecture auto-detection and a new
--archoption. - Added
Inference::CancelCallback;Process()andProcessOverlapAdd()can now be cancelled and throwstd::runtime_error("Inference cancelled"). - Added
Inference::GetNumStems()for reading the model stem count. - Added
scripts/benchmark.ps1for CLI wall-time benchmarking.
Performance
- Cached inference graph state and buffers to reduce repeated allocations.
- Optimized STFT/ISTFT with table-based FFT transforms and memory pooling.
- Improved BS Roformer graph construction and execution by reducing extra copies, reshapes, and intermediate tensors.
- Optimized QKV/RoPE/Flash Attention graph paths with a fused QKV fallback for incompatible weight shapes.
- Improved mask estimator graph construction with balanced concatenation.
Fixed
- Removed redundant normalization in BSRoformer for better output consistency.
- Improved CUDA/Vulkan build handling and runtime DLL copying.
- Updated backend quality/performance documentation, including conservative Vulkan validation via
GGML_VK_DISABLE_COOPMAT2=1.
Tests
- Added cancellation callback behavior tests.
- Added STFT/ISTFT consistency tests against PyTorch golden data.
- Updated test targets, documentation, and environment variable names.