@QingQ77: 将阿里达摩院的 ZipEnhancer 降噪模型从 ModelScope pipeline 中剥离,封装为高性能 FastAPI 降噪服务。 https://github.com/gyj1201/zipEnhancer… 阿里达摩院的 Z…

X AI KOLs Timeline 工具

摘要

本项目将阿里达摩院的ZipEnhancer降噪模型从ModelScope pipeline剥离,用纯PyTorch重写推理逻辑并封装为FastAPI服务,支持FP16半精度和长音频分段处理,提供多种降噪模型切换和API接口。

将阿里达摩院的 ZipEnhancer 降噪模型从 ModelScope pipeline 中剥离,封装为高性能 FastAPI 降噪服务。 https://github.com/gyj1201/zipEnhancer… 阿里达摩院的 ZipEnhancer 降噪模型通常只能在 ModelScope 的 pipeline 里用,又黑又慢。这个项目把模型权重提取出来,用纯 PyTorch 重新写了推理逻辑,封装成 FastAPI 服务。上了 FP16 半精度,显存少了大约四成;用 4 秒滑窗加 75% 重叠的分段策略,多长的音频都能处理,不爆显存。
查看原文
查看缓存全文

缓存时间: 2026/06/09 10:45

将阿里达摩院的 ZipEnhancer 降噪模型从 ModelScope pipeline 中剥离,封装为高性能 FastAPI 降噪服务。

https://github.com/gyj1201/zipEnhancer…

阿里达摩院的 ZipEnhancer 降噪模型通常只能在 ModelScope 的 pipeline 里用,又黑又慢。这个项目把模型权重提取出来,用纯 PyTorch 重新写了推理逻辑,封装成 FastAPI 服务。上了 FP16 半精度,显存少了大约四成;用 4 秒滑窗加 75% 重叠的分段策略,多长的音频都能处理,不爆显存。


gyj1201/zipEnhancer

Source: https://github.com/gyj1201/zipEnhancer

 ______       _____       _                               
