وقتی خروجیِ یک پردازشگرِ صوت را کنار مرجع می‌گذاریم، باید روشن باشد که تغییرِ بهره را خطا می‌دانیم یا می‌خواهیم اثرش را کنار بگذاریم. این دو پرسش، عددِ یکسانی نمی‌سازند. در این درس، هندسهٔ SI-SDR را روی بردارهای کوتاه و کاملاً ساختگی باز می‌کنیم: برآورد را به بخشی در راستای مرجع و باقی‌مانده‌ای عمود بر آن تجزیه می‌کنیم. هیچ فایلِ صوتی، مدلِ گفتار یا ارزیابیِ شنیداری در کار نیست؛ پاسخِ درستِ محاسبه، شاهدِ کیفیتِ محصول نیست.

۱. دو موجِ هم‌تراز و یک قراردادِ عددیِ محدود

قاب‌های هم‌اندازه برای جفت‌کردنِ نمونه‌های مرجع و برآورد
تصویر مفهومی: قاب‌های هم‌اندازه برای جفت‌کردنِ نمونه‌های مرجع و برآورد؛ بدون مقیاس عددی و مستقل از نتایج اجرای کد.

ورودیِ تابع، دو تاپلِ هم‌اندازه با یک تا شش عضو است. هر عضو دقیقاً عددِ صحیحِ پایتون، از منفی هشت تا مثبت هشت است؛ بولی، زیرکلاس، اعشار و تبدیلِ بی‌صدای رشته پذیرفته نمی‌شوند. این اعداد، دامنه‌های نسبیِ بی‌واحدِ انتخاب‌شده برای حسابِ دستی‌اند. بازهٔ کوچک، قراردادِ آموزشیِ ماست؛ آن را دامنهٔ مجازِ یک میکروفن، قالبِ PCM یا معیارِ عمومیِ صوت نمی‌نامیم.

جفت‌شدنِ نمونه‌های هم‌شماره از بیرون فراهم شده است. تابع فقط برابریِ طول را می‌سنجد؛ نرخ، مبدأِ زمانی و درستیِ واقعیِ هم‌ترازی را نمی‌داند. نمونه‌ای جابه‌جا یا حذف نمی‌شود تا امتیاز بهتر شود. مرجعِ نامناسب را هم نمی‌توان با محاسبهٔ دقیق اصلاح کرد. در درسِ SNR مرجع‌دار، اختلافِ مستقیمِ خروجی و مرجع سنجیده می‌شد و تغییرِ بهره نیز در خطا سهم داشت؛ اینجا آگاهانه پرسشِ متفاوتی می‌پرسیم.

میانگین را حذف نمی‌کنیم و ثابتِ کوچکی به مخرج نمی‌افزاییم. بنابراین بردارِ مرجعِ ثابت اما ناصفر معتبر است و مؤلفهٔ DC در هندسه حضور دارد. جمعِ مربعِ دامنه‌ها در این متن یک کمیتِ عددی است؛ بدون نرخ، مقیاسِ فیزیکی و تعریفِ اندازه‌گیری، آن را انرژیِ اندازه‌گیری‌شده برحسب ژول یا بلندیِ صدا معرفی نمی‌کنیم.

۲. تصویرِ عمودیِ برآورد روی مرجع را بسازیم

تصویرِ عمودیِ برآورد و بخشِ باقی‌ماندهٔ آن روی یک سازهٔ هندسی
تصویر مفهومی: تصویرِ عمودیِ برآورد و بخشِ باقی‌ماندهٔ آن روی یک سازهٔ هندسی؛ بدون مقیاس عددی و مستقل از نتایج اجرای کد.

مرجع را r و برآورد را e بنامیم. اگر جمعِ مربعِ r ناصفر باشد، ضریبِ آلفا برابر ضربِ داخلیِ e و r تقسیم بر جمعِ مربعِ r است. بردارِ هدف از ضربِ آلفا در r ساخته می‌شود؛ باقی‌مانده، e منهای همین هدف است. آلفا کمترین جمعِ مربعِ باقی‌مانده را میانِ تمام ضریب‌های اسکالر می‌دهد؛ هیچ فیلتر یا جابه‌جاییِ زمانی در این کمینه‌سازی وجود ندارد.

در مقالهٔ اصلیِ Le Roux و همکاران، بخش‌های مقایسه با SNR و تعریفِ معیارِ مستقل از مقیاس، همین تصویرِ عمودی را توضیح می‌دهند. نسبتِ خطی، جمعِ مربعِ هدف تقسیم بر جمعِ مربعِ باقی‌مانده است. وقتی هر دو مثبت‌اند، ده برابرِ لگاریتمِ ده‌دهیِ نسبت، SI-SDR برحسب دسی‌بل می‌شود. نسبتِ کسری می‌تواند دقیق باشد؛ لگاریتمِ شناورِ نمایش‌داده‌شده تقریب است.

