Ворклог по задаче "Исследовать обратный дешифратор: звук → VoiceScenario"
Прогресс по визуализации и обратному декодированию
Перепроверена семантика VoiceScenario по фактической реализации synthesizeScenario.
Что подтверждено
animate.toпосле окончанияdurationНЕ сбрасывается. После завершения automationstate[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 в текущей архитектуре физически недоопределена.
Проверить, можно ли автоматически восстанавливать сценарий генератора из записанного звука, сначала на собственных синтетических примерах с известным ground truth, затем на человеческой речи.