读论文:STARS 是什么结构?一个统一的歌声自动标注框架

论文:STARS ------ 首个同时解决歌声转录、对齐与精细风格标注的统一框架

Demo:https://gwx314.github.io/stars-demo/

最近在看歌声合成(SVS)相关的工作,翻到一篇叫 STARS 的论文。它想解决的问题很实际:训练歌声合成模型需要大量高质量标注,而人工标注又贵又慢。于是这篇论文提出了一个能一站式自动标注的框架。


先搞清楚:STARS 输入输出是什么

从任务总览的角度看,STARS 是个黑盒:

输入

  • Lyric:歌词文本(You raise me up...)
  • wav:歌声音频

输出(三份多层级标注)

输出 格式 内容
① 音素-音频对齐 TextGrid 每个音素(Y UW1 EY1 Z...)对齐到波形的时间区间
② 技巧 & 风格标注 TextGrid 技巧标注(逐单元 0/1)+ 全局风格(如 pop, slow, high, sad)
③ 音符转录 MusicXml 转成带音高时值的乐谱(♩=95.0)

值得注意的是,内部三个子任务是级联的:

复制代码
Text Alignment → Tech & Style Annotation → Note Transcription

先对齐,再基于对齐做技巧风格标注,最后做音符转录。这正是它区别于"只解决孤立环节"方法的地方------用一个框架串起全流程。


核心问题:它是 encoder-decoder 结构吗?

不是标准的单一 encoder-decoder(seq2seq)。

它更准确的描述是:

一个共享的多层级 Encoder 骨干 + 多个并列的 Decoder / Predictor 头

特点:多任务 (multi-task) + 层级化 (hierarchical) + 非自回归 (non-autoregressive)

下面从整体架构图 (a) 开始,由下往上拆。


(a) 整体数据流:从音频到多层级标注

输入层(最底部)

  • 音频波形经过 ASR 得到歌词,同时提供 Phone(音素)序列。

第一层 Encoder(共享骨干)

  • Frame Level Acoustic Encoder 从音频提取帧级特征 S_f
  • S_f 送进 Phone Predictor → 输出 Phone Logits(每帧属于各音素的概率)。

对齐(关键桥梁)

  • DP Alignment(动态规划对齐)把 Phone Logits 和真实音素序列对齐 → 得到 Phone Boundary(音素边界)
  • 这一步就是总览里的 "Text Alignment",非自回归,靠 DP 而不是逐帧解码。

层级化 Encoder 堆叠(核心思想)

边界确定后,特征就能按层级逐级聚合。左侧那一列 Encoder 逐级往上:

复制代码
Frame  ─(音素边界)→ Phone Level Encoder    → S_p
Phone  ─(词边界)  → Word Level Encoder     → S_w
       ─(音符边界)→ Note Level Encoder     → S_n
       ─           Sentence Level Encoder  → S_g

每一级用边界信息把下层特征池化成更高层单元的表示。图中 ⊕ 表示特征融合(把下层特征加/拼进来)。

多个并列的解码头(各管一个子任务)

输入 输出
Phone Predictor S_f 音素
DP Alignment S_w + logits 音素边界
Note Boundary Predictor S_p 音符边界
Note Decoder S_n 音符(音高)
Technique Decoder S_g 多标签演唱技巧
Global Style Predictor CLS + S 全局风格(情感、节奏)

所以它有一个逐级共享的编码骨干,顶上挂了 5~6 个任务头并行输出。这就是它能"一个框架同时做转录、对齐、风格标注"的原因。


(b) Global Style Predictor:用 Cross Attention 聚合全局信息

连线是:S → Project → K, V;CLS → Project → Q;两者进 Cross Attention

先解释术语:

  • CLS token :"Classification token",一个可学习的向量(不来自音频,是模型自带参数)。像一个"空白采访本",任务是去汇总整句信息,再拿它的输出做预测。BERT 里就是用 CLS 做句子级分类。
  • Query / Key / Value(Q / K / V) :注意力机制的三个角色。
    • Query:"我想找什么"(这里来自 CLS)。
    • Key:"每个信息块的标签",和 Query 比相似度算权重。
    • Value:"每个信息块的实际内容",按权重取出。
    • 通俗版:Q 拿着问题去和所有 K 比对(得到权重),再按权重把 V 加权求和 → 得到答案。
  • S:(a) 图里的句级特征序列,是"信息库",提供 K 和 V。
  • Project:线性投影层,把输入映射到 Q / K / V 各自的空间。
  • Cross Attention:区别于 Self-Attention(Q/K/V 同源)。这里 Q 来自 CLS、K/V 来自 S,两个来源 → "交叉"。