شاهدِ دستیِ ما r برابر یک، دو، منفی‌یک و e برابر دو، یک، صفر است. ضربِ داخلی چهار و جمعِ مربعِ مرجع شش است؛ پس آلفا دوسوم می‌شود. هدف، دوسوم، چهارسوم، منفی‌دوسوم است و باقی‌مانده، چهارسوم، منفی‌یک‌سوم، دوسوم. جمعِ مربعِ هدف هشت‌سوم و جمعِ مربعِ باقی‌مانده هفت‌سوم است؛ نسبتِ دقیق هشت‌هفتم به دست می‌آید.

دو وارسیِ مستقلِ هندسی هم داریم: ضربِ داخلیِ مرجع و باقی‌مانده صفر می‌شود و دو جمعِ مربعِ هشت‌سوم و هفت‌سوم، مجموعاً پنج می‌دهند؛ همان جمعِ مربعِ e. این تجزیه، نویزِ فیزیکی را شناسایی نکرده است. باقی‌مانده فقط مؤلفه‌ای است که در راستای این مرجع قرار نمی‌گیرد؛ منشأ آن می‌تواند هر اختلافی در دادهٔ ورودی باشد.

۳. تغییرِ بهره، سکوت و نسبت‌های مرزی را جدا کنیم

دو سازهٔ هم‌شکل با مقیاسِ متفاوت در کنار یک نگهدارندهٔ خالی
تصویر مفهومی: دو سازهٔ هم‌شکل با مقیاسِ متفاوت در کنار یک نگهدارندهٔ خالی؛ بدون مقیاس عددی و مستقل از نتایج اجرای کد.

ضربِ برآورد در ضریبِ ناصفر، هدف و باقی‌مانده را با همان ضریب تغییر می‌دهد؛ جمعِ مربعِ هر دو در مربعِ ضریب ضرب می‌شود و نسبت ثابت می‌ماند. حتی وارونه‌کردنِ علامت نیز امتیاز را عوض نمی‌کند. این ویژگی برای برخی پرسش‌ها مفید است، اما اگر دامنه یا قطبیت اهمیت داشته باشد، حذفِ آن اختلاف انتخابِ مناسبی نیست. بزرگ‌بودنِ امتیاز، درست‌بودنِ بهره را اثبات نمی‌کند.

اگر مرجع سراسر صفر باشد، راستای تصویر تعریف نمی‌شود؛ وضعیت silent_reference و مقدارهای تهی می‌دهیم. برای مرجعِ ناصفر و برآوردِ سراسر صفر، هدف و باقی‌مانده هر دو صفرند؛ نسبت صفر به صفر تعریف نشده و وضعیت zero_estimate است. کوچک‌کردنِ پیوستهٔ یک برآوردِ ناصفر، جای تعریفِ مقدارِ بردارِ دقیقاً صفر را نمی‌گیرد؛ حد می‌تواند به راستای نزدیک‌شدن وابسته باشد.

اگر برآورد ناصفر و عمود بر مرجع باشد، هدف صفر و باقی‌مانده مثبت است: نسبتِ خطی صفر و وضعیت zero_projection داریم؛ دسی‌بلِ متناهی نداریم و حدِ لگاریتم منفیِ بی‌نهایت است. در مقابل، برآوردِ ناصفرِ هم‌راستا، حتی با علامتِ مخالف، باقی‌ماندهٔ صفر دارد. وضعیت perfect_projection با حدِ مثبتِ بی‌نهایت گزارش می‌شود؛ مقدارِ تهیِ عددی همراهِ وضعیت است، نه صفر دسی‌بل یا سقفِ پنهان.

افزودنِ ثابت، همان ضربِ بهره نیست. برای مرجعِ یک، منفی‌یک و برآوردِ دو، صفر، نسبت یک است. اگر به هر چهار عدد یک اضافه کنیم، مرجعِ دو، صفر و برآوردِ سه، یک، نسبت نه می‌دهند. حذفِ میانگین مسئلهٔ دیگری می‌سازد؛ نباید آن را بی‌خبر واردِ قرارداد کنیم یا نتیجه را معادلِ پیاده‌سازی‌های دارای epsilon بدانیم.

۴. کدِ دقیق و مرجعِ مستقلِ حاصل‌ضرب‌های زوجی

دو مسیرِ مستقل برای وارسیِ یک محاسبهٔ کوچک
تصویر مفهومی: دو مسیرِ مستقل برای وارسیِ یک محاسبهٔ کوچک؛ بدون مقیاس عددی و مستقل از نتایج اجرای کد.

