Ворклог по задаче "Исследовать обратный дешифратор: звук → VoiceScenario"

14 сент. 2026 г., 18:48:58

Прогресс по визуализации и обратному декодированию

Перепроверена семантика VoiceScenario по фактической реализации synthesizeScenario.

Что подтверждено

  • animate.to после окончания duration НЕ сбрасывается. После завершения automation state[param] = to, сама automation удаляется, но новое значение остаётся активным до следующей команды.
  • set также меняет состояние постоянно, пока параметр не будет изменён снова.
  • Новая animate начинается от фактического текущего значения параметра на момент команды.
  • Для массива сценариев initial используется только у первого сценария, последующие продолжают текущее состояние без reset.

Найденная проблема визуализатора

Старый ScenarioVisualizer отображал только активные участки animate, из-за чего исходный сценарий визуально выглядел "рваным". Это не соответствовало реальному состоянию синтезатора.

Визуализатор перепроектирован на отображение полного VoiceControlState(t): значения идут непрерывно от начала до конца сценария, включая удержание последнего to после окончания duration, set, прерывание старых automation и продолжение состояния между составными сценариями.

Архитектурный вывод

Логика исполнения сценария (prepareScenario, evaluateBezier, updateAutomations, executeCommand) не должна дублироваться между синтезатором и визуализатором. Создана отдельная задача на вынос общего runtime-модуля, чтобы DSP и визуализатор использовали одну state machine.

Вывод по текущему декодеру

Даже после исправления визуализации видно, что текущий лог и сценарий находятся на разных уровнях представления. Сценарий содержит управляющие параметры, а лог содержит наблюдаемые акустические признаки. Прямое соответствие вида RMS -> sourceLevel, dominantFrequency -> f0Hz и т.п. в общем случае некорректно.

Также подтверждено, что исходный сценарий имеет существенно больше управляющих параметров, чем текущий лог акустических метрик, поэтому обратимость Scenario -> Sound -> Log -> Scenario в текущей архитектуре физически недоопределена.

14.09.2026

Проверить, можно ли автоматически восстанавливать сценарий генератора из записанного звука, сначала на собственных синтетических примерах с известным ground truth, затем на человеческой речи.