一句话总结:
音乐信号处理就像做菜——先拆解食材(分离乐器),尝咸淡(分析节奏),调火候(均衡器调音),最后摆盘(母带处理)!
一、音乐分析三板斧
1. 节奏检测(数拍子)
- 原理:找能量突变点(鼓点) → 计算BPM(每分钟节拍数)
- 代码示例(Librosa) :
import librosa
y, sr = librosa.load('song.mp3')
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
print(f"BPM: {tempo}") # 输出:BPM: 128
2. 调性识别(定Key)
- 方法:色谱图(Chromagram)分析 → 统计各音高出现频率
- 可视化:
3. 乐器分离(拆解食材)
- 工具:Spleeter(AI分离人声/鼓/贝斯/其他)
bash
复制
spleeter separate -i input.mp3 -o output/ # 分离为vocals.wav和accompaniment.wav
二、核心处理技术(厨房秘籍)
1. 均衡器(EQ)——调音色
-
常用频段:
- 低频(20-250Hz) :底鼓、贝斯 → 增强力度
- 中频(1k-4kHz) :人声、主奏乐器 → 提升清晰度
- 高频(8k-20kHz) :镲片、空气感 → 增加明亮度
2. 压缩器(动态控制)
-
作用:让大声部分不炸耳,小声部分听得清
-
参数:
- Threshold:-20dB(超过此值开始压缩)
- Ratio:4:1(每超过4dB只输出1dB)
3. 混响(加空间感)
- 算法核心:模拟不同房间的反射声
- 代码模拟(简版) :
def add_reverb(dry_signal, delay_ms=30, decay=0.5):
wet_signal = dry_signal + decay * delay(dry_signal, delay_ms)
return wet_signal
三、高阶操作(米其林大厨技巧)
1. 和弦识别(AI扒谱)
- 工具:Madmom(深度学习和弦检测)
from madmom.features.chords import CNNChordFeatureProcessor
chords = CNNChordFeatureProcessor()('song.wav')
print(chords) # 输出:[('C', 0.0, 2.5), ('G', 2.5, 4.0)...]
2. 旋律提取(人声主旋律)
-
方案:
- 用HPSS分离人声
- 基频追踪(如CREPE模型)
import crepe
time, frequency, confidence = crepe.predict(y, sr)
3. 自动打谱(Music21)
from music21 import converter
score = converter.parse('midi_file.mid')
score.show('text') # 输出乐谱文本
四、实战避坑指南
- 采样率一致性:处理前统一为44.1kHz或48kHz
- 相位对齐:多轨混音时检查相位抵消(用相关度工具)
- 响度标准化:母带处理用LUFS(-14 LUFS为流媒体标准)
- 频谱遮蔽:修音时用EQ切除非必要频段(如去除电流声)
五、全流程示例(做一首Remix)
-
拆解原曲:
spleeter separate -i original.mp3 -o stems/ -
提取节奏:
bpm = librosa.beat.tempo(y=drums_track)[0] -
调整音色:
- 用EQ提升Bass低频(+3dB@100Hz)
- 给人声加板式混响(Plate Reverb)
-
母带处理:
- 限制器限制峰值(-1dBTP)
- 导出为WAV/FLAC
口诀:
“音乐处理三阶段,
分析先看谱和节,
均衡压缩调细节,
AI分离开外挂,
避坑校准不能缺,
导出记得测响度!”