کد فقط از کتابخانهٔ استاندارد استفاده می‌کند. راهنمای Fraction ساختنِ عددِ گویا از صورت و مخرجِ صحیح و ویژگی‌های آن را شرح می‌دهد. آلفا، بردارها، جمعِ مربع‌ها و نسبتِ خطی در این مثال کسری‌اند؛ تبدیلِ اعشاریِ ورودی نداریم. نسخهٔ واقعیِ پایتون در خروجی ثبت می‌شود؛ مستنداتِ مرجعِ خوانده‌شده نسخهٔ ۳٫۱۴٫۸ است و نسخهٔ اجرا از آن استنتاج نشده است.

"""Exact bounded SI-SDR geometry; synthetic aligned vectors, no audio API."""
from decimal import Decimal, localcontext
from fractions import Fraction as F
from itertools import product
import json
import math
import platform
import sys


def validate_pair(reference, estimate):
    """Own strict finite input contract, not an audio library API."""
    for name, values in (("reference", reference), ("estimate", estimate)):
        if type(values) is not tuple or not 1 <= len(values) <= 6:
            raise ValueError(name + " must be an exact tuple of length 1..6")
        if any(type(v) is not int or not -8 <= v <= 8 for v in values):
            raise ValueError(name + " coordinates must be exact int in [-8,8]")
    if len(reference) != len(estimate):
        raise ValueError("supplied aligned vectors must have equal lengths")


def si_sdr_projection(reference, estimate):
    """Exact projection/linear ratio and an approximate finite dB display.

    Pairing is supplied by the caller. There is no alignment, centering,
    epsilon, recording, inference, or perceptual assessment.
    """
    validate_pair(reference, estimate)
    reference_ss = sum(v * v for v in reference)
    estimate_ss = sum(v * v for v in estimate)
    result = dict(frame_count=len(reference), reference_square_sum=reference_ss,
                  estimate_square_sum=estimate_ss, alpha=None, target=None,
                  residual=None, target_square_sum=None, residual_square_sum=None,
                  linear_ratio=None, si_sdr_db=None)
    if reference_ss == 0:
        result["status"] = "silent_reference"
        return result
    dot = sum(a * b for a, b in zip(reference, estimate))
    alpha = F(dot, reference_ss)
    target = tuple(alpha * a for a in reference)
    residual = tuple(F(b) - a for a, b in zip(target, estimate))
    target_ss = sum((v * v for v in target), F(0))
    residual_ss = sum((v * v for v in residual), F(0))
    if estimate_ss == 0:
        status, ratio, db = "zero_estimate", None, None
    elif residual_ss == 0:
        status, ratio, db = "perfect_projection", None, None
    elif target_ss == 0:
        status, ratio, db = "zero_projection", F(0), None
    else:
        ratio = target_ss / residual_ss
        # Only the linear ratio is exact. The finite logarithm is approximate.
        db = 10 * (math.log10(ratio.numerator) -
                   math.log10(ratio.denominator))
        status = "finite"
    result.update(status=status, alpha=alpha, target=target, residual=residual,
                  target_square_sum=target_ss, residual_square_sum=residual_ss,
                  linear_ratio=ratio, si_sdr_db=db)
    return result


def integer_pair_minor_oracle(reference, estimate):
    """Trusted fixtures only; no main validator/projection/result calls.

    Lagrange's identity uses squared pairwise areas rather than a projected
    Fraction vector or subtraction of two rounded square sums.
    """
    n = len(reference)
    rr = sum(reference[i] ** 2 for i in range(n))
    ee = sum(estimate[i] ** 2 for i in range(n))
    cross = sum(reference[i] * estimate[i] for i in range(n))
    areas = sum((reference[i] * estimate[j] -
                 reference[j] * estimate[i]) ** 2
                for i in range(n) for j in range(i + 1, n))
    if rr == 0:
        return dict(status="silent_reference", target_ss=None,
                    residual_ss=None, ratio=None, db=None, pair_area_sum=areas)
    target_ss, residual_ss = F(cross * cross, rr), F(areas, rr)
    if ee == 0:
        status, ratio, db = "zero_estimate", None, None
    elif areas == 0:
        status, ratio, db = "perfect_projection", None, None
    elif cross == 0:
        status, ratio, db = "zero_projection", F(0), None
    else:
        ratio = F(cross * cross, areas)
        with localcontext() as context:
            context.prec = 80
            db = float(Decimal(10) * (Decimal(cross * cross).log10() -
                                      Decimal(areas).log10()))
        status = "finite"
    return dict(status=status, target_ss=target_ss, residual_ss=residual_ss,
                ratio=ratio, db=db, pair_area_sum=areas)


def json_value(value):
    """Keep exact rationals as strings, without nonstandard JSON infinities."""
    if type(value) is F:
        return str(value)
    if type(value) is dict:
        return {k: json_value(v) for k, v in value.items()}
    if type(value) in (tuple, list):
        return [json_value(v) for v in value]
    return value


def rejected(reference, estimate):
    try:
        si_sdr_projection(reference, estimate)
    except ValueError:
        return True
    return False


def self_check():
    reference, estimate = (1, 2, -1), (2, 1, 0)
    hand = si_sdr_projection(reference, estimate)
    checks = {}
    checks["hand_exact_fraction_projection_and_ratio_eight_sevenths"] = (
        hand["status"] == "finite" and hand["alpha"] == F(2, 3) and
        hand["target"] == (F(2, 3), F(4, 3), F(-2, 3)) and
        hand["residual"] == (F(4, 3), F(-1, 3), F(2, 3)) and
        hand["target_square_sum"] == F(8, 3) and
        hand["residual_square_sum"] == F(7, 3) and
        hand["linear_ratio"] == F(8, 7))

    geometric_fixtures = ((reference, estimate), ((1, 1), (1, -1)),
                          ((1, 2), (-2, -4)), ((2, 2, 2), (1, 2, 3)))
    orthogonal = True
    for r, e in geometric_fixtures:
        value = si_sdr_projection(r, e)
        orthogonal = orthogonal and (
            sum((F(a) * b for a, b in zip(r, value["residual"])), F(0)) == 0 and
            value["target_square_sum"] + value["residual_square_sum"] ==
            value["estimate_square_sum"] and
            tuple(a + b for a, b in zip(value["target"], value["residual"])) ==
            tuple(F(v) for v in e))
    checks["orthogonal_residual_reconstruction_and_Pythagorean_identity"] = orthogonal

    oracle_ok, cases, profiles, largest_db_error = True, 0, 0, 0.0
    statuses = {}
    for n in range(1, 4):
        vectors = tuple(product((-1, 0, 1), repeat=n))
        profiles += len(vectors)
        for r in vectors:
            for e in vectors:
                actual = si_sdr_projection(r, e)
                expected = integer_pair_minor_oracle(r, e)
                same = (actual["status"] == expected["status"] and
                        actual["target_square_sum"] == expected["target_ss"] and
                        actual["residual_square_sum"] == expected["residual_ss"] and
                        actual["linear_ratio"] == expected["ratio"])
                if expected["db"] is None:
                    same = same and actual["si_sdr_db"] is None
                else:
                    error = abs(actual["si_sdr_db"] - expected["db"])
                    largest_db_error = max(largest_db_error, error)
                    same = same and error <= 1e-12
                oracle_ok = oracle_ok and same
                statuses[expected["status"]] = statuses.get(expected["status"], 0) + 1
                cases += 1
    checks["finite_819_pairs_match_integer_pair_minor_oracle_in_ONE_group"] = (
        oracle_ok and cases == 819 and profiles == 39)

    gains = (-2, -1, 1, 2)
    estimate_gain_ok = True
    for gain in gains:
        value = si_sdr_projection(reference, tuple(gain * v for v in estimate))
        estimate_gain_ok = estimate_gain_ok and (
            value["linear_ratio"] == hand["linear_ratio"] and
            value["alpha"] == gain * hand["alpha"] and
            value["target"] == tuple(gain * v for v in hand["target"]) and
            value["residual"] == tuple(gain * v for v in hand["residual"]) and
            math.isclose(value["si_sdr_db"], hand["si_sdr_db"],
                         rel_tol=0, abs_tol=1e-12))
    checks["nonzero_estimate_gain_including_polarity_preserves_ratio"] = estimate_gain_ok

    reference_gain_ok = True
    for gain in gains:
        value = si_sdr_projection(tuple(gain * v for v in reference), estimate)
        reference_gain_ok = reference_gain_ok and (
            value["alpha"] == hand["alpha"] / gain and
            value["target"] == hand["target"] and
            value["residual"] == hand["residual"] and
            value["linear_ratio"] == hand["linear_ratio"])
    checks["reference_gain_cancels_in_projected_waveform"] = reference_gain_ok

    constant = si_sdr_projection((2, 2, 2), (1, 2, 3))
    checks["constant_reference_allowed_without_implicit_centering"] = (
        constant["alpha"] == 1 and constant["target"] == (F(2), F(2), F(2)) and
        constant["residual"] == (F(-1), F(0), F(1)) and
        constant["linear_ratio"] == 6)

    silence = [si_sdr_projection((0, 0), e) for e in ((0, 0), (1, -1))]
    checks["zero_reference_and_both_zero_explicitly_undefined"] = all(
        value["status"] == "silent_reference" and value["alpha"] is None and
        value["target"] is value["residual"] is value["linear_ratio"] is None and
        value["si_sdr_db"] is None for value in silence)

    zero_estimate = si_sdr_projection(reference, (0, 0, 0))
    checks["zero_estimate_has_zero_over_zero_not_fake_zero_dB"] = (
        zero_estimate["status"] == "zero_estimate" and
        zero_estimate["target_square_sum"] == zero_estimate["residual_square_sum"] == 0 and
        zero_estimate["alpha"] == 0 and zero_estimate["linear_ratio"] is None and
        zero_estimate["si_sdr_db"] is None)

    perpendicular = si_sdr_projection((1, 1), (1, -1))
    checks["nonzero_orthogonal_estimate_has_zero_linear_ratio"] = (
        perpendicular["status"] == "zero_projection" and
        perpendicular["linear_ratio"] == 0 and
        perpendicular["target_square_sum"] == 0 and
        perpendicular["residual_square_sum"] == 2 and
        perpendicular["si_sdr_db"] is None)

    perfect = [si_sdr_projection((1, 2), e) for e in ((2, 4), (-2, -4))]
    checks["nonzero_collinear_gain_or_polarity_has_zero_residual"] = all(
        value["status"] == "perfect_projection" and
        value["target_square_sum"] == 20 and value["residual_square_sum"] == 0 and
        value["linear_ratio"] is None and value["si_sdr_db"] is None
        for value in perfect)

    before_offset = si_sdr_projection((1, -1), (2, 0))
    after_offset = si_sdr_projection((2, 0), (3, 1))
    checks["common_DC_offset_is_not_gain_invariance"] = (
        before_offset["linear_ratio"] == 1 and after_offset["linear_ratio"] == 9)

    order = (2, 0, 1)
    joint = si_sdr_projection(tuple(reference[i] for i in order),
                              tuple(estimate[i] for i in order))
    shifted = si_sdr_projection(reference, estimate[1:] + estimate[:1])
    checks["joint_permutation_preserves_but_unmatched_shift_changes_ratio"] = (
        joint["linear_ratio"] == hand["linear_ratio"] and
        joint["target_square_sum"] == hand["target_square_sum"] and
        joint["residual_square_sum"] == hand["residual_square_sum"] and
        shifted["linear_ratio"] == F(1, 29))

    class IntSubclass(int):
        pass

    class TupleSubclass(tuple):
        pass

    invalid_vectors = (None, [], (), (0,) * 7, "0", (True,), (False,), (0.0,),
                       (F(1),), ("1",), (None,), (float("nan"),),
                       (float("inf"),), (9,), (-9,), (10 ** 100,),
                       (IntSubclass(1),), TupleSubclass((1,)))
    invalid_pairs = [(bad, (0,)) for bad in invalid_vectors]
    invalid_pairs += [((0,), bad) for bad in invalid_vectors]
    invalid_pairs += [((1,), (1, 2)), ((1, 2), (1,)),
                      ((0, 0), (0, "late")), ((0, "late"), (0, 0))]
    pulled = []

    def untouched_generator():
        pulled.append("pulled")
        yield 0

    generator = untouched_generator()
    invalid_ok = all(rejected(r, e) for r, e in invalid_pairs)
    invalid_ok = invalid_ok and rejected(generator, (0,)) and not pulled
    generator.close()
    checks["strict_types_lengths_bounds_late_invalid_and_no_generator_consumption"] = (
        invalid_ok and len(invalid_pairs) == 40)

    edge_r, edge_e = (-8, 8, -8, 8, -8, 8), (8, 8, -8, -8, 8, -8)
    edge = si_sdr_projection(edge_r, edge_e)
    saved = dict(edge)
    edge["status"], edge["target"] = "caller_changed", ("caller_changed",)
    fresh = si_sdr_projection(edge_r, edge_e)
    encoded = json_value(fresh)
    checks["closed_six_sample_bounds_fresh_results_and_strict_JSON"] = (
        fresh == saved and fresh["alpha"] == F(-1, 3) and
        fresh["target_square_sum"] == F(128, 3) and
        fresh["residual_square_sum"] == F(1024, 3) and
        fresh["linear_ratio"] == F(1, 8) and
        edge_r == (-8, 8, -8, 8, -8, 8) and
        edge_e == (8, 8, -8, -8, 8, -8) and
        json.loads(json.dumps(encoded, allow_nan=False)) == encoded)

    assert len(checks) == 14 and all(type(v) is bool for v in checks.values()), checks
    assert all(checks.values()), checks
    return dict(
        python=platform.python_version(), implementation=platform.python_implementation(),
        dependencies="standard library only; no NumPy, TorchMetrics or audio execution",
        data_origin="original supplied synthetic aligned dimensionless integer vectors",
        input_contract="exact tuple1..6, builtin int[-8,8], equal lengths, no centering/epsilon",
        exact_quantities="Fraction alpha, projected/residual vectors, square sums and linear ratio",
        approximate_quantity="finite si_sdr_db only; exact ratios are not exact logarithms",
        manual_reference=reference, manual_estimate=estimate, manual_result=hand,
        zero_reference_results=silence, zero_estimate_result=zero_estimate,
        orthogonal_result=perpendicular, gain_only_results=perfect,
        common_offset_results=[before_offset, after_offset],
        unmatched_cyclic_shift_result=shifted, six_sample_boundary_result=fresh,
        oracle_vector_profiles_inside_ONE_family=profiles,
        oracle_pair_cases_inside_ONE_group=cases,
        oracle_status_counts=statuses, oracle_decimal_precision=80,
        largest_oracle_finite_db_absolute_difference=largest_db_error,
        oracle_finite_db_absolute_tolerance=1e-12,
        strict_invalid_pairs_inside_ONE_group=len(invalid_pairs) + 1,
        unique_executed_checks=len(checks), author_check_groups=len(checks),
        checks=checks, all_passed=all(checks.values()),
        limitations="No measured audio, perceptual/ASR/product evaluation, alignment guarantee or performance claim.")


