Skip to content

snow-moonlight1/VIMO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VIMO: Vital 合成器参数推断

Python PyTorch License

English Version

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

配置 Vital 路径

修改以下文件中的 VST 路径:

  • data_generation/generate_dataset.py
  • training/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.py

项目结构

VIMO/
├── 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 组件

About

VIMO-基于深度学习的音频合成参数逆向工程项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages