将语音、哼唱和旋律音频通过机器学习音高检测与智能后处理转换为量化MIDI文件
QQ 语音注释给 MIDI是一项面向实际任务的技能,主要用于将您的语音备忘录、 哼唱和中音录音转换为干净的、 定量的 MIDI 文件, 准备用于 DAW;此技能提供了完整的音频到 MIDI c。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
将您的语音备忘录、哼唱及旋律录音,转换为干净、量化后的 MIDI 文件,可直接导入您的数字音频工作站(DAW)使用。
本技能提供一套完整的音频到 MIDI 转换流程,包含以下核心环节:
音频输入(WAV/M4A/MP3)
↓
┌─────────────────────────────────────┐
│ 步骤 1:音源分离(HPSS) │
│ - 提取谐波成分 │
│ - 移除鼓组与打击乐 │
│ - 噪声门限处理 │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ 步骤 2:音高检测 │
│ - Basic Pitch 机器学习模型(Spotify)│
│ - 多音检测 │
│ - 起音/释音时间估计 │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ 步骤 3:分析 │
│ - 音级分布统计 │
│ - 调性检测 │
│ - 主导音识别 │
└─────────────────────────────────────┘
↓
┌─────────────────────────────────────┐
│ 步骤 4:量化与清理 │
│ - 时间网格对齐 │
│ - 调性感知音高校正 │
│ - 八度修剪(和声去除) │
│ - 基于重叠的修剪 │
│ - 连奏音符合并 │
│ - 力度归一化 │
└─────────────────────────────────────┘
↓
MIDI 输出(标准 MIDI 文件)
快速安装(推荐):
cd /path/to/voice-note-to-midi ./setup.sh
该自动化脚本将执行以下操作:
~/melody-pipeline 目录手动安装:
如需手动配置,请执行:
mkdir -p ~/melody-pipeline cd ~/melody-pipeline python3 -m venv venv-bp source venv-bp/bin/activate pip install basic-pitch librosa soundfile mido music21 chmod +x ~/melody-pipeline/hum2midi
echo 'export PATH="$HOME/melody-pipeline:$PATH"' >> ~/.bashrc source ~/.bashrc
cd ~/melody-pipeline ./hum2midi --help
将语音备忘录转换为 MIDI:
./hum2midi my_humming.wav
生成 my_humming.mid,采用十六分音符量化。
./hum2midi input.wav output.mid
| 选项 | 说明 | 默认值 |
|---|---|---|
--grid |
量化网格:支持 1/4、1/8、1/16、1/32 |
1/16 |
--min-note |
音符最短持续时间(毫秒) | 50 |
--no-quantize |
跳过量化步骤(输出原始 Basic Pitch 生成的 MIDI) | 禁用 |
--key-aware |
启用调性感知音高校正 | 禁用 |
--no-analysis |
跳过音高分析与调性检测 | 禁用 |
./hum2midi melody.wav --grid 1/8
./hum2midi song.wav --key-aware
./hum2midi humming.wav --min-note 100
./hum2midi quick.wav --no-analysis
./hum2midi recording.wav output.mid --grid 1/8 --key-aware --min-note 80
您也可将已有 MIDI 文件送入量化流程进行再处理:
./hum2midi input.mid output.mid --grid 1/16 --key-aware
此模式将跳过音频处理步骤,直接进入分析与量化阶段。
═══════════════════════════════════════════════════════════════ hum2midi - Melody-to-MIDI Pipeline (Basic Pitch Edition) [Key-Aware Mode Enabled] ═══════════════════════════════════════════════════════════════ Input: my_humming.wav Output: my_humming.mid → Step 1: Stem Separation (HPSS) Isolating melodic content... Loaded: 5.23s @ 44100Hz ✓ Melody stem extracted → 5.23s → Step 2: Audio-to-MIDI Conversion (Basic Pitch) Running Spotify's Basic Pitch ML model on melody stem... ✓ Raw MIDI generated (Basic Pitch) → Step 3: Pitch Analysis & Key Detection Notes detected: 42 total, 7 unique Note range: C3 - G4 Pitch classes: C3, E3, G3, A3, C4, D4, G4 Dominant note: G3 (23.8% of notes) Detected key: G major → Step 4: Quantization & Cleanup Octave pruning: removed 3 harmonic notes above 67 (median+12) Overlap pruning: removed 2 harmonic notes at overlapping positions Note merging: merged 5 staccato chunks into legato notes (gap<=60 ticks) Grid: 240 ticks (1/16) Notes: 38 notes Key: G major Key-aware: 2 notes corrected to scale Tempo: 120 BPM ✓ Quantized MIDI saved ═══════════════════════════════════════════════════════════════ ✓ Done! Output: my_humming.mid ═══════════════════════════════════════════════════════════════ 📊 ANALYSIS SUMMARY ───────────────────────────────────────────────────────────── Detected Notes: C3, E3, G3, A3, C4, D4, G4 Detected Key: G major Quantization: Key-aware mode (notes snapped to scale) MIDI Info: 38 notes, 7 unique pitches, 120 BPM Pitches: C3, E3, G3, A3, C4, D4, G4
MIDI 生成后,您可能希望执行以下操作:
通过 FFmpeg 支持的输入格式包括:
--min-note 阈值--key-aware 选项将音高约束在调性音阶内本技能集成了 Spotify 的 Basic Pitch 模型,其依据 Apache 2.0 许可证发布;本流水线脚本及文档遵循 MIT 许可证发布。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习