if __name__ == "__main__":
    payload = json.dumps(json_value(self_check()), ensure_ascii=True,
                         indent=2, allow_nan=False) + "\n"
    sys.stdout.buffer.write(payload.encode("utf-8"))

مرجعِ مستقل، بردارِ تصویر را نمی‌سازد. برای هر جفتِ شاخصِ i و j، تفاضلِ دو حاصل‌ضربِ متقاطعِ مرجع و برآورد را مربع می‌کند و جمع می‌زند. طبقِ اتحادِ لاگرانژ، این جمع برابر حاصل‌ضربِ دو جمعِ مربع، منهای مربعِ ضربِ داخلی است. بنابراین مربعِ ضربِ داخلی تقسیم بر این جمع، همان نسبتِ خطی را می‌دهد. این مسیر از محاسباتِ صحیحِ زوجی استفاده می‌کند و تابعِ اصلی یا اعتبارسنجش را برای ساختنِ انتظار صدا نمی‌زند.

همهٔ جفت‌بردارهای هم‌طولِ یک تا سه روی اعدادِ منفی‌یک، صفر و یک، هشتصدونوزده مورد می‌سازند؛ تمامِ این خانواده فقط یک گروه از چهارده گروه است. برای حالتِ متناهی، لگاریتمِ مرجع با Decimal و دقتِ هشتاد رقم محاسبه می‌شود؛ تلورانسِ یک‌تریلیونیم دسی‌بل، حدِ مقایسهٔ همین محاسباتِ کوچک است. این عدد آستانهٔ کیفیتِ صوت نیست.

