Найти исходник: целый _orig, не срез
$ $V $DC/sync.py measure · целые TX##_MIC###_*_orig.wav в 99_Pipeline/DJI_Audio
⇒ источник на каждого говорящего · ✓ не _edit, не _timeline, не камера
Уровень по речи, не по пику
$ $V $AC/audio.py stems → clean (речь к −30 LUFS, alimiter level=disabled)
⇒ стем float32 без срезанных пиков · ✓ до лимитера только f32
Чистка: изоляция голоса + живая петличка
$ $X/bin/voice_isolate --wet 100 --quality high · $V $HC/solo.py dialog (clean: isolate)
⇒ варианты raw · soft · clean · warm · ✓ сдвиг ≤ 48 сэмплов
Лестница на слух — выбирает Роман
👤 Роман: варианты голоса на странице версии, один кусок на −16 LUFS; «# ссылка» → выбор
⇒ sound.speech в задании · ✓ выбор или объявленное умолчание
Речь по сэмплам, тон комнаты
$ $V $AC/audio.py assemble · $V $SC/sc_sound.py dialog · nat
⇒ dialogue.wav: стыки в тишине · ✓ щелчков нет, стыки в тишине
Музыка и звуки: настроение и динамика
$ $V $S music --job $JOB · $V $SC/sc_music.py plan · $V $AC/audio.py ladder --what music
⇒ трек и звуки на блок, варианты на слух · ✓ музыка ниже речи · выбор Романа
Мастер −14 LUFS и сверка речи
$ $V $SC/sc_sound.py master · $V $HC/solo.py verify · $V $SC/sc_qc.py asr
⇒ мастер: −14 ±1 LUFS, пик ≤ −1 dBTP · ✓ собранная речь = лист