人声分离 音乐源分离学习笔记
人声分离 音乐源分离学习笔记
目录
MSST(Multi-Scale Spectrogram Transformer)原理
MSST
https://github.com/ZFTurbo/Music-Source-Separation-Training
模型下载
MSST(Multi-Scale Spectrogram Transformer)原理
MSST(Multi-Scale Spectrogram Transformer)是一种基于Transformer架构的改进型人声分离算法,结合了多尺度频谱分析和自注意力机制,适用于音乐源分离(如人声和伴奏分离)。以下是其核心原理的逐步解析:
1. 输入表示:时频域转换
-
短时傅里叶变换(STFT):原始音频信号首先通过STFT转换为时频谱(Spectrogram),生成复数矩阵(幅度谱和相位谱)。
-
多尺度频谱生成:算法同时计算不同时间/频率分辨率的频谱图(如不同窗长的STFT),形成多尺度输入:
-
高时间分辨率(短窗):捕捉瞬态人声特征(如辅音)。
-
高频率分辨率(长窗):解析稳态谐波(如元音)。
-
2. 频谱图分块与嵌入(Patch Embedding)
-
每个尺度的频谱图被分割为重叠或非重叠的局部块(Patches),类似ViT(Vision Transformer)中的图像分块。
-
每个块通过线性投影转换为嵌入向量(Embedding),并加入位置编码(Positional Encoding)以保留时空信息。
3. 多尺度Transformer编码器
-
自注意力机制:每个尺度的嵌入序列输入独立的Transformer编码器,通过多头自注意力(MSA)捕捉频谱图中的长程依赖关系。
-
例如,人声谐波可能跨越多个频率带,自注意力能关联这些非局部区域。
-
-
跨尺度交互:不同尺度的Transformer输出通过交叉注意力(Cross-Attention)或特征拼接进行融合,整合多分辨率信息。
4. 掩码预测与信号重建
-
掩码生成:解码器输出每个尺度对应的软掩码(Soft Mask),与原始频谱相乘以分离人声和伴奏。
-
多尺度掩码融合:对不同尺度的掩码进行加权平均或自适应融合,得到最终掩码。
-
逆STFT(iSTFT):将掩码后的幅度谱与原始相位谱结合,通过iSTFT重建时域信号。
5. 损失函数与训练
-
时域损失:如SI-SNR(尺度不变信噪比),直接优化分离信号的时域质量。
-
频域损失:如L1损失作用于频谱幅度,增强频域一致性。
-
多尺度监督:对每个尺度的输出施加辅助损失,促进分层特征学习。
关键创新点
-
多尺度处理:解决传统单尺度STFT在时频权衡上的局限性。
-
Transformer架构:替代传统CNN/RNN,更高效建模频谱全局关系。
-
端到端训练:联合优化时频域损失,提升分离自然度。
对比其他方法
| 方法 | 核心架构 | 多尺度支持 | 时频建模能力 |
|---|---|---|---|
| MSST | Transformer | ✔️ | 全局注意力 |
| Demucs | CNN | ❌ | 局部卷积 |
| OpenUnmix | LSTM | ❌ | 时序建模 |
MSST通过多尺度Transformer平衡了局部细节与全局结构,尤其在复杂音乐场景中表现优于传统方法。实际效果依赖训练数据(如MUSDB18)和计算资源(需GPU加速)。
webUi版本
预训练说明:
https://github.com/ZFTurbo/Music-Source-Separation-Training/blob/main/docs/pretrained_models.md
更多推荐


所有评论(0)