{
  "python": "3.14.5",
  "implementation": "CPython",
  "dependencies": "standard library only; no NumPy, TorchMetrics or audio execution",
  "data_origin": "original supplied synthetic aligned dimensionless integer vectors",
  "input_contract": "exact tuple1..6, builtin int[-8,8], equal lengths, no centering/epsilon",
  "exact_quantities": "Fraction alpha, projected/residual vectors, square sums and linear ratio",
  "approximate_quantity": "finite si_sdr_db only; exact ratios are not exact logarithms",
  "manual_reference": [
    1,
    2,
    -1
  ],
  "manual_estimate": [
    2,
    1,
    0
  ],
  "manual_result": {
    "frame_count": 3,
    "reference_square_sum": 6,
    "estimate_square_sum": 5,
    "alpha": "2/3",
    "target": [
      "2/3",
      "4/3",
      "-2/3"
    ],
    "residual": [
      "4/3",
      "-1/3",
      "2/3"
    ],
    "target_square_sum": "8/3",
    "residual_square_sum": "7/3",
    "linear_ratio": "8/7",
    "si_sdr_db": 0.5799194697768673,
    "status": "finite"
  },
  "zero_reference_results": [
    {
      "frame_count": 2,
      "reference_square_sum": 0,
      "estimate_square_sum": 0,
      "alpha": null,
      "target": null,
      "residual": null,
      "target_square_sum": null,
      "residual_square_sum": null,
      "linear_ratio": null,
      "si_sdr_db": null,
      "status": "silent_reference"
    },
    {
      "frame_count": 2,
      "reference_square_sum": 0,
      "estimate_square_sum": 2,
      "alpha": null,
      "target": null,
      "residual": null,
      "target_square_sum": null,
      "residual_square_sum": null,
      "linear_ratio": null,
      "si_sdr_db": null,
      "status": "silent_reference"
    }
  ],
  "zero_estimate_result": {
    "frame_count": 3,
    "reference_square_sum": 6,
    "estimate_square_sum": 0,
    "alpha": "0",
    "target": [
      "0",
      "0",
      "0"
    ],
    "residual": [
      "0",
      "0",
      "0"
    ],
    "target_square_sum": "0",
    "residual_square_sum": "0",
    "linear_ratio": null,
    "si_sdr_db": null,
    "status": "zero_estimate"
  },
  "orthogonal_result": {
    "frame_count": 2,
    "reference_square_sum": 2,
    "estimate_square_sum": 2,
    "alpha": "0",
    "target": [
      "0",
      "0"
    ],
    "residual": [
      "1",
      "-1"
    ],
    "target_square_sum": "0",
    "residual_square_sum": "2",
    "linear_ratio": "0",
    "si_sdr_db": null,
    "status": "zero_projection"
  },
  "gain_only_results": [
    {
      "frame_count": 2,
      "reference_square_sum": 5,
      "estimate_square_sum": 20,
      "alpha": "2",
      "target": [
        "2",
        "4"
      ],
      "residual": [
        "0",
        "0"
      ],
      "target_square_sum": "20",
      "residual_square_sum": "0",
      "linear_ratio": null,
      "si_sdr_db": null,
      "status": "perfect_projection"
    },
    {
      "frame_count": 2,
      "reference_square_sum": 5,
      "estimate_square_sum": 20,
      "alpha": "-2",
      "target": [
        "-2",
        "-4"
      ],
      "residual": [
        "0",
        "0"
      ],
      "target_square_sum": "20",
      "residual_square_sum": "0",
      "linear_ratio": null,
      "si_sdr_db": null,
      "status": "perfect_projection"
    }
  ],
  "common_offset_results": [
    {
      "frame_count": 2,
      "reference_square_sum": 2,
      "estimate_square_sum": 4,
      "alpha": "1",
      "target": [
        "1",
        "-1"
      ],
      "residual": [
        "1",
        "1"
      ],
      "target_square_sum": "2",
      "residual_square_sum": "2",
      "linear_ratio": "1",
      "si_sdr_db": 0.0,
      "status": "finite"
    },
    {
      "frame_count": 2,
      "reference_square_sum": 4,
      "estimate_square_sum": 10,
      "alpha": "3/2",
      "target": [
        "3",
        "0"
      ],
      "residual": [
        "0",
        "1"
      ],
      "target_square_sum": "9",
      "residual_square_sum": "1",
      "linear_ratio": "9",
      "si_sdr_db": 9.542425094393248,
      "status": "finite"
    }
  ],
  "unmatched_cyclic_shift_result": {
    "frame_count": 3,
    "reference_square_sum": 6,
    "estimate_square_sum": 5,
    "alpha": "-1/6",
    "target": [
      "-1/6",
      "-1/3",
      "1/6"
    ],
    "residual": [
      "7/6",
      "1/3",
      "11/6"
    ],
    "target_square_sum": "1/6",
    "residual_square_sum": "29/6",
    "linear_ratio": "1/29",
    "si_sdr_db": -14.62397997898956,
    "status": "finite"
  },
  "six_sample_boundary_result": {
    "frame_count": 6,
    "reference_square_sum": 384,
    "estimate_square_sum": 384,
    "alpha": "-1/3",
    "target": [
      "8/3",
      "-8/3",
      "8/3",
      "-8/3",
      "8/3",
      "-8/3"
    ],
    "residual": [
      "16/3",
      "32/3",
      "-32/3",
      "-16/3",
      "16/3",
      "-16/3"
    ],
    "target_square_sum": "128/3",
    "residual_square_sum": "1024/3",
    "linear_ratio": "1/8",
    "si_sdr_db": -9.030899869919436,
    "status": "finite"
  },
  "oracle_vector_profiles_inside_ONE_family": 39,
  "oracle_pair_cases_inside_ONE_group": 819,
  "oracle_status_counts": {
    "perfect_projection": 72,
    "zero_estimate": 36,
    "silent_reference": 39,
    "finite": 464,
    "zero_projection": 208
  },
  "oracle_decimal_precision": 80,
  "largest_oracle_finite_db_absolute_difference": 0.0,
  "oracle_finite_db_absolute_tolerance": 1e-12,
  "strict_invalid_pairs_inside_ONE_group": 41,
  "unique_executed_checks": 14,
  "author_check_groups": 14,
  "checks": {
    "hand_exact_fraction_projection_and_ratio_eight_sevenths": true,
    "orthogonal_residual_reconstruction_and_Pythagorean_identity": true,
    "finite_819_pairs_match_integer_pair_minor_oracle_in_ONE_group": true,
    "nonzero_estimate_gain_including_polarity_preserves_ratio": true,
    "reference_gain_cancels_in_projected_waveform": true,
    "constant_reference_allowed_without_implicit_centering": true,
    "zero_reference_and_both_zero_explicitly_undefined": true,
    "zero_estimate_has_zero_over_zero_not_fake_zero_dB": true,
    "nonzero_orthogonal_estimate_has_zero_linear_ratio": true,
    "nonzero_collinear_gain_or_polarity_has_zero_residual": true,
    "common_DC_offset_is_not_gain_invariance": true,
    "joint_permutation_preserves_but_unmatched_shift_changes_ratio": true,
    "strict_types_lengths_bounds_late_invalid_and_no_generator_consumption": true,
    "closed_six_sample_bounds_fresh_results_and_strict_JSON": true
  },
  "all_passed": true,
  "limitations": "No measured audio, perceptual/ASR/product evaluation, alignment guarantee or performance claim."
}

