VIMO (Vital Inverse Model) 是一个基于深度学习的音频参数推断系统。它通过分析音频的频谱特征,逆向推断出 Vital 合成器中对应的生成参数。
复刻特定音色通常需要专业的听感和多年的合成器调试经验。VIMO 试图用深度学习来解决这个问题——输入一段音频,输出对应的合成器参数。
实际应用场景:
- 教学辅助:帮助初学者理解声音与参数的关系
- 语义压缩:传输参数文件(KB级)代替音频文件(MB级)
- 异常检测:通过参数变化监测设备状态
- 参数回归:预测 6 个合成器参数(滤波器截止、共振、ADSR 包络)
- 波形分类:识别 4 种波形类型(锯齿波、方波、正弦波、三角波)
- 双通道输入:Mel 频谱图 + RMS 能量曲线
- 图形界面:支持中英文切换,自动跟随系统语言
- 自动化数据生成:通过 VST3 自动化批量生成训练数据
项目分为三个模块:
数据生成器:基于 dawdreamer 宿主环境,通过 MIDI 触发 Vital VST3,随机化指定参数后渲染音频,输出 .wav 文件和 .json 参数标签。
训练器:输入为双通道特征图(Mel 频谱 + RMS 曲线),骨干网络采用 EfficientNet-B0,输出端包含回归头和分类头。
推理引擎:支持 PyTorch 原生推理,提供 GUI 界面。
- Python 3.10.x
- CUDA 显卡(推荐)
- Vital 合成器(免费版即可)
# 克隆仓库
git clone https://github.com/yourusername/VIMO.git
cd VIMO
# 创建虚拟环境
conda create -n vimo python=3.10
conda activate vimo
# 安装依赖
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install dawdreamer librosa numpy scipy tqdm matplotlib soundfile
pip install customtkinter修改以下文件中的 VST 路径:
data_generation/generate_dataset.pytraining/inference.py
# Windows
VST_PATH = r"C:\Program Files\Common Files\VST3\Vital.vst3"
# macOS
VST_PATH = "/Library/Audio/Plug-Ins/VST3/Vital.vst3"cd data_generation
python generate_dataset.py默认生成 50,000 个音频样本及对应参数标签。
cd training
python train.py粗训练模型完成后,使用微调脚本:
python finetune_v3_final.py图形界面模式:
python vimo_gui.py评估模型性能:
cd training
python inference.pyVIMO/
├── vimo_gui.py # 图形界面
├── README.md # 说明文档
├── README_EN.md # 英文说明文档
├── LICENSE # MIT 许可证
│
├── training/ # 训练模块
│ ├── model.py # 模型定义
│ ├── train.py # 训练脚本
│ ├── dataset_loader.py # 数据加载器
│ ├── finetune_v3_final.py # 微调脚本
│ ├── inference.py # 推理引擎
│ ├── check_gpu.py # GPU 检测
│ └── monitor_gpu.py # GPU 监控
│
├── data_generation/ # 数据生成模块
│ ├── generate_dataset.py # 数据集生成器
│ ├── extract_states.py # VST 状态提取
│ ├── scan_params.py # 参数扫描
│ └── presets/ # Vital 预设文件
│
├── models/ # 训练好的模型
│
├── data/ # 生成的数据集
│
└── Docs/ # 文档
| 索引 | 参数 | 范围 | 单位 |
|---|---|---|---|
| 0 | 滤波器截止频率 | 0-76 | 半音 |
| 1 | 共振 | 0-100 | % |
| 2 | 起音 | 0-4.0 | 秒 |
| 3 | 衰减 | 0-4.0 | 秒 |
| 4 | 延音 | 0-4.0 | 秒 |
| 5 | 释音 | 0-4.0 | 秒 |
| 类别 | 波形 |
|---|---|
| 0 | 锯齿波 |
| 1 | 方波 |
| 2 | 正弦波 |
| 3 | 三角波 |
- 骨干网络:EfficientNet-B0(修改输入通道为 2)
- 输入格式:
[Batch, 2, 128, Time]- 通道 0:Mel 频谱图(128 mel bins)
- 通道 1:RMS 能量曲线(扩展至 128 bins)
- 输出头:
- 回归头:6 个参数,Sigmoid 激活
- 分类头:4 个波形类别
GUI 提供了直观的音频分析界面:
- 多语言支持:自动检测系统语言(中文/英文)
- 主题切换:跟随系统、浅色、深色
- 实时可视化:进度条显示参数值
- 真实值输入:手动输入用于误差计算
已完成:
- VST3 自动化控制与音频渲染
- 数据集生成流程
- EfficientNet-B0 模型训练
- 双通道特征提取
- 波形分类功能
- 图形界面(支持中英文)
- 模型微调优化
计划中:
- ONNX 模型导出
- 模型量化(INT8)
本项目采用 MIT 许可证,详见 LICENSE 文件。
注意:本项目仅包含控制脚本与模型代码。Vital 合成器版权归 Matt Tytel 所有,使用时请遵守 Vital 的最终用户许可协议。
- Vital Audio - Matt Tytel 开发的频谱波表合成器
- DawDreamer - Python VST host 库
- Librosa - 音频分析工具
- PyTorch - 深度学习框架
- CustomTkinter - 现代 tkinter 组件