CLS(可学习的问题向量)作为 Query,句级特征 S 作为 Key/Value,通过 Cross Attention 让 CLS 从整句里"读"出全局信息,输出送给 Global Style Predictor 预测情感、节奏(Emotion, Pace)。


© Multi-Level Acoustic Encoder:每个"XX Level Encoder"的内部

从下往上:

复制代码
Mel & F0 Extractor      提取梅尔谱和基频 F0
   ↓
CMU Encoder             主干编码器(见 d)
   ↓
Pooling                 按 Boundary 把帧特征池化成该层级单元
   ↓
Conv
   ↓
Vector Quantization     向量量化 → 离散化表示
   ↓
Length Regulator        长度调节,把单元级展开回帧级(FastSpeech 经典模块)

Boundary(虚线输入)控制 Pooling 怎么切分、Length Regulator 怎么展开。这就是论文说的"非自回归局部声学编码器"(non-autoregressive local acoustic encoders)。


(d) CMU Encoder:最底层的特征骨干

双分支输入:Mel Encoder(梅尔谱)+ F0 Encoder(基频)→ 相加融合。

中间是重复 ×N 的 block,结构类似带 MoE 的 Conformer/Transformer block:

复制代码
Downsample Layers
  ┌─ FreqMOE Module ×1/2   频域混合专家
  ├─ Self-Attention
  ├─ Conv
  ├─ FreqMOE Module ×1/2
  └─ Layer Norm            每个子层都带残差 ⊕
Upsample Layers

FreqMOE(频率维度的 Mixture-of-Experts)是它的特色模块,先降采样再上采样,残差连接贯穿。


四张图 a/b/c/d 之间是什么关系

关系是逐级放大镜,从整体到局部零件。a 是整体,b/c/d 是 a 里某个方块的内部拆解:

复制代码
(a) Overall Architecture   ← 全局装配图,整条数据流
     │
     ├── 里面的 "Global Style Predictor"      ──放大──▶ (b)
     │
     ├── 里面的 "XX Level Acoustic Encoder"   ──放大──▶ (c)
     │        (Frame/Word/Phone/Note/Sentence 都是这个内部结构)
     │
     └── (c) 里面的 "CMU Encoder"             ──放大──▶ (d)
子图 是 (a) 中哪个模块的展开 层级
(a) 整个系统 顶层
(b) (a) 的 Global Style Predictor (a) 的一个头
© (a) 左侧那一列 XX Level Acoustic Encoder (a) 的编码骨干
(d) © 里的 CMU Encoder © 的子模块

所以是三层嵌套的包含关系:

(a) 包含 (b) 和 ©;© 又包含 (d)。

b 和 c 平级(都是 a 的组成部分),d 比 c 低一级(是 c 的内部零件)。

看图顺序建议:先看 (a) 理解整体流程 → 遇到 Acoustic Encoder 想看内部就翻 © → 想看 © 里 CMU Encoder 怎么做就翻 (d) → 单独想看风格预测就翻 (b)。


总结

STARS 不是经典的 seq2seq encoder-decoder,而是:

共享的层级化非自回归 Encoder 骨干 + 多个任务专属 Decoder 头的多任务结构。

核心逻辑:

先做帧级音素预测 → DP 对齐拿到边界 → 用边界逐级(帧 → 音素 → 词 → 音符 → 句)聚合特征 → 每个层级的特征各自喂给对应解码头,并行产出对齐、音符、技巧、全局风格。

它的价值在于:把过去分散在多个工具里的歌声标注环节,统一进一个框架,并用非自回归设计保证效率,从而解决歌声数据集难以大规模构建的痛点。

相关推荐
光测实验室2 小时前
3种Python降噪算法实测:我把处理速度提升了20倍
python
AOwhisky2 小时前
Python 学习笔记(第三期)——流程控制核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发·流程控制
花花无缺3 小时前
Windows 定时执行 Python 脚本方案
python·操作系统·命令行
流云鹤4 小时前
1. 配置环境、创建导航栏
python·django
三亚兴嘉装饰4 小时前
准备在三亚装房子找哪家装修
python
Mx_coder5 小时前
8年Java开发者AI转型第二周:RAG系统深入 + 向量数据库实战(Day 8-10)
python
ximen502_5 小时前
Python 语言知识总结
开发语言·python
流云鹤6 小时前
2.登录模块
python·django
C+-C资深大佬6 小时前
Java 变量:从入门到精通
java·开发语言·python