گروه‌های دیگر، شاهدِ دستی، عمودبودن، بازسازی، بهره، مرزهای صفر، جابه‌جایی، ورودیِ نامعتبر و کرانِ شش‌نمونه‌ای را می‌سنجند. تمامِ ورودی پیش از کوتاه‌کردنِ مسیرِ حالتِ صفر اعتبارسنجی می‌شود؛ یک عضوِ نامعتبرِ انتهایی پنهان نمی‌ماند. مولد بدون مصرف رد می‌شود و تغییرِ نگاشتِ بازگشتی توسطِ فراخواننده، نتیجهٔ فراخوانیِ بعدی را تغییر نمی‌دهد. بررسی‌ها ادعای سرعت یا پوششِ همهٔ موج‌های ممکن نیستند.

۵. چهار پرسش دربارهٔ تفسیرِ SI-SDR

محاسبهٔ هندسی، شنیدن و ارزیابیِ مستقل در کنار هم
تصویر مفهومی: محاسبهٔ هندسی، شنیدن و ارزیابیِ مستقل در کنار هم؛ بدون مقیاس عددی و مستقل از نتایج اجرای کد.

پرسش اول: چرا نسبتِ شاهدِ دستی هشت‌هفتم است؟ پاسخ: ضریبِ چهار تقسیم بر شش، هدفِ کسریِ مشخص را می‌سازد. جمعِ مربعِ آن هشت‌سوم و باقی‌مانده هفت‌سوم است؛ تقسیمِ آن‌ها هشت‌هفتم می‌شود. پنج، جمعِ مربعِ کلِ برآورد است و نباید به‌جای صورتِ نسبت گذاشته شود.

