Other
File size: 5,794 Bytes
e955659
 
8b0cb9e
e955659
8b0cb9e
 
e955659
 
8b0cb9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e955659
 
 
 
 
8b0cb9e
1eeaf8a
8b0cb9e
1eeaf8a
8b0cb9e
e955659
 
8b0cb9e
 
 
e955659
 
8b0cb9e
 
 
 
e955659
 
 
8b0cb9e
 
 
 
e955659
 
8b0cb9e
 
 
 
 
 
e955659
8b0cb9e
 
 
e955659
 
8b0cb9e
 
 
e955659
 
8b0cb9e
 
 
 
e955659
8b0cb9e
 
 
 
 
 
 
 
 
 
 
 
 
e955659
 
8b0cb9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# Training

All released training routes use one command:

```bash
said train --config configs/training/<recipe>.yaml
```

Before running a recipe, set the paths it needs in `configs/data.yaml`. Each
recipe is an independent entry point: it loads the published initialization
listed in its YAML unless that path is changed. Running one recipe does not
automatically change the initialization of another recipe.

## Choose a route

| Goal | Recipe | Local data required | Published initialization |
|---|---|---|---|
| Fine-tune SAID (PaSST) on DCASE | `dcase_passt.yaml` | DCASE development audio and labels | `said_passt.ckpt` |
| Fine-tune SAID (AudioMAE) on DCASE | `dcase_audiomae.yaml` | DCASE development audio and labels | `said_audiomae.ckpt` |
| Train SAID (PaSST) with SourceBank | `sourcebank_passt.yaml` | SourceBank manifest and local audio | `audio2sph.ckpt` and the PaSST Class Feature Encoder from `said_passt.ckpt` |
| Train SAID (AudioMAE) with SourceBank | `sourcebank_audiomae.yaml` | SourceBank manifest and local audio | `audio2sph.ckpt` and the AudioMAE Class Feature Encoder from `said_audiomae.ckpt` |
| Train Audio2Sph + Panoramic Decoder | `audio2sph.yaml` | Prepared VCTK v0.80 | none |

The quickest training check is DCASE fine-tuning. After setting
`dcase_recordings.root` in `configs/data.yaml`, run:

```bash
said train --config configs/training/dcase_passt.yaml
```

Replace `passt` with `audiomae` to use SAID (AudioMAE).

## Complete paper workflow

The paper training workflow is:

```text
Audio2Sph pretraining
→ complete SAID training with SourceBank and Online Scene Generation
→ DCASE fine-tuning
```

### 1. Train Audio2Sph

Install the Online Scene Generation dependencies, set the VCTK input and
prepared-output paths, prepare VCTK once, and then start training:

```bash
pip install -e '.[render]'

# Set simulated_scenes.vctk.source_root and prepared_root in configs/data.yaml.
said prepare --config configs/training/audio2sph.yaml
said train --config configs/training/audio2sph.yaml
```

The preparation step converts VCTK v0.80 into the validated two-second input
used by the recipe. The training recipe runs 2.5 million optimizer steps with
batch size one and writes Audio2Sph together with its training-time Panoramic
Decoder.

### 2. Train complete SAID with SourceBank

Set `simulated_scenes.sourcebank.manifest` and
`simulated_scenes.sourcebank.source_audio_root` in `configs/data.yaml`, then
run one Class Feature Encoder route:

```bash
said train --config configs/training/sourcebank_passt.yaml
# or
said train --config configs/training/sourcebank_audiomae.yaml
```

This route keeps the Audio2Sph encoder, removes the Panoramic Decoder, attaches
Sph2Imaging, and trains complete SAID on generated two-second scenes. It uses
exact 21-frame training targets. [Data](data.md) defines the SourceBank
manifest and permission contract.

### 3. Fine-tune complete SAID on DCASE

Set `dcase_recordings.root` in `configs/data.yaml`, then run the matching
recipe:

```bash
said train --config configs/training/dcase_passt.yaml
# or
said train --config configs/training/dcase_audiomae.yaml
```

DCASE fine-tuning consumes 20 official half-open 10 Hz frames per two-second
sample and discards only the detector endpoint during loss computation. It
does not merge adjacent official label frames.

## Pass a newly trained model to the next route

The published recipes start from published checkpoints. To continue a newly
trained workflow, edit the next recipe before launching it:

| Next recipe | Field to change | Example preceding output |
|---|---|---|
| `sourcebank_passt.yaml` or `sourcebank_audiomae.yaml` | `load_audio2sph_ckpt` | `../../runs/audio2sph_pretraining/latest.ema.ckpt` |
| `dcase_passt.yaml` | `load_said_ckpt` | `../../runs/said_sourcebank_passt/latest.ema.ckpt` |
| `dcase_audiomae.yaml` | `load_said_ckpt` | `../../runs/said_sourcebank_audiomae/latest.ema.ckpt` |

The SourceBank recipes also use `load_class_feature_encoder_ckpt` to extract
the selected frozen Class Feature Encoder. Its type must match
`class_feature_encoder: passt` or `class_feature_encoder: audiomae`.

Canonical published paths under `checkpoints/` are downloaded and verified on
first use. Any other path is treated as an explicit local checkpoint.

## Checkpoints and resume

Each run writes into its configured `training.output_directory`:

| File | Purpose |
|---|---|
| `latest.ema.ckpt` | Latest model weights; use this or a retained EMA milestone to initialize another recipe |
| `latest.training.pt` | Model, optimizer, scheduler, random state, step, and validation state for exact resume |
| `best.ema.ckpt`, `best.json` | Lowest validation loss when validation is enabled |
| `step-*.ema.ckpt`, `step-*.training.pt` | Retained milestones at `keep_every_steps` |
| `metrics.jsonl` | Complete machine-readable training and validation records |

Rerunning the same command resumes `latest.training.pt` automatically. Use
`--resume PATH` only to select another `.training.pt` from the same training
recipe and the same data configuration. The trainer verifies a fingerprint of
both YAML files before restoring the optimizer and random state.

Use a flat `.ema.ckpt` through `load_audio2sph_ckpt` or `load_said_ckpt` when
moving between routes. Validation-enabled Audio2Sph and SourceBank recipes
record `best.ema.ckpt`, while the handoff examples above deliberately use the
latest completed state. DCASE fine-tuning leaves validation disabled so the
development-test recordings remain reserved for full-recording evaluation.

The terminal reports step, loss, learning rate, throughput, ETA, validation,
and checkpoint events. [Configuration](configuration.md) defines every recipe
field; [Data](data.md) defines the required dataset layouts.