Ворклог по задаче "Исследовать измеримые признаки речевого сигнала до построения нового синтезатора"

15 сент. 2026 г., 18:44:24

Промежуточный итог: текущий эксперимент провален

На текущем этапе ни один из реализованных/предложенных сенсоров не дал хоть сколько-нибудь полезной, визуально устойчивой или интерпретируемой информации для различения речевых звуков.

Это важно зафиксировать как отрицательный результат, а не пытаться «дожимать» эксперимент оптимистичными эвристиками.

Что пробовали

Обсуждались и/или предлагались сенсоры по временной области:

  • RMS / средняя энергия;
  • peak amplitude;
  • zero crossing rate;
  • mean |Δx|;
  • max |Δx|;
  • autocorrelation / periodicity;
  • pitch estimate.

Затем была попытка построить грубый sibilanceSensor для С/Ш через:

  • высокочастотную энергию;
  • spectral centroid;
  • разделение энергии ниже/выше условной границы;
  • spectral concentration.

После этого предложен грубый frequency-band sensor с 12 логарифмическими полосами примерно от 60 Hz до 14 kHz.

Практический результат: никакой из этих подходов пока не показал даже приблизительно полезной картины, которая позволяла бы уверенно сказать, что измерения отражают различия между известными произнесёнными звуками.


Основные причины провала

1. ИИ слишком рано начал «проектировать решение» вместо измерительного эксперимента

Главная ошибка — преждевременный переход от вопроса «что мы реально видим в данных?» к вопросу «какой сенсор должен детектить С/Ш?».

В результате появились эвристики вроде условной границы 5.5 kHz, sibilance-presence, набора заранее выбранных frequency bands и ожидаемых графиков до того, как была получена хоть одна подтверждающая серия реальных измерений.

Это повторяет уже наблюдавшуюся проблему: код выглядит правдоподобно, но основание под ним не доказано экспериментом.

2. Признаки сами по себе измеримы, но их диагностическая ценность не доказана

RMS, ZCR, |Δx|, autocorrelation и спектральные метрики действительно вычисляются корректно как свойства waveform. Но из этого не следует, что они полезны для различения фонем/механизмов речи в конкретной записи.

Например два разных звука могут иметь очень похожие RMS/ZCR, а один и тот же звук — сильно менять эти значения в зависимости от громкости, расстояния до микрофона и контекста.

3. Нормализация может уничтожать именно ту информацию, которую мы пытаемся увидеть

Попытка в каждом кадре нормализовать band energies так, чтобы сумма была около 1, делает удобной визуализацию спектрального распределения, но одновременно удаляет абсолютную информацию об интенсивности.

Для сравнения сибилянтов и несибилянтов абсолютная шумовая энергия сама может быть важным признаком.

Нельзя заранее решать, какие компоненты сигнала являются «мешающим масштабом», пока мы не проверили их экспериментально.

4. Слишком грубые временные окна

Фиксированное окно 20–40 ms удобно технически, но разные речевые механизмы живут на разных масштабах:

  • burst может занимать считанные миллисекунды;
  • pitch требует нескольких периодов;
  • формантные структуры требуют другого компромисса;
  • устойчивый фрикативный шум может длиться сотни миллисекунд.

Один масштаб окна неизбежно скрывает часть событий.

5. Слишком грубые частотные полосы

12 полос типа 2.5–4 kHz, 4–6.3 kHz, 6.3–10 kHz могут быть настолько широкими, что реальные локальные спектральные различия внутри них просто исчезают.

При этом переход сразу к десяткам полос без доказанной пользы тоже создаст только больше данных, а не больше понимания.

6. Нет эталонной экспериментальной процедуры

Пока отсутствует строгий набор сравнительных записей:

  • одинаковый микрофон;
  • одинаковое расстояние;
  • одинаковая громкость;
  • несколько повторов одного звука;
  • несколько разных звуков;
  • сохранённые исходные PCM;
  • одинаковая обработка;
  • возможность наложить/сравнить метрики между повторами.

Без этого невозможно отличить устойчивый признак фонемы от случайной вариации записи.

7. Пока анализируется «одна запись», а не статистика повторов

Один график почти ничего не доказывает.

Нужно минимум несколько повторов каждого класса и сравнение распределений признаков:

  • внутриклассовая вариативность;
  • межклассовое расстояние;
  • устойчивость во времени;
  • чувствительность к громкости и микрофону.

Если разброс одного и того же звука больше, чем разница между двумя звуками, сенсор бесполезен для нашей задачи.

8. Слишком ранняя привязка к буквам

С, Ш, Ф — полезные тестовые классы, но сенсор не должен начинаться с предположения о букве.

Правильнее сначала находить объективные различия между наборами записей, а потом уже смотреть, чему они соответствуют артикуляционно и фонетически.

9. Возможные проблемы с самим исходным audioData

До дальнейших выводов необходимо отдельно проверить:

  • что именно содержит audioData;
  • действительно ли это PCM с микрофона;
  • тип данных (Uint8, Float32, другое);
  • корректный center/DC offset;
  • реальный sampleRate;
  • нет ли до анализа браузерной/микрофонной обработки: AGC, noise suppression, echo cancellation;
  • не является ли audioData уже результатом AnalyserNode с ограниченной/изменённой семантикой.

Если входной сигнал уже автоматически нормализуется или фильтруется браузером, это может полностью менять наблюдаемые признаки.

10. Визуализация тоже может скрывать различия

Если каждый sensor сам выбирает normalized 0..1, визуально любые маленькие различия могут выглядеть значительными, а большие абсолютные различия — одинаково.

Для исследовательского инструмента первичными должны быть сырые значения с единицами измерения, а визуальная нормализация должна быть отдельным, прозрачным слоем.


Что считаем правильным следующим шагом

Не писать очередной «умный сенсор».

Сначала построить минимальную экспериментальную инфраструктуру:

  1. сохранять несколько коротких сырых записей с известной меткой;
  2. гарантированно знать формат PCM и sampleRate;
  3. уметь рисовать сам waveform без преобразований;
  4. уметь строить обычную подробную спектрограмму/STFT без попытки классификации;
  5. сравнивать несколько повторов одного звука рядом;
  6. только после визуального обнаружения устойчивого различия выделять его в отдельный sensor-helper;
  7. оценивать sensor по статистике повторов, а не по одному удачному графику.

Главный вывод текущего этапа:

пока нет оснований утверждать, что предложенные сенсоры дают полезную информацию для распознавания звуков. Эксперимент нужно вернуть на более низкий уровень: сначала честно наблюдать waveform и спектр реальных записей, затем извлекать только те метрики, полезность которых подтверждена повторяемыми данными.

15.09.2026

Теоретически исследовать, какие свойства PCM и речевого сигнала мы можем гарантированно измерять во времени и частоте, прежде чем проектировать новый генератор.