# Смешение говорящих внутри ASR-сегментов **Дата:** 2026-08-14 **Статус:** проверка на трёх русскоязычных рабочих созвонах. Не оценка DER и не решение о единице привязки спикера к тексту. ## Вопрос Воспроизводится ли смешение говорящих внутри ASR-сегментов на других записях, или результат разведки — особенность одной встречи на троих? В [разведочном замере](2026-08-12-diarization-feasibility.md) 27% сегментов контрольной записи содержали не меньше секунды чужой речи. На них приходилось больше половины времени ASR-сегментов. Проверка повторена на тех же трёх записях, на которых калибровалась диаризация, включая два разговора на двоих. ## Метод ASR выполнялся через модель по умолчанию ONNX-пути `gigaam-v3-e2e-rnnt` INT8 с языком `ru`. Диаризация выполнялась через `sherpa-onnx` 1.13.5 с выбранной в [калибровке](2026-08-14-diarization-calibration.md) конфигурацией: - сегментация `sherpa-onnx-pyannote-segmentation-3-0`; - эмбеддинги `wespeaker_en_voxceleb_resnet34_LM.onnx`; - `FastClusteringConfig.threshold=0.89`; - автоматическое определение числа кластеров (`num_clusters=-1`). Для каждого ASR-сегмента считалось перекрытие с интервалами каждого кластера. Кластер с максимальным перекрытием считался мажоритарным, а сумма перекрытий остальных кластеров — чужой речью. Сегменты разделены на четыре категории: - **чистый** — перекрытие только с одним кластером; - **с поддакиванием** — меньше 1 секунды чужой речи; - **с чужой репликой** — не меньше 1 секунды чужой речи; - **без спикера** — нет перекрытия с интервалами диаризации. Время категории — сумма длительностей попавших в неё ASR-сегментов. Это не сумма времени речи: интервалы разных кластеров могут перекрываться при наложенной речи. Метрика отвечает на узкий вопрос, насколько огрубляет текст одна метка спикера на весь ASR-сегмент. Она не измеряет точность диаризации. ## Результаты | Запись | Участников | ASR-сегментов | Чистые | Поддакивание <1 с | Чужая реплика ≥1 с | Без спикера | |---|---:|---:|---:|---:|---:|---:| | Data Test | 3 | 274 | 164 (59,9%) | 30 (10,9%) | **74 (27,0%)** | 6 (2,2%) | | T2 BDMA | 2 | 223 | 167 (74,9%) | 34 (15,2%) | **14 (6,3%)** | 8 (3,6%) | | Yantar | 2 | 339 | 275 (81,1%) | 20 (5,9%) | **24 (7,1%)** | 20 (5,9%) | | Запись | Время всех ASR-сегментов | Время сегментов с чужой репликой ≥1 с | Доля времени | |---|---:|---:|---:| | Data Test | 21,89 мин | **11,20 мин** | **51,2%** | | T2 BDMA | 12,56 мин | **1,53 мин** | **12,2%** | | Yantar | 15,93 мин | **2,67 мин** | **16,8%** | На двух разговорах на двоих вместе чужая реплика не меньше секунды встречается в 38 из 562 сегментов (6,8%) и затрагивает 4,20 из 28,49 минуты (14,7%). По сравнению со встречей на троих это в четыре раза меньше по доле сегментов и примерно в 3,5 раза меньше по доле времени. ## Вывод Смешение говорящих внутри ASR-сегмента — общее свойство проверенного материала, а не аномалия одной записи: оно воспроизвелось на обоих разговорах на двоих. Однако тяжесть сильно зависит от характера разговора. Значение 27% сегментов и 51% времени не переносится на двухсторонние созвоны: там получено 6–7% сегментов и 12–17% времени. Мажоритарная метка на весь ASR-сегмент поэтому остаётся заметным огрублением даже на разговорах на двоих, а на плотной встрече втроём теряет реплики в массовом масштабе. Эти данные не выбирают единицу привязки сами по себе, но исключают предположение, что сегментная привязка безопасна для всех обычных созвонов без пословной привязки или явной пометки качества. ## Ограничения - Все три записи — русскоязычные рабочие созвоны одного пользователя; другие микрофоны, шумы и стили разговора не представлены. - Диаризация служит опорной разметкой и сама содержит ошибки. На контрольной записи есть ложный остаточный кластер, редкие пропуски и неполная разметка перекрывающейся речи. - На двухсторонних записях один голос заметно доминирует по времени. Баланс реплик может влиять на долю смешанных сегментов. - Порог 1 секунда разделяет короткие вставки и потенциально потерянные реплики, но не доказывает смысловую важность каждого фрагмента. ## Воспроизводимость Расчёт выполняется скриптом [`bench_conflict.py`](../../.scratch/diarization/bench_conflict.py): ```powershell $env:PYTHONIOENCODING = "utf-8" uv run --with sherpa-onnx python .scratch/diarization/bench_conflict.py ` "<путь к записи>" 0.89 8 ``` Медиа и сырые JSON не добавлены в репозиторий: они содержат локальные пути и относятся к рабочим созвонам. SHA-256 всех трёх исходных файлов зафиксированы в [отчёте о калибровке](2026-08-14-diarization-calibration.md).