# Streaming Sortformer: сравнение на Ryzen **Дата:** 2026-09-04 Streaming Sortformer обработал три 300-секундных фрагмента за `67,433` с против `103,242` с у свежего W0. Ускорение одной пары составило `34,68%`. Кандидат правильно определил число голосов на всех трех фрагментах; W0 на одном из них выделил два кластера вместо трех. У результата есть два заметных минуса. Sortformer оставил без говорящего `92` слова против `73` у W0 и потребовал около `551` МиБ памяти против `325` МиБ. Во время обеих ячеек была небольшая активность swap, поэтому одна пара показывает направление, но не устойчивость ускорения. ## Сравнение | Показатель | W0 | Sortformer | | --- | ---: | ---: | | Суммарный wall, с | `103,242` | `67,433` | | Ускорение | - | `34,68%` | | Ожидалось кластеров | `2 / 2 / 3` | `2 / 2 / 3` | | Получено кластеров | `2 / 2 / 2` | `2 / 2 / 3` | | Ошибок по числу кластеров | `1 из 3` | `0 из 3` | | Mapped purity на двух размеченных фрагментах | `0,7655 / 0,8915` | `0,8392 / 0,9176` | | Слов без говорящего | `73` | `92` | | Пиковый RSS, МиБ | `324,57` | `551,07` | | CPU time, с | `822,67` | `238,70` | | Прочитано из swap, КиБ | `492` | `224` | | Записано в swap, КиБ | `148` | `160` | Обе модели получили одинаковые заранее подготовленные mono/16 kHz float32 буферы и те же ASR-sidecar. W0 работал на восьми физических ядрах, Sortformer - с четырьмя закрепленными внутренними потоками. Загрузка моделей, декодирование аудио, чтение sidecar и расчет метрик в wall не входили. Sortformer прошел автоматические проверки формы вероятностей, диапазона значений, меток говорящих, текста, порядка слов и интервалов на всех трех фрагментах. Его mapped purity выше W0 на обоих фрагментах с опорной разметкой. При этом рост числа слов без говорящего требует слуховой проверки: по одной автоматике нельзя заключить, что качество кандидата в целом лучше. ## Как читать результат По исходному расписанию задача завершилась как `stop`, когда W0 не прошел проверку числа кластеров. После этого была выполнена одна диагностическая ячейка Sortformer на тех же входах, чтобы ответить на практический вопрос о кандидате. Пять повторных пар, полные записи и слуховая проверка не выполнялись. По этой паре Sortformer выглядит перспективно: ускорение оказалось выше целевого порога `30%`, модель правильно выделила три голоса на проблемном фрагменте и показала лучшую mapped purity. Для решения о внедрении нужны повторные парные замеры без активности swap и слуховая проверка мест, где слова остались без говорящего. Текущий результат уже достаточен, чтобы не отбрасывать кандидата и продолжить исследование отдельной задачей. ## Рецепты и техническая привязка W0 использовал `sherpa-onnx/core 1.13.6`, Pyannote Segmentation 3.0 FP32, WeSpeaker ResNet34 LM FP32, CPU provider, `window_shift_ratio=0.1`, `FastClustering(auto, 0.89)`, один процесс и одну сессию, `intra_op_threads=8`, `inter_op_threads=1`, `min_duration_on=0.3` и `min_duration_off=0.5`. Кандидат использовал NeMo-Speech.cpp commit `4f9676226f667d14608487df744f375db87127f8`, модель Streaming Sortformer v2 Q8_0 с SHA-256 `0679cfeb1ce356d0dea9470b31274f4bfc7eb927497d82005483770666da998a`, CPU backend, один процесс и один stream. Geometry и post-processing соответствовали [спецификации](../specs/2026-09-01-streaming-sortformer-cpu-experiment.md). Коммит исходного кода, выполнившего обе ячейки: `4c4a8be07b3653cede35b0435e6c9ef6cb3fb87d`. Закрытая основа и результаты сохраняются для следующих исследований. Их повторное использование должно быть явно описано в новой задаче.