پرسش دوم: آیا نصف‌کردن یا منفی‌کردنِ برآورد امتیاز را خراب می‌کند؟ پاسخ: در این قرارداد، ضریبِ ناصفر بر نسبت اثر ندارد؛ تصویر و باقی‌مانده با هم مقیاس می‌گیرند. برای برآوردِ هم‌راستای ناصفر، باقی‌مانده همچنان صفر است. این رفتار با خطای مستقیمِ SNR تفاوت دارد و معیارِ کنترلِ بهره یا قطبیت نیست.

پرسش سوم: آیا خروجیِ صفر همیشه صفر دسی‌بل دارد؟ پاسخ: خیر؛ برای برآوردِ سراسر صفر، نسبتِ صفر به صفر داریم. برای برآوردِ عمودِ ناصفر، نسبت صفر و حدِ لگاریتم منفیِ بی‌نهایت است. برای تصویرِ کاملِ ناصفر، مخرج صفر و حد مثبتِ بی‌نهایت است. وضعیت‌ها مانعِ یکسان‌خواندنِ این سه معنا می‌شوند.

پرسش چهارم: آیا عددِ بهتر یعنی پاسخِ تلفنی قابل‌فهم‌تر است؟ پاسخ: خیر؛ حتی هم‌ترازیِ نمونه‌ها فرضِ ورودی است. درسِ DTW قراردادِ دیگری برای تطبیقِ قاب‌ها داشت؛ این تابع آن مسیر را نمی‌یابد. شنیدن، صحتِ محتوای پاسخ و ارزیابیِ ASR شاهدهای جدا می‌خواهند. منابع در ۲۹ مهر ۱۴۰۵ خوانده شدند؛ تاریخِ گزارشِ MERL بیست‌ونهم مارسِ ۲۰۱۹ است، تاریخِ نخستین انتشارِ صفحاتِ نامعلوم تهی می‌ماند و این متن خبرِ تازه نیست.

منابع و مطالعهٔ بیشتر

بررسی منابع: ۲۹ مهر ۱۴۰۵. تحلیل‌ها و پیشنهادهای اجرایی، جمع‌بندی نویسنده‌اند.