{
  "version": 1,
  "campaign": "audio-quality-2026-10-13",
  "seed": 20261013,
  "sources": [
    {
      "id": "real1",
      "split": "development",
      "reference": "Длинная нестабильная фраза может упереться в восьмисекундное окно.\nОкно сокращается после совпадения слов двух decode. Если устойчивый префикс не появляется, дальнейший рост приводит к overflow. Тест длинной фразы существует, но использует символический decoder, а не реальный Whisper",
      "provenance": "user_verified_reference",
      "original": "локальный источник",
      "original_sha256": "1fe3801c3ac40622eee7df14cc4c38641f2c2c6316ff8b8bf4d9613b97326ca7",
      "wav": "sources/real1.wav",
      "wav_sha256": "81340e354bbf88bb84053a1f49c58da05171482267a709494b7aee243c32667f",
      "original_metrics": {
        "samples": 834048,
        "sample_rate": 44100,
        "seconds": 18.91265306122449,
        "rms_dbfs": -16.79674795196487,
        "peak_dbfs": 3.010299807987141,
        "near_clip_fraction_0_98": 0.007723776089625537,
        "full_scale_fraction": 0.007602679941682014
      },
      "metrics": {
        "samples": 907808,
        "sample_rate": 48000,
        "seconds": 18.912666666666667,
        "rms_dbfs": -16.79683421614427,
        "peak_dbfs": 3.1400511088859377,
        "near_clip_fraction_0_98": 0.007720795586731996,
        "full_scale_fraction": 0.0076051323627903695,
        "non_speech_rms_dbfs": -34.50982691540817
      },
      "estimated_last_speech_seconds": 18.2,
      "speech_boundary_kind": "energy_estimate"
    },
    {
      "id": "real2",
      "split": "held_out",
      "reference": "еполный PCM-чанк дополняется тишиной вместо накопления остатка.\nКаждый resampled frame разбивается отдельно; короткий остаток дополняется нулями. При иной пакетизации это способно добавлять лишнюю тишину и менять длительность.",
      "provenance": "user_verified_reference",
      "original": "локальный источник",
      "original_sha256": "54420a3075f63e02465ebb3c85ec1fe24535f023de2c4d462768270666a64b55",
      "wav": "sources/real2.wav",
      "wav_sha256": "fc0e06fb5d33ee83fe00e526d4235e365cbc4a913d16d56124d555a216ca3db4",
      "original_metrics": {
        "samples": 585216,
        "sample_rate": 44100,
        "seconds": 13.270204081632652,
        "rms_dbfs": -15.203458045778095,
        "peak_dbfs": 3.010299807987141,
        "near_clip_fraction_0_98": 0.012258721566054244,
        "full_scale_fraction": 0.012060504155730534
      },
      "metrics": {
        "samples": 636970,
        "sample_rate": 48000,
        "seconds": 13.270208333333333,
        "rms_dbfs": -15.203543094713538,
        "peak_dbfs": 3.1400511088859377,
        "near_clip_fraction_0_98": 0.01225646419768592,
        "full_scale_fraction": 0.012061792549099644,
        "non_speech_rms_dbfs": -33.38482696305972
      },
      "estimated_last_speech_seconds": 12.78,
      "speech_boundary_kind": "energy_estimate"
    },
    {
      "id": "male_ordinary",
      "split": "development",
      "reference": "Найди ближайший открытый аэропорт. Покажи маршрут на карте и расскажи, какая там сейчас погода.",
      "provenance": "silero_cpu_generated_reference",
      "original": "локальный источник",
      "original_sha256": "713a9ba107931c3de0e03895f81890136c2051b6419e63dda77c890551e19acf",
      "wav": "sources/male_ordinary.wav",
      "wav_sha256": "5295438eacbdd874c38f07a855f45fda32521dd67e5ed1fbecb6742fdd30bef4",
      "original_metrics": {
        "samples": 328800,
        "sample_rate": 48000,
        "seconds": 6.85,
        "rms_dbfs": -18.08741109463064,
        "peak_dbfs": -0.4028308057020394,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0
      },
      "metrics": {
        "samples": 328800,
        "sample_rate": 48000,
        "seconds": 6.85,
        "rms_dbfs": -18.08741109463064,
        "peak_dbfs": -0.4028308057020394,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0,
        "non_speech_rms_dbfs": -46.30762853130897
      },
      "estimated_last_speech_seconds": 6.66,
      "speech_boundary_kind": "synthetic_source_estimate",
      "voice": "aidar",
      "synthesis_ms": 1415.5792849996942,
      "seed": 20261013
    },
    {
      "id": "male_codes",
      "split": "development",
      "reference": "Рейс ТЕСТ сто двадцать три. Скорость тысяча километров в час. Осталось тридцать минут. Полоса три тысячи пятьсот метров.",
      "provenance": "silero_cpu_generated_reference",
      "original": "локальный источник",
      "original_sha256": "473f3c0717269de5e6357fec62536319d1f60ec1201f664502898e130a7f2de8",
      "wav": "sources/male_codes.wav",
      "wav_sha256": "d471f08092bd5bd57fb55ebe44aacf8e83549402b9ed2126746ea766354abcad",
      "original_metrics": {
        "samples": 429600,
        "sample_rate": 48000,
        "seconds": 8.95,
        "rms_dbfs": -19.770218742268177,
        "peak_dbfs": -0.3295620561146074,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0
      },
      "metrics": {
        "samples": 429600,
        "sample_rate": 48000,
        "seconds": 8.95,
        "rms_dbfs": -19.770218742268177,
        "peak_dbfs": -0.3295620561146074,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0,
        "non_speech_rms_dbfs": -45.931091508772255
      },
      "estimated_last_speech_seconds": 8.82,
      "speech_boundary_kind": "synthetic_source_estimate",
      "voice": "aidar",
      "synthesis_ms": 612.2116750011628,
      "seed": 20261013
    },
    {
      "id": "female_ordinary",
      "split": "held_out",
      "reference": "Найди аэропорт с самым слабым ветром. Проверь открытость аэропорта и наличие свободной полосы. Покажи его на карте.",
      "provenance": "silero_cpu_generated_reference",
      "original": "локальный источник",
      "original_sha256": "b8af0c4b65761222d42e2b221ecdcfba7d4bc42184322d6ffeb50b62efc90f13",
      "wav": "sources/female_ordinary.wav",
      "wav_sha256": "53097806a1b9ad46ceef97dcd03e1f2acc11dbfa5c73c40899a0b0b0c8146408",
      "original_metrics": {
        "samples": 340800,
        "sample_rate": 48000,
        "seconds": 7.1,
        "rms_dbfs": -19.89816946357206,
        "peak_dbfs": -1.5816106049385716,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0
      },
      "metrics": {
        "samples": 340800,
        "sample_rate": 48000,
        "seconds": 7.1,
        "rms_dbfs": -19.89816946357206,
        "peak_dbfs": -1.5816106049385716,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0,
        "non_speech_rms_dbfs": -52.44196309881846
      },
      "estimated_last_speech_seconds": 6.82,
      "speech_boundary_kind": "synthetic_source_estimate",
      "voice": "xenia",
      "synthesis_ms": 530.879312002071,
      "seed": 20261013
    },
    {
      "id": "female_codes",
      "split": "held_out",
      "reference": "Рейс ТЕСТ четыреста пятьдесят шесть. Скорость восемьсот километров в час. Осталось двадцать минут. Полоса две тысячи восемьсот метров.",
      "provenance": "silero_cpu_generated_reference",
      "original": "локальный источник",
      "original_sha256": "6d2dd1c9e3412c40bfc4e816478f189a2a5ff901b4a82ad825a141ccccbf9ff8",
      "wav": "sources/female_codes.wav",
      "wav_sha256": "ade5026973fed79c01878e52f26f97281e5ecc5c58e9814cdf9f4f1d170532a1",
      "original_metrics": {
        "samples": 405000,
        "sample_rate": 48000,
        "seconds": 8.4375,
        "rms_dbfs": -20.102449437566648,
        "peak_dbfs": -1.0793283031230911,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0
      },
      "metrics": {
        "samples": 405000,
        "sample_rate": 48000,
        "seconds": 8.4375,
        "rms_dbfs": -20.102449437566648,
        "peak_dbfs": -1.0793283031230911,
        "near_clip_fraction_0_98": 0.0,
        "full_scale_fraction": 0.0,
        "non_speech_rms_dbfs": -53.132586782768875
      },
      "estimated_last_speech_seconds": 8.1,
      "speech_boundary_kind": "synthetic_source_estimate",
      "voice": "xenia",
      "synthesis_ms": 584.8454680017312,
      "seed": 20261013
    }
  ],
  "scenario_types": {
    "1": [
      "muted_connect",
      "apply_constraints",
      "mute_unmute",
      "late_capture_cancel",
      "echo_only",
      "double_talk"
    ],
    "2": [
      "ordinary",
      "quiet_minus18",
      "quiet_codes",
      "mixed_levels",
      "loud_clipped",
      "long_pauses"
    ],
    "3": [
      "steady_snr15_5",
      "keyboard_impulses",
      "babble",
      "quiet_endings_noise",
      "reverb",
      "silence_noise"
    ],
    "4": [
      "quiet_to_loud",
      "loud_to_quiet",
      "changing_noise",
      "quiet_ending",
      "pause",
      "native_vs_causal"
    ],
    "5": [
      "short_command",
      "numbers_codes",
      "internal_pauses",
      "quiet_ending",
      "long_sentence",
      "separate_phrases"
    ],
    "6": [
      "quiet_problem",
      "long_repeated_words",
      "end_during_decode",
      "abort_during_decode",
      "bounded_backlog",
      "silence_noise_diagnostic_cost"
    ]
  },
  "max_types_per_stage": 6,
  "max_profiles_per_scenario": 3,
  "max_repeats": 3,
  "baseline_recognizer": "existing H100 Whisper large-v3-turbo",
  "normalization": "NFKC; lower case; ё->е; punctuation->space; collapse whitespace; CER excludes spaces",
  "tts": {
    "engine": "Silero",
    "model": "локальный источник",
    "sha256": "50081637b602126ee06cb3bc8a744d25651d2da149ee8864b9a379bfdd934437",
    "device": "cpu",
    "rate": 48000
  },
  "runtime": {
    "python": "3.12.3",
    "ffmpeg": "ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers"
  },
  "source_revisions": {
    "chat": "fc915a16e01c24f52f72480e66e06ffbb638eff8",
    "voice": "6f809de45551d73b6f2cf3280cd039fed9bacbde",
    "rag": "3a9131682ef1fa4817c338a0da7308c81f1762fb"
  },
  "originals_unchanged": {
    "1.flac": "1fe3801c3ac40622eee7df14cc4c38641f2c2c6316ff8b8bf4d9613b97326ca7",
    "2.flac": "54420a3075f63e02465ebb3c85ec1fe24535f023de2c4d462768270666a64b55",
    "trascript.txt": "11918988bcde604f19f30026c9b09eb500c41fc75d0ee90a4ff63e540194252b"
  },
  "stage": "completed",
  "normal_production_processing_changed": false,
  "rnnoise": {
    "package": "@jitsi/rnnoise-wasm",
    "version": "0.2.1",
    "sync_bundle_sha256": "05a553f523d59502d133a6d05dbf1878137c9e7bcff06edf5561f7001b62f95f",
    "sampling_rate": 48000
  },
  "input_volume": {
    "own_virtual_sink": "100% / 0 dB",
    "own_virtual_source": "100% / 0 dB",
    "far_end_sink": "100% / 0 dB",
    "physical_devices_changed": false
  },
  "analysis_package_versions": {
    "numpy": "1.26.4",
    "scipy": "1.17.1",
    "soundfile": "0.14.0",
    "nats-py": "2.11.0"
  },
  "control_resampling": "scipy.signal.resample_poly to PCM16LE/16 kHz; float checkpoints retained; actual server resample is measured separately",
  "completed_at_utc": "2026-10-14T03:07:22.885958+00:00",
  "source_metrics_definition": "original_metrics is historical FFmpeg mono downmix at original rate; original-channel-audit.json records unchanged original channels",
  "original_channel_audit": "results/original-channel-audit.json",
  "final_source_revisions": {
    "chat": "93241b266ae080ee390cded6ab451546a8544683",
    "diagnostic_frontend": "7531ca8939189aa9931712d31c3dcef41373b556",
    "voice": "a30a7a3167e40528b482371645c149243299b75b",
    "rag": "f58b688f16bf9df43dba15685c53e419472f9565"
  },
  "capture_correction": "results/capture-correction.json"
}
