{
  "schema": "asr_rover_recommendation.v4",
  "operation": "asr-rover-recommendation-report-20260727-v1",
  "in_sample_diagnostic": true,
  "wer_units": "все *_wer — ДОЛИ (0..1); проценты только при отображении в PDF",
  "corpus": {
    "base": "all-11 clip_id intersection",
    "n_clips": 488,
    "ref_words": 20901,
    "empty_refs": 0,
    "note": "Диагностика 11 конфигураций восьми моделей и БАТЧ-состав — база 488 / 20901 (all-11 пересечение, in-sample). ПОТОКОВАЯ модель и её fallback — отдельная база 489 / 20904 (потоковое пересечение, честная 5-fold OOF). Базы 488 и 489 разделены и без оговорки не сравниваются."
  },
  "reference_correction": {
    "ref_words_before": 21123,
    "ref_words_after": 20901,
    "total_removed": 222,
    "service_content_tokens": 220,
    "within_word_glue_savings": 2,
    "clips_with_markers": 67,
    "marker_occurrences": 123,
    "distinct_variants": 33,
    "nested": 0,
    "unbalanced": 0,
    "within_word_markers": 2,
    "reference_marker_absence_in_hyp_not_penalized": true,
    "hypothesis_bracket_content_not_removed_counts_as_extra_words": true,
    "rule_text": "Служебный текст эталона в квадратных скобках ([unclear],[pause],[disfluency|э],…) удаляется ДО нормализации и подсчёта WER, поэтому его отсутствие в гипотезе не штрафуется. Скобки и их содержимое в САМОЙ гипотезе НЕ удаляются и считаются обычными лишними словами. Отдельные варианты написания «телеграм»/«telegram» и «дискорд»/«discord» канонизируются (симметрично в эталоне и гипотезе) и не считаются ошибкой только из-за различия алфавита."
  },
  "result_1_diagnostic_all11_cleaned_ref": {
    "weighted_rover": {
      "micro_wer": 0.06932682646763312,
      "mean_wer": 0.06807929516061291,
      "median_wer": 0.046620299934796786,
      "substitutions": 505,
      "insertions": 82,
      "deletions": 862,
      "ref_words": 20901
    },
    "unweighted_rover": {
      "micro_wer": 0.07286732692215683,
      "mean_wer": 0.06896304380154372,
      "median_wer": 0.05201569264069264,
      "substitutions": 543,
      "insertions": 86,
      "deletions": 894,
      "ref_words": 20901
    },
    "single_engine_ranking": [
      {
        "engine": "gigaam_v3_batch",
        "n_scored_clips": 488,
        "substitutions": 638,
        "insertions": 168,
        "deletions": 754,
        "edits": 1560,
        "ref_words": 20901,
        "micro_wer": 0.07463757714941868,
        "mean_wer": 0.07428751487563258,
        "median_wer": 0.05128205128205128
      },
      {
        "engine": "gpt_realtime_whisper",
        "n_scored_clips": 488,
        "substitutions": 804,
        "insertions": 113,
        "deletions": 864,
        "edits": 1781,
        "ref_words": 20901,
        "micro_wer": 0.085211233912253,
        "mean_wer": 0.09111237463192742,
        "median_wer": 0.06451612903225806
      },
      {
        "engine": "faster_whisper_local",
        "n_scored_clips": 488,
        "substitutions": 787,
        "insertions": 211,
        "deletions": 1046,
        "edits": 2044,
        "ref_words": 20901,
        "micro_wer": 0.0977943639060332,
        "mean_wer": 0.09543707315030542,
        "median_wer": 0.07142857142857142
      },
      {
        "engine": "openai_whisper1_batch",
        "n_scored_clips": 488,
        "substitutions": 834,
        "insertions": 157,
        "deletions": 1061,
        "edits": 2052,
        "ref_words": 20901,
        "micro_wer": 0.09817712071192766,
        "mean_wer": 0.10118659535122,
        "median_wer": 0.07752403846153846
      },
      {
        "engine": "deepgram_batch",
        "n_scored_clips": 488,
        "substitutions": 900,
        "insertions": 141,
        "deletions": 1028,
        "edits": 2069,
        "ref_words": 20901,
        "micro_wer": 0.09899047892445338,
        "mean_wer": 0.10430371890407186,
        "median_wer": 0.07462686567164178
      },
      {
        "engine": "sber_salutespeech_v2_stream",
        "n_scored_clips": 488,
        "substitutions": 1145,
        "insertions": 138,
        "deletions": 987,
        "edits": 2270,
        "ref_words": 20901,
        "micro_wer": 0.10860724367255155,
        "mean_wer": 0.10860441856408906,
        "median_wer": 0.09090909090909091
      },
      {
        "engine": "sber_async_batch",
        "n_scored_clips": 488,
        "substitutions": 1099,
        "insertions": 133,
        "deletions": 1079,
        "edits": 2311,
        "ref_words": 20901,
        "micro_wer": 0.11056887230276063,
        "mean_wer": 0.11115309347340004,
        "median_wer": 0.09090909090909091
      },
      {
        "engine": "yandex_async_batch",
        "n_scored_clips": 488,
        "substitutions": 1126,
        "insertions": 177,
        "deletions": 1163,
        "edits": 2466,
        "ref_words": 20901,
        "micro_wer": 0.11798478541696569,
        "mean_wer": 0.10963973892046462,
        "median_wer": 0.09090909090909091
      },
      {
        "engine": "deepgram_streaming",
        "n_scored_clips": 488,
        "substitutions": 1023,
        "insertions": 149,
        "deletions": 1309,
        "edits": 2481,
        "ref_words": 20901,
        "micro_wer": 0.1187024544280178,
        "mean_wer": 0.11854081548171558,
        "median_wer": 0.0971675845790716
      },
      {
        "engine": "yandex_v3_stream",
        "n_scored_clips": 488,
        "substitutions": 1248,
        "insertions": 166,
        "deletions": 1312,
        "edits": 2726,
        "ref_words": 20901,
        "micro_wer": 0.13042438160853548,
        "mean_wer": 0.12531599863492277,
        "median_wer": 0.10869565217391304
      },
      {
        "engine": "nexara_batch",
        "n_scored_clips": 488,
        "substitutions": 850,
        "insertions": 1915,
        "deletions": 1023,
        "edits": 3788,
        "ref_words": 20901,
        "micro_wer": 0.18123534759102436,
        "mean_wer": 0.14903113547786095,
        "median_wer": 0.08295107033639143
      }
    ],
    "best_single": "gigaam_v3_batch",
    "n_single_engines": 11,
    "weight_basis": "reference-word accuracy (историческое RANK_WEIGHTS; НЕ WER; вставки не штрафуются)",
    "diagnostic_weights": {
      "gigaam_v3_batch": 11,
      "gpt_realtime_whisper": 10,
      "faster_whisper_local": 9,
      "nexara_batch": 8,
      "openai_whisper1_batch": 7,
      "deepgram_batch": 6,
      "sber_salutespeech_v2_stream": 5,
      "sber_async_batch": 4,
      "yandex_async_batch": 3,
      "deepgram_streaming": 2,
      "yandex_v3_stream": 1
    },
    "historical_diagnostic_only": true,
    "weight_note": "порядок этих весов отличается от micro-WER: напр. Nexara — вес 8 / место 4, но #11 по micro-WER. Рекомендуемые составы и веса — ТОЛЬКО Результаты 2/3.",
    "recomputed_with_current_normalize_ru": true
  },
  "result_2_recommended_batch": {
    "composition_weights": {
      "gigaam_v3_batch": 4,
      "faster_whisper_local": 3,
      "deepgram_batch": 2,
      "sber_async_batch": 1
    },
    "rank_priority": {
      "gigaam_v3_batch": 7,
      "faster_whisper_local": 6,
      "deepgram_batch": 4,
      "sber_async_batch": 3
    },
    "profile": "linear",
    "in_sample_descriptive": {
      "micro_wer": 0.06789148844552892,
      "mean_wer": 0.06781236702407498,
      "median_wer": 0.045454545454545456,
      "substitutions": 508,
      "insertions": 75,
      "deletions": 836,
      "edits": 1419,
      "ref_words": 20901,
      "n_scored_clips": 488
    },
    "gain_vs_baseline_pp": 0.674609,
    "baseline_engine": "gigaam_v3_batch",
    "recomputed_with_current_normalize_ru": true,
    "fixed_composition_note": "Состав ФИКСИРОВАН (gigaam4/faster3/deepgram2/sber_async1). Только фиксированная descriptive-оценка на 488, пересчитанная текущим normalize_ru; повторного OOF НЕ проводилось.",
    "historical_oof_selection_policy_pre_alias": {
      "pre_alias_historical": true,
      "note": "ИСТОРИЧЕСКАЯ 5-fold cross-validation процедуры ВЫБОРА до alias-нормализации; не пересчитывалась и НЕ используется в текущем числовом утверждении.",
      "micro_wer": 0.06884838046026506,
      "mean_wer": 0.06859906771053662,
      "median_wer": 0.047631048387096774,
      "edits": 1439,
      "win_tie_loss": {
        "win": 119,
        "tie": 290,
        "loss": 79
      },
      "selection_stability_exact": {
        "deepgram_batch+faster_whisper_local+gigaam_v3_batch+sber_async_batch::equal": 3,
        "deepgram_batch+faster_whisper_local+gigaam_v3_batch+sber_async_batch::linear": 1,
        "deepgram_batch+gigaam_v3_batch+openai_whisper1_batch+sber_async_batch::linear": 1
      }
    }
  },
  "result_3_recommended_streaming_final_utterance": {
    "model": "EQUAL voting weights 1:1:1:1 (fixed); rank_priority (tie-break) learned on train, identical in all 5 folds",
    "base": {
      "kind": "streaming 4-engine mode-specific intersection",
      "n_clips": 489,
      "ref_words": 20904
    },
    "composition_weights": {
      "gpt_realtime_whisper": 1,
      "sber_salutespeech_v2_stream": 1,
      "deepgram_streaming": 1,
      "yandex_v3_stream": 1
    },
    "rank_priority_tiebreak": {
      "gpt_realtime_whisper": 4,
      "sber_salutespeech_v2_stream": 3,
      "deepgram_streaming": 2,
      "yandex_v3_stream": 1
    },
    "profile": "equal",
    "voting_rule": "большинство голосов; порядок GPT→Sber→Deepgram→Yandex применяется ТОЛЬКО при ничьей 2:2 или четырёх разных вариантах",
    "oof": {
      "micro_wer": 0.07792766934557979,
      "mean_wer": 0.07728256380194304,
      "median_wer": 0.05405405405405406,
      "edits": 1629,
      "ref_words": 20904,
      "n_scored_clips": 489,
      "note": "честная 5-fold OOF на базе 489 (веса фиксированы 1:1:1:1, rank_priority обучается на train)"
    },
    "priority_selected_in_folds": "во ВСЕХ 5/5 folds (GPT→Sber→Deepgram→Yandex)",
    "research_comparison_linear_4_3_2_1": {
      "status": "ОТВЕРГНУТАЯ исследовательская ветка (подбор весов 1..6 не принят)",
      "weights": {
        "gpt_realtime_whisper": 4,
        "sber_salutespeech_v2_stream": 3,
        "deepgram_streaming": 2,
        "yandex_v3_stream": 1
      },
      "edits": 1621,
      "ref_words": 20904,
      "micro_wer": 0.0775449674703406,
      "advantage_over_equal_pp": 0.0382701875,
      "statistically_confirmed": false,
      "paired_bootstrap": {
        "method": "парный bootstrap по per-clip разностям (linear − equal), B=30000",
        "B": 30000,
        "ci95_linear_minus_equal_pp": [
          -0.1584859926,
          0.0772376193
        ]
      },
      "note": "точечно на 0.0382701875 п.п. лучше равных весов, но 95% ДИ включает ноль — преимущество статистически НЕ подтверждено; равные веса выбраны за простоту и устойчивость."
    }
  },
  "oof_method": "5-fold разбиение по clip_id (детерминированный хэш int.from_bytes(sha256('42:'+clip_id).digest()[:8],'big') % 5). Для ПОТОКОВОЙ модели состав и веса ФИКСИРОВАНЫ (1:1:1:1); на train выбирается ТОЛЬКО приоритет при ничьей (rank_priority), held-out оценивается один раз (в этих данных приоритет одинаков во всех 5 folds). Историческая батч-процедура ВЫБОРА состава описана отдельно (Результат 2) и в текущем числовом утверждении не используется.",
  "composition_rationale": {
    "error_overlap_definition": "Jaccard of per-reference-word error positions on cleaned refs (488)",
    "selected_batch_pair_overlaps": {
      "gigaam_v3_batch|faster_whisper_local": 0.480716,
      "gigaam_v3_batch|deepgram_batch": 0.472284,
      "gigaam_v3_batch|sber_async_batch": 0.444175,
      "faster_whisper_local|deepgram_batch": 0.522056,
      "faster_whisper_local|sber_async_batch": 0.463335,
      "deepgram_batch|sber_async_batch": 0.513454
    },
    "selected_live_pair_overlaps": {
      "gpt_realtime_whisper|sber_salutespeech_v2_stream": 0.468315,
      "gpt_realtime_whisper|deepgram_streaming": 0.441441,
      "gpt_realtime_whisper|yandex_v3_stream": 0.404185,
      "sber_salutespeech_v2_stream|deepgram_streaming": 0.493476,
      "sber_salutespeech_v2_stream|yandex_v3_stream": 0.487635,
      "deepgram_streaming|yandex_v3_stream": 0.43967
    },
    "selected_pairs_note": "перекрытие ошибок ВЫБРАННЫХ пар низкое (батч ~0.44-0.52, поток ~0.40-0.49) — движки дополняют друг друга.",
    "related_or_close_variant_overlap": {
      "sber_async|sber_stream": 0.845034,
      "faster_whisper|openai_whisper1": 0.649558,
      "yandex_async|yandex_stream": 0.657211,
      "deepgram_batch|deepgram_streaming": 0.576027
    },
    "related_or_close_variant_note": "Sber async/stream, Yandex async/stream, Deepgram batch/stream — варианты ОДНОГО провайдера; Faster-Whisper local и Whisper-1 — РОДСТВЕННЫЕ реализации семейства Whisper (не один провайдер). Общий вывод: высокая корреляция ошибок уменьшает пользу совместного включения.",
    "recomputed_with_current_normalize_ru": true
  },
  "application_rule": {
    "live_partial": "показывать GPT Realtime (одиночный)",
    "rover": "только ПОСЛЕ финализации одинаковой реплики (не на partial)",
    "voting": "большинство голосов; при ничьей 2:2 или четырёх разных вариантах — глобальный порядок GPT→Sber→Deepgram→Yandex",
    "engines_ge_3": "оставшиеся три движка голосуют равными весами 1:1:1 тем же глобальным порядком при разногласии — для ВСЕХ четырёх сценариев отказа, включая отказ Deepgram",
    "engines_le_2_or_mismatched_segment_id_or_timeout": "лучший доступный ОДИНОЧНЫЙ, без ожидания ROVER"
  },
  "live_fallback_by_unavailable_engine": {
    "deepgram_streaming": {
      "candidate_composition": "gpt_realtime_whisper+sber_salutespeech_v2_stream+yandex_v3_stream",
      "profile": "equal",
      "base_n_clips": 489,
      "base_ref_words": 20904,
      "oof": {
        "micro_wer": 0.0842900880214313,
        "mean_wer": 0.08387018319179446,
        "median_wer": 0.06451612903225806,
        "edits": 1762,
        "ref_words": 20904,
        "n_scored_clips": 489
      },
      "delta_micro_to_main_pp": 0.636242,
      "rejected": false,
      "decision": "использовать fallback-состав 1:1:1"
    },
    "gpt_realtime_whisper": {
      "candidate_composition": "deepgram_streaming+sber_salutespeech_v2_stream+yandex_v3_stream",
      "profile": "equal",
      "base_n_clips": 489,
      "base_ref_words": 20904,
      "oof": {
        "micro_wer": 0.0947187141216992,
        "mean_wer": 0.09332052297179359,
        "median_wer": 0.07692307692307693,
        "edits": 1980,
        "ref_words": 20904,
        "n_scored_clips": 489
      },
      "delta_micro_to_main_pp": 1.679104,
      "rejected": false,
      "decision": "использовать fallback-состав 1:1:1"
    },
    "sber_salutespeech_v2_stream": {
      "candidate_composition": "deepgram_streaming+gpt_realtime_whisper+yandex_v3_stream",
      "profile": "equal",
      "base_n_clips": 489,
      "base_ref_words": 20904,
      "oof": {
        "micro_wer": 0.08213738997321086,
        "mean_wer": 0.08102182288390906,
        "median_wer": 0.06153846153846154,
        "edits": 1717,
        "ref_words": 20904,
        "n_scored_clips": 489
      },
      "delta_micro_to_main_pp": 0.420972,
      "rejected": false,
      "decision": "использовать fallback-состав 1:1:1"
    },
    "yandex_v3_stream": {
      "candidate_composition": "deepgram_streaming+gpt_realtime_whisper+sber_salutespeech_v2_stream",
      "profile": "equal",
      "base_n_clips": 489,
      "base_ref_words": 20904,
      "oof": {
        "micro_wer": 0.07969766551856104,
        "mean_wer": 0.0806157436181379,
        "median_wer": 0.058823529411764705,
        "edits": 1666,
        "ref_words": 20904,
        "n_scored_clips": 489
      },
      "delta_micro_to_main_pp": 0.177,
      "rejected": false,
      "decision": "использовать fallback-состав 1:1:1"
    }
  },
  "streaming_base_489_note": "Потоковая модель и её fallback рассчитаны на mode-specific пересечении 489 записей / 20904 слов — основная честная OOF-база потоковой рекомендации, а НЕ sensitivity-check.",
  "public_release_note": "Служебные сведения приватного репозитория исключены; численные результаты и поля методики сохранены."
}