|__  (_)_ __ | ____|_ __ | |__   __ _ _ __   ___ ___ _ __ 
  / /| | '_ \|  _| | '_ \| '_ \ / _` | '_ \ / __/ _ \ '__|
 / /_| | |_) | |___| | | | | | | (_| | | | | (_|  __/ |   
/____|_| .__/|_____|_| |_|_| |_|\__,_|_| |_|\___\___|_|   
       |_|                                                

Python 3.10 FastAPI PyTorch MIT License ModelScope

做了什么

  • 模型剥离 — 从 ModelScope 黑盒 pipeline 中提取出 ZipEnhancer,用原生 PyTorch 加载权重推理,不再依赖 pipeline 封装
  • FP16 半精度推理 — 仅模型计算部分使用 FP16,STFT/iSTFT 保持 FP32 避免 cuFFT 精度问题,显存占用降低 ~40%
  • 长音频分段 — 4s 滑动窗口 + 75% 重叠的 overlap-add 策略,支持任意时长音频,彻底解决 CUDA OOM
  • 多模型切换 — 同时支持 ZipEnhancer(轻量)、FRCRN(实时)、MossFormer2(高质)三种模型
  • 声道/位深保持 — 立体声输入 → 立体声输出,32-bit float / 16-bit PCM 自动适配

它能做什么?

  • 清除录音中的环境噪声(空调声、风扇声、键盘声、街道噪音等)
  • 支持单文件批量处理两种模式
  • 多种降噪模型一键切换
  • GPU 加速,实时率可达 20x 以上(RTX 4090)

无需 ModelScope pipeline 黑盒,一行命令启动服务,适合集成到语音处理流程、会议录音后处理、音频预处理管道等场景。

快速开始

1. 创建虚拟环境

conda create -n zipenhancer python=3.10 -y
conda activate zipenhancer

2. 安装依赖

pip install -r requirements.txt

GPU 加速(NVIDIA 显卡,先于上一步安装 CUDA 版 PyTorch):

pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu124
pip install -r requirements.txt

3. 配置

复制 .env.example.env,按需求修改:

cp .env.example .env

4. 启动

uvicorn app:app --host 0.0.0.0 --port 8765

API 接口

健康检查

curl http://127.0.0.1:8765/health

健康检查

查看可用模型

curl http://127.0.0.1:8765/models

查看可用模型

语音降噪(单个文件)

上传音频文件,指定输出文件夹,降噪后的文件自动保存到该目录。

curl -X POST http://127.0.0.1:8765/denoise ^
  -F "[email protected]" ^
  -F "output_dir=./output" ^
  -F "output_format=mp3" ^
  -F "bitrate=192k"

参数说明:

参数必填说明
file音频文件(wav/mp3/m4a/flac/ogg)
output_dir输出文件夹路径
model模型名称(默认 .env 中配置)
normalize是否自动音量归一化(默认 true)
target_sr输出采样率,0=保持原始采样率(默认 0)
output_format输出格式: wav / flac / mp3 / ogg(默认 wav)
bitrate比特率,仅 mp3/ogg,如 “192k”
compression_level压缩级别,仅 flac (0-8)

返回结果:

{
  "code": 0,
  "message": "success",
  "data": {
    "output_path": "./output/input_denoised.mp3",
    "sample_rate": 48000,
    "output_format": "mp3",
    "output_subtype": "mp3_mf",
    "bitrate": "192k",
    "compression": null,
    "processing_time": "0.62s",
    "real_time_factor": "22.0x",
    "model": "iic/speech_zipenhancer_ans_multiloss_16k_base"
  }
}

音频降噪

语音降噪(批量处理)

扫描输入文件夹中的所有音频文件,逐个降噪并保存到输出文件夹。

curl -X POST http://127.0.0.1:8765/denoise/batch ^
  -F "input_dir=./input_folder" ^
  -F "output_dir=./output_folder"

参数说明:

参数必填说明
input_dir输入文件夹路径
output_dir输出文件夹路径
model模型名称(默认 .env 中配置)
normalize是否自动音量归一化(默认 true)
target_sr输出采样率,0=保持原始采样率(默认 0)
output_format输出格式: wav / flac / mp3 / ogg(默认 wav)
bitrate比特率,仅 mp3/ogg,如 “192k”
compression_level压缩级别,仅 flac (0-8)

返回结果:

{
  "code": 0,
  "message": "success",
  "data": {
    "input_dir": "./input_folder",
    "output_dir": "./output_folder",
    "total": 10,
    "success": 10,
    "failed": 0,
    "total_time": "5.23s",
    "model": "iic/speech_zipenhancer_ans_multiloss_16k_base",
    "output_format": "flac",
    "results": [
      {
        "filename": "audio1.wav",
        "output_path": "./output_folder/audio1_denoised.flac",
        "sample_rate": 48000,
        "output_format": "flac",
        "output_subtype": "PCM_16",
        "compression": 5,
        "processing_time": "0.52s",
        "real_time_factor": "28.0x",
        "status": "success"
      }
    ]
  }
}

输出格式说明

输出文件会尽可能保留原始音频的参数:

  • 采样率:默认与原始文件一致(传 target_sr 可覆盖)
  • 声道数:立体声输入 → 立体声输出,单声道输入 → 单声道输出
  • 位深:32-bit float 输入 → 32-bit float 输出,16-bit → 16-bit
  • 输出格式:可通过 output_format 参数选择

格式支持矩阵

格式编码选项压缩率参考依赖
WAVPCM_16 / PCM_24 / PCM_32 / FLOAT无损(基准)soundfile
FLACPCM_16 / PCM_24,compression 0-8~40-60%soundfile
MP332-320 kbps~15-25%ffmpeg
OGG Opus6-510 kbps~15-25%ffmpeg

压缩率参考基于 48kHz 16-bit 单声道音频,实际因内容而异。 MP3/OGG 依赖 ffmpeg,系统未安装时将返回错误。 FLAC 输出时不支持的编码(FLOAT/DOUBLE/PCM_32)自动降级为 PCM_16。

切换模型

curl -X POST http://127.0.0.1:8765/denoise ^
  -F "[email protected]" ^
  -F "output_dir=./output" ^
  -F "model=iic/speech_frcrn_ans_cirm_16k"

可用模型

模型 ID说明
iic/speech_zipenhancer_ans_multiloss_16k_baseZipEnhancer(轻量)
iic/speech_frcrn_ans_cirm_16kFRCRN(实时降噪)
iic/speech_mossformer2_ans_48kMossFormer2(高质量)

Roadmap

已完成

  • 单文件语音降噪
  • 批量文件语音降噪
  • 多模型切换(ZipEnhancer / FRCRN / MossFormer2)
  • 音量归一化
  • 自定义输出采样率
  • 声道/位深保持
  • FP16 半精度推理

计划中

P0 — 短期(5-8 周)

  • Docker 一键部署(多阶段构建、GPU 直通、健康检查、优雅关闭)
  • 输出格式选择(WAV / MP3 / FLAC / OGG,编码参数可配)
  • 输入音频信息预览(波形峰值、LUFS 响度、削波检测、完整性校验)
  • 降噪强度控制(频域 Dry/Wet Mix,0~100% 可调)

P1 — 中期(4-6 个月)

  • Noise Gate(Attack / Release / Hold / Hysteresis / Look-ahead)
  • 残差监听(延迟对齐 + 位深统一,输出原始与降噪的差值信号)
  • 频段选择降噪(Linkwitz-Riley 分频,各频段独立降噪强度)
  • VAD 自动静音切除(Silero VAD + 状态机 + 自适应阈值 + Cross-fade 拼接)

P2 — 中后期(5-7 个月)

  • CLI 命令行工具(多命令、管道、进度条、配置文件)
  • 噪声轮廓学习(基于 VAD 的自适应谱减法后处理、音乐噪声抑制)
  • 质量评估指标(PESQ / STOI / Si-SNR / DNSMOS,离线评测管线)
  • 音频格式转换(ffmpeg 封装,格式兼容矩阵,元数据透传)

P3 — 长期

  • 异步任务 + 进度查询(2-3 个月,任务持久化、队列调度、Worker 池、Webhook)
  • Web UI 界面(3-4 个月,拖拽上传 + 波形/频谱可视化 + 在线试听 + Before/After 对比)
  • 去混响(4-8 个月,WPE + DNN,场景分类 + 参数矩阵)
  • 实时流式降噪(4-8 个月,WebSocket + 因果模型 + Jitter Buffer + AEC)

已评估放弃

  • 超分(低采样率 → 高采样率) — 研究级难题,和降噪正交
  • 模型量化 int8 — 模型架构(自定义算子)不支持
  • 语音识别(ASR) — 另一个产品领域
  • 说话人分离 — 重叠说话人问题当前无工业级开源方案

项目结构

├── app.py                 # FastAPI 服务主程序
├── log.py                 # 日志管理模块
├── API.md                 # API 接口文档(含 curl 测试示例)
├── pyproject.toml          # Python 包配置
├── zipenhancer/           # 降噪核心包
│   ├── __init__.py
│   ├── codec.py           # 音频编码模块(WAV/FLAC/MP3/OGG)
│   ├── denoise.py         # 降噪核心函数
│   ├── standalone.py      # 剥离版推理(纯 PyTorch)
│   ├── models/            # 模型架构
│   │   ├── zipenhancer.py
│   │   └── layers/
│   │       ├── generator.py
│   │       ├── scaling.py
│   │       ├── zipenhancer_layer.py
│   │       └── zipformer.py
│   └── configs/
│       └── configuration.json
├── tests/                 # 测试
│   ├── conftest.py
│   ├── test_codec.py
│   ├── test_denoise.py
│   ├── generate_test_data.py
│   └── audio/             # 测试音频文件
├── images/                # README 截图
├── requirements.txt       # 依赖列表
├── LICENSE                # MIT 开源许可证
├── .env                   # 环境配置(不上传)
├── .env.example           # 环境配置模板
├── .gitignore             # Git 忽略规则
├── README.md              # 使用文档
└── logs/                  # 日志输出目录
    ├── app/               # 全部日志
    └── error/             # 错误日志

Credits

License

MIT © 2024 gao yi jun

相似文章

@MaxForAI: 如果你在做语音Agent,你应该试一下这个项目 来自南洋理工、新国立和上海 AI Lab的团队发布了:Mega-ASR 这个完全开源的ASR基于 Qwen3-ASR构建,目的是打破长期困扰ASR的在嘈杂、混响或其他受损现实环境中表现的瓶颈…

X AI KOLs Timeline

南洋理工、新国立和上海 AI Lab 联合发布 Mega-ASR,一个基于 Qwen3-ASR 构建的完全开源 ASR 模型,通过 Voices-in-the-Wild-2M 数据集和渐进式声学到语义优化,在真实世界嘈杂环境中实现最高 30% 的相对词错误率下降,且仅 1.7B 参数可在消费级硬件高效推理。

@leeoxiang: 太需要一个精准的时间戳对齐服务了

X AI KOLs Following

Feiteng Li 宣布发布 EdgeSpeak,一个本地优先、隐私无泄漏的精准转录服务,支持拖拽音视频或麦克风录音转写、语义分段、字词级时间戳,并可导出 JSON/SRT/MD,兼容 OpenAI Audio API、CLI、SKILL 和 MCP 工作流。