🎚️ Психоакустичне маскування

Гучний тон піднімає поріг чутності для сусідніх частот, ховаючи тихіші звуки під маскувальною кривою — саме цей принцип використовує стиснення MP3, відкидаючи нечутні дані.

ЗвукІнтерактивно
SPL проти частоти (логарифмічна шкала) · P пауза · R скинути · Зелена проба = чутна, червона = замаскована

Як це працює

Коли звучить маскувальний тон із частотою f_m і рівнем L_m, він піднімає ефективний поріг чутності в області навколо f_m на частотній карті завитки вуха. Цю область найкраще описувати на шкалі Барка, яка перемасштабовує частоту так, що кожна одиниця (1 Барк) відповідає приблизно одній критичній смузі слухового банку фільтрів. Піднятий поріг — крива маскування — крутий з боку низьких частот і значно пологіший з боку високих, тому низькі тони маскують вгору ефективніше, ніж високі тони маскують вниз (асиметрія маскування).

Пробний тон із частотою f_p і рівнем L_p прогнозується чутним лише тоді, коли L_p перевищує маскований поріг при f_p: більше з двох значень — звичайного тихого порогу чутності або кривої розповсюдження маскера, обчисленої на відстані Δz у Барках між f_p та f_m. Ця симуляція реалізує спрощену кусково-лінійну функцію розповсюдження, засновану на моделі раннього перцептивного кодування MPEG — корисну, чесно наближену заміну справжньої, плавно вигнутої форми слухового фільтра, виміряної в психоакустичних лабораторіях.

Шкала Барка: z(f) = 13·atan(0.00076f) + 3.5·atan((f/7500)²)
Тихий поріг (Терхардт, 1979): T_q(f) = 3.64(f/1000)^-0.8 − 6.5·e^(−0.6(f/1000−3.3)²) + 0.001(f/1000)^4 дБ SPL
Функція розповсюдження SF(Δz,L_m), Δz = z(f_p) − z(f_m):
  −3≤Δz<−1: 17Δz − 0.4L_m + 11
  −1≤Δz<0: (0.4L_m+6)Δz
  0≤Δz<1: −17Δz
  1≤Δz≤8: (0.15L_m−17)Δz − 0.15L_m
Маскований поріг: T_m(f_p) = max(T_q(f_p), L_m + SF(Δz,L_m))
Критична смуга (Цвікер, 1961): CB(f) = 25 + 75·(1+1.4(f/1000)²)^0.69 Гц

Часті запитання

Що таке психоакустичне маскування?

Психоакустичне маскування — явище, коли гучніший звук (маскер) підвищує ефективний поріг чутності для інших, тихіших звуків (проба), що знаходяться поруч за частотою і часом. Якщо рівень проби нижчий за цей піднятий поріг, вона стає нечутною, хоча в тиші була б цілком чутною.

Чому маскування асиметричне — чи маскують низькі тони високі сильніше, ніж навпаки?

Так. Крива маскування має круту низькочастотну ділянку (приблизно -27 дБ на Барк нижче маскера) і значно пологішу високочастотну ділянку. Це означає, що низькочастотний маскер поширюється вгору і маскує вищі частоти ефективніше, ніж високочастотний маскер маскує нижчі — це властивість, яку називають асиметрією маскування, або висхідним поширенням маскування.

Як стиснення MP3 та AAC використовує маскування?

Перцептивні аудіокодеки обчислюють поріг маскування по всьому спектру для кожного короткого блоку звуку, а потім виділяють менше біт квантування (або взагалі жодного) тим частотним компонентам, що опиняються нижче цього порогу, оскільки слухач все одно не почув би доданий шум квантування там. Це дозволяє кодеку відкидати або грубо кодувати нечутну інформацію, зменшуючи розмір файлу з мінімальною втратою сприйманої якості.

Що таке часове маскування (передмаскування та післямаскування)?

Часове маскування — часовий аналог одночасного маскування. Гучний звук може маскувати тихіший звук, що йде після нього, протягом десятків-сотень мілісекунд (післямаскування, або пряме маскування), і, що дивно, навіть маскувати тихіший звук, що передує йому на кілька мілісекунд (передмаскування, або зворотне маскування), оскільки слуховій системі потрібен час для обробки гучних початків. Ця симуляція зосереджена лише на одночасному (частотному) маскуванні.

Чому критичні смуги та шкала Барка важливі для маскування?

Завитка вуха поводиться як набір перекривних смугових фільтрів, що звуться критичними смугами; звуки в межах однієї критичної смуги взаємодіють і маскують один одного значно сильніше, ніж звуки в різних смугах. Шкала Барка (24 смуги на весь чутний діапазон) перемасштабовує частоту так, що кожен крок відповідає приблизно одній критичній смузі, тому криві маскування будують і обчислюють саме на осі Барк, а не на лінійній осі Гц.

Чому підвищення рівня маскера розширює діапазон частот, які він маскує?

Висота кривої маскування прямо масштабується з рівнем маскера, а її високочастотний нахил також стає пологішим зі зростанням рівня маскера, тож гучніший маскер не лише піднімає поріг сильніше, а й поширює цей піднятий поріг на ширший діапазон частот, особливо вгору за частотою.

Чому навушники можуть розкрити звуки, які приховують колонки, або навпаки?

