odg123 commited on
Commit
fc7d880
·
verified ·
1 Parent(s): 91acf13

Delete egs/ami/ASR/.ipynb_checkpoints

Browse files
egs/ami/ASR/.ipynb_checkpoints/prepare-checkpoint.sh DELETED
@@ -1,108 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- set -eou pipefail
4
-
5
- stage=-1
6
- stop_stage=100
7
- use_gss=false # ❌ Disable GSS (not needed for IHM-only)
8
-
9
- dl_dir=$PWD/download
10
-
11
- . shared/parse_options.sh || exit 1
12
-
13
- mkdir -p data
14
- vocab_size=500
15
-
16
- log() {
17
- local fname=${BASH_SOURCE[1]##*/}
18
- echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*"
19
- }
20
-
21
- log "dl_dir: $dl_dir"
22
-
23
- # -----------------------------
24
- # Stage 0: Download AMI (IHM only)
25
- # -----------------------------
26
- if [ $stage -le 0 ] && [ $stop_stage -ge 0 ]; then
27
- log "Stage 0: Download AMI IHM data (~70h)"
28
-
29
- if [ ! -d $dl_dir/amicorpus ]; then
30
- lhotse download ami --mic ihm $dl_dir/amicorpus
31
- fi
32
- fi
33
-
34
- # -----------------------------
35
- # Stage 1: Prepare AMI IHM manifests
36
- # -----------------------------
37
- if [ $stage -le 1 ] && [ $stop_stage -ge 1 ]; then
38
- log "Stage 1: Prepare AMI IHM manifests"
39
-
40
- mkdir -p data/manifests
41
-
42
- lhotse prepare ami \
43
- --mic ihm \
44
- --partition full-corpus-asr \
45
- --normalize-text kaldi \
46
- --max-words-per-segment 30 \
47
- $dl_dir/amicorpus data/manifests/
48
- fi
49
-
50
- # -----------------------------
51
- # Stage 4: Compute fbank features (AMI IHM only)
52
- # -----------------------------
53
- if [ $stage -le 4 ] && [ $stop_stage -ge 4 ]; then
54
- log "Stage 4: Compute fbank features for AMI IHM"
55
-
56
- mkdir -p data/fbank
57
- python local/compute_fbank_ami.py
58
-
59
- log "Creating final IHM training cuts"
60
- gunzip -c data/manifests/cuts_train_ihm.jsonl.gz | \
61
- gzip -c > data/manifests/cuts_train_all.jsonl.gz
62
- fi
63
-
64
- # -----------------------------
65
- # Stage 6: Dump transcripts for BPE training (IHM only)
66
- # -----------------------------
67
- if [ $stage -le 6 ] && [ $stop_stage -ge 6 ]; then
68
- log "Stage 6: Dump IHM transcripts for BPE"
69
-
70
- mkdir -p data/lm
71
-
72
- gunzip -c data/manifests/ami-ihm_supervisions_train.jsonl.gz | \
73
- jq '.text' | sed 's:"::g' > data/lm/transcript_words.txt
74
- fi
75
-
76
- # -----------------------------
77
- # Stage 7: Prepare BPE-based language resources
78
- # -----------------------------
79
- if [ $stage -le 7 ] && [ $stop_stage -ge 7 ]; then
80
- log "Stage 7: Prepare BPE-based lang"
81
-
82
- lang_dir=data/lang_bpe_${vocab_size}
83
- mkdir -p $lang_dir
84
-
85
- echo "<eps> 0" > $lang_dir/words.txt
86
- echo "!SIL 1" >> $lang_dir/words.txt
87
- echo "<UNK> 2" >> $lang_dir/words.txt
88
-
89
- cat data/lm/transcript_words.txt | \
90
- grep -o -E '\w+' | sort -u | \
91
- awk '{print $0, NR+2}' >> $lang_dir/words.txt
92
-
93
- num_words=$(wc -l < $lang_dir/words.txt)
94
- echo "<s> ${num_words}" >> $lang_dir/words.txt
95
- num_words=$(wc -l < $lang_dir/words.txt)
96
- echo "</s> ${num_words}" >> $lang_dir/words.txt
97
- num_words=$(wc -l < $lang_dir/words.txt)
98
- echo "#0 ${num_words}" >> $lang_dir/words.txt
99
-
100
- ./local/train_bpe_model.py \
101
- --lang-dir $lang_dir \
102
- --vocab-size $vocab_size \
103
- --transcript data/lm/transcript_words.txt
104
-
105
- if [ ! -f $lang_dir/L_disambig.pt ]; then
106
- ./local/prepare_lang_bpe.py --lang-dir $lang_dir
107
- fi
108
- fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
egs/ami/ASR/.ipynb_checkpoints/prepare_scd-checkpoint.sh DELETED
@@ -1,274 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Modified prepare.sh for AMI with [SCD] token augmentation
3
- # This script adds Speaker Change Detection tokens to the data
4
-
5
- set -eou pipefail
6
-
7
- stage=2 # Skip download (stage 0) and manifest prep (stage 1) - use existing data
8
- stop_stage=100
9
- use_gss=false # ❌ Disable GSS (not needed for IHM-only)
10
-
11
- dl_dir=$PWD/download
12
-
13
- . shared/parse_options.sh || exit 1
14
-
15
- mkdir -p data
16
- vocab_size=500
17
-
18
- log() {
19
- local fname=${BASH_SOURCE[1]##*/}
20
- echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*"
21
- }
22
-
23
- log "dl_dir: $dl_dir"
24
-
25
- # -----------------------------
26
- # Stage 0: Download AMI (IHM only)
27
- # -----------------------------
28
- if [ $stage -le 0 ] && [ $stop_stage -ge 0 ]; then
29
- log "Stage 0: Download AMI IHM data (~70h)"
30
-
31
- if [ ! -d $dl_dir/amicorpus ]; then
32
- lhotse download ami --mic ihm $dl_dir/amicorpus
33
- fi
34
- fi
35
-
36
- # -----------------------------
37
- # Stage 1: Prepare AMI IHM manifests
38
- # -----------------------------
39
- if [ $stage -le 1 ] && [ $stop_stage -ge 1 ]; then
40
- log "Stage 1: Prepare AMI IHM manifests"
41
-
42
- mkdir -p data/manifests
43
-
44
- lhotse prepare ami \
45
- --mic ihm \
46
- --partition full-corpus-asr \
47
- --normalize-text kaldi \
48
- --max-words-per-segment 30 \
49
- $dl_dir/amicorpus data/manifests/
50
- fi
51
-
52
- # -----------------------------
53
- # Stage 2: Add [SCD] tokens (Speaker Change Detection)
54
- # -----------------------------
55
- if [ $stage -le 2 ] && [ $stop_stage -ge 2 ]; then
56
- log "Stage 2: Merge utterances and add [SCD] tokens"
57
-
58
- mkdir -p data/manifests_scd
59
-
60
- # Process train set
61
- log "Adding [SCD] tokens to train set"
62
- python local/add_scd_tokens.py \
63
- --input-manifest data/manifests/ami-ihm_supervisions_train.jsonl.gz \
64
- --output-manifest data/manifests_scd/ami-ihm_supervisions_train_scd.jsonl.gz \
65
- --max-duration 20.0 \
66
- --min-duration 5.0 \
67
- --gap-threshold 2.0
68
-
69
- # Process dev set
70
- log "Adding [SCD] tokens to dev set"
71
- python local/add_scd_tokens.py \
72
- --input-manifest data/manifests/ami-ihm_supervisions_dev.jsonl.gz \
73
- --output-manifest data/manifests_scd/ami-ihm_supervisions_dev_scd.jsonl.gz \
74
- --max-duration 20.0 \
75
- --min-duration 5.0 \
76
- --gap-threshold 2.0
77
-
78
- # Process test set
79
- log "Adding [SCD] tokens to test set"
80
- python local/add_scd_tokens.py \
81
- --input-manifest data/manifests/ami-ihm_supervisions_test.jsonl.gz \
82
- --output-manifest data/manifests_scd/ami-ihm_supervisions_test_scd.jsonl.gz \
83
- --max-duration 20.0 \
84
- --min-duration 5.0 \
85
- --gap-threshold 2.0
86
-
87
- log "Created [SCD]-augmented supervisions in data/manifests_scd/"
88
- fi
89
-
90
- # -----------------------------
91
- # Stage 3: Create cuts with [SCD] supervisions
92
- # -----------------------------
93
- if [ $stage -le 3 ] && [ $stop_stage -ge 3 ]; then
94
- log "Stage 3: Create cuts using [SCD]-augmented supervisions"
95
-
96
- mkdir -p data/cuts_scd
97
-
98
- # For each split, combine recordings with [SCD]-augmented supervisions
99
- for split in train dev test; do
100
- log "Processing $split split with [SCD] supervisions"
101
-
102
- # Use original recordings but [SCD]-augmented supervisions
103
- python -c "
104
- from lhotse import load_manifest, CutSet
105
-
106
- recordings = load_manifest('data/manifests/ami-ihm_recordings_${split}.jsonl.gz')
107
- supervisions = load_manifest('data/manifests_scd/ami-ihm_supervisions_${split}_scd.jsonl.gz')
108
-
109
- cuts = CutSet.from_manifests(
110
- recordings=recordings,
111
- supervisions=supervisions
112
- ).trim_to_supervisions(keep_overlapping=False, keep_all_channels=False)
113
-
114
- # Use Lhotse's built-in serialization
115
- cuts.to_file('data/cuts_scd/cuts_${split}_ihm_scd.jsonl.gz')
116
-
117
- print(f'Created cuts for ${split}')
118
- "
119
- done
120
-
121
- log "Created cuts with [SCD] tokens in data/cuts_scd/"
122
- fi
123
-
124
- # -----------------------------
125
- # Stage 4: Compute fbank features for [SCD] cuts
126
- # -----------------------------
127
- if [ $stage -le 4 ] && [ $stop_stage -ge 4 ]; then
128
- log "Stage 4: Compute fbank features for [SCD]-augmented cuts"
129
-
130
- mkdir -p data/fbank_scd
131
-
132
- # Process train cuts with speed perturbation
133
- log "Processing train cuts with [SCD] tokens"
134
- python -c "
135
- import torch
136
- from lhotse import CutSet, LilcomChunkyWriter
137
- from lhotse.features.kaldifeat import (
138
- KaldifeatFbank,
139
- KaldifeatFbankConfig,
140
- KaldifeatFrameOptions,
141
- KaldifeatMelOptions,
142
- )
143
- from pathlib import Path
144
-
145
- torch.set_num_threads(1)
146
- torch.set_num_interop_threads(1)
147
-
148
- extractor = KaldifeatFbank(
149
- KaldifeatFbankConfig(
150
- frame_opts=KaldifeatFrameOptions(sampling_rate=16000),
151
- mel_opts=KaldifeatMelOptions(num_bins=80),
152
- device='cuda',
153
- )
154
- )
155
-
156
- cuts = CutSet.from_file('data/cuts_scd/cuts_train_ihm_scd.jsonl.gz')
157
- cuts = cuts + cuts.perturb_speed(0.9) + cuts.perturb_speed(1.1)
158
-
159
- cuts.compute_and_store_features_batch(
160
- extractor=extractor,
161
- storage_path=Path('data/fbank_scd/feats_train_ihm_scd'),
162
- manifest_path=Path('data/manifests_scd/cuts_train_ihm_scd.jsonl.gz'),
163
- batch_duration=5000,
164
- num_workers=8,
165
- storage_type=LilcomChunkyWriter,
166
- )
167
- print('Train features computed')
168
- "
169
-
170
- # Process dev and test (no speed perturbation)
171
- for split in dev test; do
172
- log "Processing $split cuts with [SCD] tokens"
173
- python -c "
174
- import torch
175
- from lhotse import CutSet, LilcomChunkyWriter
176
- from lhotse.features.kaldifeat import (
177
- KaldifeatFbank,
178
- KaldifeatFbankConfig,
179
- KaldifeatFrameOptions,
180
- KaldifeatMelOptions,
181
- )
182
- from pathlib import Path
183
-
184
- torch.set_num_threads(1)
185
- torch.set_num_interop_threads(1)
186
-
187
- extractor = KaldifeatFbank(
188
- KaldifeatFbankConfig(
189
- frame_opts=KaldifeatFrameOptions(sampling_rate=16000),
190
- mel_opts=KaldifeatMelOptions(num_bins=80),
191
- device='cuda',
192
- )
193
- )
194
-
195
- cuts = CutSet.from_file('data/cuts_scd/cuts_${split}_ihm_scd.jsonl.gz')
196
-
197
- cuts.compute_and_store_features_batch(
198
- extractor=extractor,
199
- storage_path=Path('data/fbank_scd/feats_${split}_ihm_scd'),
200
- manifest_path=Path('data/manifests_scd/cuts_${split}_ihm_scd.jsonl.gz'),
201
- batch_duration=5000,
202
- num_workers=4,
203
- storage_type=LilcomChunkyWriter,
204
- )
205
- print('${split} features computed')
206
- "
207
- done
208
-
209
- log "Features with [SCD] tokens computed"
210
- fi
211
-
212
- # -----------------------------
213
- # Stage 5: Dump transcripts with [SCD] tokens for BPE training
214
- # -----------------------------
215
- if [ $stage -le 5 ] && [ $stop_stage -ge 5 ]; then
216
- log "Stage 5: Dump transcripts with [SCD] tokens for BPE"
217
-
218
- mkdir -p data/lm_scd
219
-
220
- gunzip -c data/manifests_scd/ami-ihm_supervisions_train_scd.jsonl.gz | \
221
- jq '.text' | sed 's:"::g' > data/lm_scd/transcript_words_scd.txt
222
-
223
- log "Transcripts with [SCD] tokens saved to data/lm_scd/transcript_words_scd.txt"
224
-
225
- # Show sample with [SCD] tokens
226
- log "Sample transcripts with [SCD] tokens:"
227
- head -5 data/lm_scd/transcript_words_scd.txt
228
- fi
229
-
230
- # -----------------------------
231
- # Stage 6: Train BPE model with [SCD] as single token
232
- # -----------------------------
233
- if [ $stage -le 6 ] && [ $stop_stage -ge 6 ]; then
234
- log "Stage 6: Train BPE model with [SCD] token"
235
-
236
- lang_dir=data/lang_bpe_${vocab_size}_scd
237
- mkdir -p $lang_dir
238
-
239
- echo "<eps> 0" > $lang_dir/words.txt
240
- echo "!SIL 1" >> $lang_dir/words.txt
241
- echo "<UNK> 2" >> $lang_dir/words.txt
242
-
243
- cat data/lm_scd/transcript_words_scd.txt | \
244
- grep -o -E '\w+|\[SCD\]' | sort -u | \
245
- awk '{print $0, NR+2}' >> $lang_dir/words.txt
246
-
247
- num_words=$(wc -l < $lang_dir/words.txt)
248
- echo "<s> ${num_words}" >> $lang_dir/words.txt
249
- num_words=$(wc -l < $lang_dir/words.txt)
250
- echo "</s> ${num_words}" >> $lang_dir/words.txt
251
- num_words=$(wc -l < $lang_dir/words.txt)
252
- echo "#0 ${num_words}" >> $lang_dir/words.txt
253
-
254
- # Use modified BPE trainer that treats [SCD] as single token
255
- ./local/train_bpe_model_scd.py \
256
- --lang-dir $lang_dir \
257
- --vocab-size $vocab_size \
258
- --transcript data/lm_scd/transcript_words_scd.txt \
259
- --task-tokens "[SCD]"
260
-
261
- if [ ! -f $lang_dir/L_disambig.pt ]; then
262
- ./local/prepare_lang_bpe.py --lang-dir $lang_dir
263
- fi
264
-
265
- log "BPE model with [SCD] token trained successfully"
266
- fi
267
-
268
- log "Data preparation with [SCD] tokens complete!"
269
- log ""
270
- log "Next steps:"
271
- log "1. Verify [SCD] tokens in: data/lm_scd/transcript_words_scd.txt"
272
- log "2. Check BPE model includes [SCD] as single token: data/lang_bpe_${vocab_size}_scd/tokens.txt"
273
- log "3. Use data/manifests_scd/cuts_*_ihm_scd.jsonl.gz for training"
274
- log "4. Update your training script to use lang_dir=data/lang_bpe_${vocab_size}_scd"