Ворклог по задаче "Исследовать параметрический синтез русских звуков и переходов между ними"
Новые выводы по устройству синтезатора и обратимости
Проведён разбор полного пути VoiceScenario -> PCM.
1. Синтез полностью находится в нашем коде
Уточнено, что никакого внешнего скрытого звукового движка, который формирует PCM, нет. Конечный массив звуковой дорожки целиком вычисляется внутри synthesizeScenario:
VoiceScenario -> VoiceControlState(t) -> excitation -> resonators -> value -> Float32Array.
На каждом sample код самостоятельно вычисляет итоговое значение и записывает его в output[sampleIndex]. Браузерный AudioBufferSourceNode затем лишь воспроизводит уже готовый PCM.
Это означает, что весь DSP можно инструментировать и исследовать на каждом шаге.
2. Управляющие параметры и измеряемые акустические метрики — разные уровни
После исправления представления сценария стало видно, что даже почти постоянные управляющие параметры дают высокочастотные изменения в измеряемом аудио. Это ожидаемо.
Причины:
- постоянный
f0Hzзадаёт скорость измененияvoicePhase, а не постоянное значение waveform; - постоянный
noiseLevelуправляет амплитудой случайного источника, который меняется каждый sample; - резонаторы имеют внутреннее stateful-состояние (
low,band) и продолжают динамически изменяться даже при постоянных параметрах; - RMS, spectralFlatness и dominantFrequency зависят сразу от нескольких управляющих параметров и внутреннего DSP-состояния.
Поэтому control curve != measured acoustic curve.
3. Найден дополнительный скрытый для сценария слой: внутреннее DSP-состояние
Между VoiceControlState и PCM существуют внутренние состояния:
voicePhase;resonator1/2/3.low;resonator1/2/3.band;- состояние детерминированного PRNG;
- активные automation.
Именно этот слой объясняет, почему почти горизонтальные управляющие линии могут приводить к сложному высокочастотному waveform и неровным акустическим метрикам.
4. Следующее направление исследования
Нужно перейти от вопроса "какая метрика лога соответствует параметру" к задаче идентификации системы:
как изменение каждого параметра VoiceControlState влияет на waveform и на измеримые акустические признаки?
Предлагаемый эксперимент: parameter sweep по каждому управляющему параметру при фиксированных остальных и сбор waveform + спектральных/временных характеристик. Это позволит построить карту control -> acoustic features и понять, какие параметры реально наблюдаемы из аудио, какие зависят от комбинаций параметров, а какие текущим логгером вообще не видны.
Также обсуждена базовая теория PCM: постоянный unsigned 8-bit PCM уровень (например 255,255,255,...) не даёт устойчивого тона, потому что нет периодического изменения; слышимы в основном переходы. Это подчёркивает, что отдельное значение PCM — мгновенная амплитуда, а частота/тембр/громкость являются свойствами структуры последовательности во времени.
Исследовать параметрический синтез русских звуков и переходов между ними.