Різні системи відтворення та кімнати змінюють відносні рівні та спектральний баланс одночасних звуків. Якщо зміна обладнання зсуває рівень маскера відносно проби, звук, що був нижче маскованого порогу на одній системі, може піднятися вище нього на іншій, раптово роблячи раніше приховані деталі чутними.

Чому маскування важливе для перевірки слуху та аудіології?

Клінічна тональна аудіометрія має подавати тестовий тон в одне вухо, іноді маскуючи інше вухо шумом, щоб запобігти «перехресному чуттю» тону через кісткову провідність, яке дало б хибний поріг. Аудіологи використовують калібрований рівень маскувального шуму, виведений із тих самих принципів маскування, які змодельовано в цій симуляції.

Що таке функція розповсюдження, використана в цій симуляції?

Ця симуляція використовує спрощену кусково-лінійну функцію розповсюдження на шкалі Барка, засновану на класичній моделі, застосованій у ранньому перцептивному кодуванні MPEG (за Шредером, Аталом і Голлом). Вона апроксимує форму кривої маскування різними нахилами нижче й вище частоти маскера і є наближенням до реальної форми слухового фільтра, а не точним фізіологічним виміром.

Про цю симуляцію

Автор: Команда MySimulator · Редакційна перевірка: Редакція MySimulator

Востаннє оновлено: 11 липня 2026

Ця симуляція будує криву розповсюдження маскера на графіку рівня звукового тиску за шкалою Барка й перевіряє, чи піднімається другий, тихіший пробний тон вище отриманого маскованого порогу. Перетягуйте частоту і рівень маскера, щоб змінювати форму кривої, перетягуйте пробу на будь-яку частоту й рівень, а потім натисніть «Відтворити», щоб буквально почути — через справжні осцилятори Web Audio — чи похована проба під маскером, чи чітко піднімається над ним.

🔬 Що показано

Живий графік рівня звукового тиску проти частоти, що поєднує звичайний тихий поріг чутності з асиметричною кривою розповсюдження маскера, а також маркер проби, що стає зеленим (чутна) або червоним (замаскована) залежно від того, чи перевищує її рівень maskedThresholdAt() на власній частоті.

🎮 Як користуватись

Задайте частоту маскера f_m і рівень L_m, потім рухайте частоту проби f_p і рівень L_p, щоб дослідити криву маскування. Натисніть «Відтворити тони», щоб почути обидва разом через осцилятори Web Audio. P — пауза анімації полотна, R — скидання всіх повзунків.

💡 Чи знали ви?

Оскільки високочастотна ділянка кривої маскування набагато пологіша за низькочастотну, басовитий маскер здатний приховати значно ширшу смугу високочастотних деталей, ніж високочастотний маскер здатний приховати баси — ця асиметрія є однією з причин, чому кодери MP3 витрачають більше біт на захист низьких частот.

Часті запитання

Чому наближення f_p до f_m за відстанню в Барках перемикає Статус із «Masked» на «Audible»?

dz = bark(fp) − bark(fm) прямує до нуля, коли f_p наближається до f_m, а spreadingFunction(dz, Lm) має найбільше (найменш від'ємне) значення саме біля dz = 0, тож maskedThresholdAt() досягає найвищого значення прямо навколо маскера — пробі потрібно перевищити цей пік, тому маленькі відстані в Барках дають найсильніше маскування.

Чому підвищення L_m піднімає маскований поріг навіть при великій частотній відстані?

maskedThresholdAt() повертає Math.max(quietThreshold(f), Lm + spreadingFunction(dz, Lm)), а сама кусково-лінійна spreadingFunction() залежить від Lm через члени на кшталт (0.4·Lm+6)·dz і (0.15·Lm−17)·dz, тож гучніший маскер одночасно стартує з вищого базового рівня Lm і отримує пологіший (менш від'ємний) нахил, піднімаючи поріг у ширшому діапазоні dz.

Чому намальована крива маскування крутіша зліва від f_m, ніж справа?

Кускові гілки spreadingFunction() використовують дуже різні нахили для від'ємних dz (17·dz і (0.4Lm+6)·dz, тобто нижче маскера) порівняно з додатними dz (−17·dz і (0.15Lm−17)·dz), що прямо кодує реальний висновок про асиметрію маскування: низькочастотна ділянка кривої спадає набагато крутіше, ніж високочастотна.

Чому criticalBandwidthHz() повертає набагато більше значення на 4000 Гц, ніж на 200 Гц?

criticalBandwidthHz(f) реалізує формулу Цвікера 25 + 75·(1+1.4·(f/1000)²)^0.69, де член (f/1000)² зростає квадратично, тож критичні смуги різко розширюються на вищих центральних частотах — саме тому шкала Барка стискає високі частоти відносно Гц, вміщуючи багато кГц в одну одиницю Барка вище кількох кГц.

Чому зниження L_p аж до 0 дБ ніколи не змінює Статус на щось інше, крім «Masked» біля маскера?

maskedThresholdAt() завжди повертає щонайменше quietThreshold(f_p), навіть коли внесок розповсюдження маскера від'ємний, тож Статус може показати «Audible» лише коли L_p піднімається вище того, що вище — тихого порогу чи кривої маскера — а зниження L_p лише збільшує розрив до цієї межі, а не саму межу.