WCAG Başarı Kriterleri · Level A

WCAG 1.4.2: Ses Kontrolü

WCAG 1.4.2, üç saniyeden uzun süre otomatik olarak çalan herhangi bir ses için, kullanıcılara sistem sesinden bağımsız olarak sesi duraklatma, durdurma veya ses düzeyini kontrol etme olanağı sunulmasını gerektirir. Bu, sesin ekran okuyucu çıktısına müdahale etmesini engeller ve kullanıcıları beklenmedik, yönünü şaşırtan sesten korur.

Bu Kuralın Anlamı

WCAG 1.4.2 — Ses Kontrolü, Algılanabilir ilkesinin altında Seviye A başarı ölçütüdür. Şöyle der: Bir Web sayfasındaki herhangi bir ses, kullanıcı eylemi olmadan otomatik olarak 3 saniyeden uzun süre çalarsa, ya sesi duraklatmak veya durdurmak için bir mekanizma ya da sistemin genel ses düzeyinden bağımsız olarak ses düzeyini kontrol etmek için bir mekanizma sağlanmalıdır.

Bu ölçüt, kullanıcıdan açık bir eylem olmaksızın çalmaya başlayan ve üç saniyeden uzun süren her türlü ses içeriğiyle tetiklenir. Buna sayfaya gömülü arka plan müziği, sesli bir film müziğine sahip otomatik oynatılan video, sesli reklamlar, döngüsel ses efektleri ve sayfa yüklendiğinde tetiklenen konuşma girişleri dahildir. Anahtar ifade otomatik olaraktır — kullanıcının bilerek başlattığı ses (oynat düğmesine tıklamak, bir bağlantıyı etkinleştirmek) bu kurala tabi değildir.

Bu ölçütten geçmek için aşağıdakilerden en az birinin doğru olması gerekir:

  • Kullanıcıya sesi tamamen durduran veya kullanıcı yeniden başlatana kadar askıya alan bir duraklatma veya durdurma kontrolü sağlanır.
  • Kullanıcıya, işletim sisteminin ana ses düzeyinden bağımsız bir ses düzeyi kontrolü sağlanır; böylece diğer uygulamaları veya sistem seslerini etkilemeden sesi azaltabilir veya kapatabilir.

Yalnızca sayfanın üst kısmında görünen ve klavye ile erişilebilir olan bir mekanizma kabul edilebilir, ancak ses rahatsız edici hale gelmeden önce erişilebilir ve kullanılabilir olmalıdır. En iyi uygulama, kontrolü odak sıralamasındaki ilk etkileşimli öğe olarak yerleştirmeyi güçlü biçimde önerir; böylece klavye ve ekran okuyucu kullanıcıları kontrolle hemen karşılaşır.

WCAG’de tanımlanan tek resmi istisna, üç saniye veya daha kısa süren sestir. Kendi kendine duran kısa bildirim sesleri veya kısa zil sesleri muaf tutulur. Düşük ses düzeyli ses, döngüsel ses veya üçüncü taraf bileşenlere gömülü ses için herhangi bir istisna yoktur — bunların tümü, otomatik olarak çalıyor ve üç saniyeyi aşıyorsa bu kurala tabidir.

Neden Önemlidir

Kontrolsüz otomatik oynatılan ses, birden fazla engelli grup için ciddi engeller yaratır ve sessiz veya paylaşılan ortamlarda engeli olmayan kullanıcılar için bile sürtünmeye neden olur.

Ekran okuyucu kullanıcıları en ağır etkilenen gruptur. JAWS, NVDA ve VoiceOver gibi ekran okuyucular, sayfa içeriğini aktarmak için yapay konuşma çıktısı üretir. Bir web sayfası aynı anda arka plan sesi veya video film müziği çaldığında, iki ses akışı üst üste biner. Ekran okuyucunun sesi anlaşılması zor veya imkânsız hale gelir ve kullanıcı, durdurma kontrolünü bulup etkinleştirene kadar fiilen sayfadan dışlanır — ki bu kontrolü bulmaları zordur, çünkü ekran okuyucu gürültü yüzünden sayfayı okuyamaz. Dünya Sağlık Örgütü’ne göre, dünya genelinde yaklaşık 2,2 milyar kişinin bir tür görme bozukluğu vardır ve önemli bir kısmı birincil gezinme aracı olarak ekran okuyuculara güvenir.

Bilişsel ve dikkatle ilgili engelleri olan kullanıcılar, ADHD, otizm spektrum koşulları veya anksiyete bozuklukları olanlar dahil, beklenmedik sesleri son derece şaşırtıcı veya rahatsız edici bulabilir. Müziğin veya konuşmanın aniden başlaması, konsantrasyonu bozabilir, duyusal aşırı yüklenmeye yol açabilir veya sesin sayfa içeriğinin mi yoksa harici bir bildirimin mi parçası olduğu konusunda kafa karışıklığına neden olabilir.

İşitsel işlem bozukluğu olan veya işitme cihazı kullanan kullanıcılar, ses beklenmedik düzeylerde işitme cihazlarından verildiğinde geri besleme döngüleri veya güçlendirilmiş bozulma yaşayabilir. Bağımsız ses düzeyi kontrolü, sistem genelindeki ayarları değiştirip diğer uygulamaları etkilemeden dinleme ortamlarını yönetmelerine olanak tanır.

Motor engelli kullanıcılar, klavye veya anahtar erişimiyle gezinirken durdurma/duraklatma kontrolünün klavye ile erişilebilir olmasına ve sayfa yapısında mantıksal olarak erken konumlandırılmasına ihtiyaç duyar. Kontrol yalnızca fareyle tıklanabiliyorsa veya sekme sırasının çok ilerisine gömülmüşse, kullanıcı kontrolü bulana kadar geçen sürede pratikte hiçbir rahatlama sağlamaz.

Somut bir senaryo düşünün: Görme engelli bir iş arayan kişi, otomatik olarak neşeli müzikli bir tanıtım videosu oynatan bir şirketin kariyer sayfasını ziyaret ediyor. Kullanıcı ekran okuyucusunu etkinleştiriyor; ekran okuyucu hemen sayfa başlığını ve gezinmeyi okumaya başlıyor. Müzik, konuşma sentezini tamamen bastırıyor. Durdurma düğmesi, klavye odağı olmayan, sayfanın ortasındaki video oynatıcıda görsel olarak konumlandırılmış, stillendirilmiş bir <div>. Kullanıcı klavye ile bu düğmeye ulaşamıyor, ekran okuyucusunu yeterince duyamadığı için verimli şekilde gezinemiyor ve sonunda sayfayı terk ediyor. Şirket, nitelikli bir adayı kaybediyor ve potansiyel hukuki riskle karşı karşıya kalıyor.

Kullanılabilirlik ve SEO açısından, otomatik oynatılan ses içeren sayfalarda genellikle artan hemen çıkma oranları görülür; çünkü birçok kullanıcı — engelli olsun olmasın — beklenmedik ses başladığında sekmeleri hemen kapatır. Arama motorları yüksek hemen çıkma oranlarını olumsuz bir kalite sinyali olarak yorumlar ve bu da dolaylı olarak bulunabilirliğe zarar verir.

İlgili Axe-core Kuralları

WCAG 1.4.2, manuel test gerektirir. Bu ölçüte doğrudan karşılık gelen hiçbir axe-core otomatik kuralı yoktur. Otomatik araçların bu ihlali tespit edememesinin nedeni, tarayıcıların ve JavaScript’in çalışma biçimiyle temelden ilgilidir:

  • Dinamik ses başlatma: Ses, JavaScript zamanlayıcıları, olay dinleyicileri veya ilk DOM ayrıştırmasından sonra çalışan üçüncü taraf betikleri tarafından tetiklenebilir. Statik DOM’u inceleyen bir otomatik tarayıcı, sesin otomatik olarak çalıp çalmayacağını, ne kadar süre çalacağını veya bir kontrolün işlevsel olarak o belirli ses kaynağına bağlı olup olmadığını güvenilir şekilde belirleyemez.
  • Kontrollerin varlığı ve işlerliği: Bir ses düzeyi kaydırıcısı veya duraklatma düğmesi DOM’da mevcut olabilir, ancak işlevsiz, ekran dışında gizli veya klavye kullanıcıları için erişilemez olabilir. Otomatik araçlar bir öğenin varlığını tespit edebilir, ancak etkileşimi yürütmeden ve sonucu dinlemeden, onu etkinleştirmenin gerçekten sesi durdurup durdurmadığını doğrulayamaz — bu da insan işitsel yargısı gerektiren bir görevdir.
  • Zamanlama eşiği: Sesin üç saniyeden uzun süre çalıp çalmadığını belirlemek, sayfa yüklemesi sırasında zamana dayalı bir değerlendirme gerektirir; bu da statik veya hatta çalışma zamanı DOM analiz araçlarının kapsamı dışındadır.
  • Üçüncü taraf gömülü içerikler: iframe’ler, üçüncü taraf SDK’ları veya reklam ağları aracılığıyla gömülen ses, test aracının JavaScript alanı tarafından incelenemeyebilir ve bu da programatik tespiti imkânsız hale getirir.

Bu sınırlamalar nedeniyle denetçiler, sayfaları bizzat ziyaret etmeli, otomatik oynatılan sesleri dinlemeli ve duraklatma/durdurma/ses kontrollerinin mevcut olduğunu, klavye ile erişilebilir olduğunu ve doğru çalıştığını manuel olarak doğrulamalıdır.

Nasıl Test Edilir

  1. Otomatik ön tarama: Sayfada axe DevTools veya Google Lighthouse çalıştırın. Bu araçların hiçbiri doğrudan bir 1.4.2 ihlalini işaretlemese de, kontrollerde eksik klavye odağı, erişilemez medya oynatıcı öğeleri veya özel ses bileşenlerinde eksik ARIA etiketleri gibi ilgili sorunları ortaya çıkaracaktır. Manuel test başlamadan önce bunları çözün; böylece ayrı sorunları birbirine karıştırmamış olursunuz.
  2. Manuel ses tespiti: Sayfayı hoparlörleriniz veya kulaklığınız açıkken yükleyin. Herhangi bir kullanıcı etkileşimi olmadan ilk birkaç saniye içinde ses çalmaya başlayıp başlamadığını not edin. Eğer başlıyorsa, üç saniyeden uzun süre çaldığını doğrulamak için bir zamanlayıcı kullanın. Tüm ana sayfa türlerini kontrol edin: ana sayfa, açılış sayfaları, ürün sayfaları ve medya gömülü içerik veya reklam alanı içerdiği bilinen tüm sayfalar.
  3. Durdurma/duraklatma/ses kontrolünü bulun: Fare kullanmadan, sayfa yüklendikten hemen sonra Tab tuşuna basın. Ses kontrolüne ulaşmadan önce kaç sekme durağı olduğunu sayın. Kontrolün görünür bir odak göstergesi aldığını doğrulayın. Enter veya Boşluk tuşuna basarak kontrolü etkinleştirin ve sesin durduğunu veya ses düzeyinin bağımsız olarak ayarlanabildiğini doğrulayın.
  4. NVDA ve Firefox ile ekran okuyucu testi: NVDA’yı başlatın, Firefox’u açın ve sayfaya gidin. Sesin başlamasına izin verin. NVDA’nın okuma komutlarını (ok tuşları, sanal imleç) kullanarak ses kontrolünü bulmaya ve etkinleştirmeye çalışın. NVDA’nın kontrolün rolünü ve etiketini doğru şekilde duyurduğunu doğrulayın (örneğin, "Sesi duraklat, düğme") ve kontrolü etkinleştirmenin rakip sesi susturduğunu onaylayın.
  5. VoiceOver ve Safari (macOS/iOS) ile ekran okuyucu testi: Command + F5 ile VoiceOver’ı etkinleştirin. Sayfaya gidin ve ses kontrolünü bulmak için kaydırma hareketlerini veya ok tuşlarını kullanın. VoiceOver’ın anlamlı bir etiket okuduğunu ve kontrolün beklendiği gibi çalıştığını doğrulayın. iOS’ta, mobil tarayıcılar ses izinlerini farklı ele aldığından otomatik oynatma davranışını da test edin.
  6. JAWS ve Chrome ile ekran okuyucu testi: JAWS etkin durumdayken sayfayı Chrome’da yükleyin. Sekme tuşunu ve JAWS’un form kontrolleri listesini (Insert + F5) kullanarak etkileşimli öğeleri bulun. Ses kontrolünün listede göründüğünü ve kullanılabilir olduğunu doğrulayın.
  7. Üçüncü taraf içerik kontrolü: Sayfa gömülü sosyal medya videoları, reklam birimleri veya iframe içeriği içeriyorsa, mümkün olduğunda bunları bağımsız olarak yükleyin ve onların da uyumlu olduğunu veya ana sayfanın bir geçersiz kılma kontrolü sağladığını doğrulayın.
  8. Ses düzeyi bağımsızlığı kontrolü: Sayfa duraklatma/durdurma kontrolü yerine bir ses düzeyi kontrolü sunuyorsa, sayfanın ses kontrolünü ayarlamanın işletim sisteminin ana ses düzeyini değiştirmediğini doğrulayın. Başka bir uygulama açın (örneğin yerel bir medya oynatıcı) ve sayfanın kontrolünü kullandıktan sonra bu uygulamanın ses düzeyinin etkilenmediğini doğrulayın.

Nasıl Düzeltilir

Kontrol olmadan otomatik oynatılan arka plan sesi — Hatalı

<!-- Audio starts automatically with no visible or keyboard-accessible control -->
<audio src='background-music.mp3' autoplay loop></audio>

Erişilebilir duraklatma kontrolüyle otomatik oynatılan arka plan sesi — Doğru

<!-- Control is the first focusable element, announced properly by screen readers -->
<button id='audio-toggle' aria-label='Pause background music' aria-pressed='true' onclick='toggleAudio()'>
  Pause Music
</button>

<audio id='bg-audio' src='background-music.mp3' autoplay loop></audio>

<script>
  function toggleAudio() {
    var audio = document.getElementById('bg-audio');
    var btn = document.getElementById('audio-toggle');
    if (audio.paused) {
      audio.play();
      btn.setAttribute('aria-pressed', 'true');
      btn.setAttribute('aria-label', 'Pause background music');
      btn.textContent = 'Pause Music';
    } else {
      audio.pause();
      btn.setAttribute('aria-pressed', 'false');
      btn.setAttribute('aria-label', 'Play background music');
      btn.textContent = 'Play Music';
    }
  }
</script>

<!-- The native <button> element is keyboard-accessible by default.
     aria-pressed communicates toggle state to screen readers.
     aria-label updates dynamically to reflect current action. -->

Sesli film müziğine sahip, klavye ile erişilebilir durdurma kontrolü olmayan otomatik oynatılan video — Hatalı

<!-- The video autoplays with sound; the only stop control is a mouse-only overlay -->
<div class='hero-video-wrapper'>
  <video src='promo.mp4' autoplay loop></video>
  <div class='stop-btn' onclick='stopVideo()'>Stop</div>
</div>
<!-- Problem: <div> is not keyboard-focusable and has no role or label -->

Erişilebilir durdurma kontrolüyle otomatik oynatılan video — Doğru

<div class='hero-video-wrapper'>
  <!-- Stop control appears first in DOM and focus order -->
  <button
    id='video-stop-btn'
    aria-label='Stop promotional video'
    onclick='stopVideo()'
  >
    Stop Video
  </button>

  <video id='promo-video' src='promo.mp4' autoplay loop muted='false'></video>
</div>

<script>
  function stopVideo() {
    var video = document.getElementById('promo-video');
    var btn = document.getElementById('video-stop-btn');
    video.pause();
    video.currentTime = 0;
    btn.disabled = true;
    btn.textContent = 'Video Stopped';
  }
</script>

<!-- Using a native <button> ensures keyboard access without additional ARIA.
     Placing the button before the video in DOM order puts it early in tab sequence. -->

Bağımsız ses düzeyi kontrolüne sahip gömülü üçüncü taraf ses bileşeni — Doğru

<!-- When a third-party widget auto-plays, provide a host-level mute control -->
<button
  id='mute-widget-audio'
  aria-label='Mute podcast player'
  aria-pressed='false'
  onclick='muteWidget()'
>
  Mute Podcast
</button>

<iframe
  id='podcast-frame'
  src='https://embed.example.com/podcast/ep42?autoplay=1'
  title='Episode 42: Web Accessibility Deep Dive'
  allow='autoplay'
></iframe>

<script>
  function muteWidget() {
    <!-- postMessage API used to communicate with cross-origin iframe player -->
    var frame = document.getElementById('podcast-frame');
    var btn = document.getElementById('mute-widget-audio');
    var isMuted = btn.getAttribute('aria-pressed') === 'true';
    frame.contentWindow.postMessage({ action: isMuted ? 'unmute' : 'mute' }, 'https://embed.example.com');
    btn.setAttribute('aria-pressed', String(!isMuted));
    btn.setAttribute('aria-label', isMuted ? 'Mute podcast player' : 'Unmute podcast player');
  }
</script>

<!-- Note: host-level volume/mute control satisfies 1.4.2 when
     the iframe player's own controls may be inaccessible. -->

Yaygın Hatalar

  • Ses durdurma düğmesi olarak <div> veya <span> kullanmak, ancak tabindex='0', role='button' ve klavye olay işleyicileri eklememek. Bu tür öğeler, klavye gezinmesi ve ekran okuyucular için görünmezdir ve kontrolü en çok ihtiyaç duyan kullanıcılar için işe yaramaz hale getirir.
  • Ses kontrolünü DOM’da ana içerikten sonra yerleştirmek, böylece klavye kullanıcılarının kontrolüne ulaşmadan önce düzinelerce bağlantı ve form alanı arasında sekme yapması gerekir — bu noktaya gelene kadar ses bir dakika veya daha uzun süredir çalıyor olabilir. Kontrol, sayfadaki ilk veya ikinci odaklanabilir öğe olmalıdır.
  • HTML muted özniteliğiyle sesi varsayılan olarak kapatmak ve bunu uyumluluk olarak görmek. Sessize alınmış otomatik oynatılan bir ses öğesi, kullanıcı tarafından kullanılabilir bir kontrol değildir; kullanıcı sesin var olduğunu bilemez veya kendi ses düzeyi tercihlerini seçemez.
  • Yalnızca belirli medya öğesinin .volume özelliğini ayarlamak yerine, window.AudioContext.destination.gain çağırarak sistem ses düzeyi seviyelerini değiştiren bir ses düzeyi kaydırıcısı sağlamak. Bu, bağımsızlık gereksinimini karşılamaz.
  • Mobil tarayıcıların otomatik oynatmayı engellediğini varsaymak ve bu nedenle kontrol eklememek. Birçok mobil tarayıcı, ses bir video öğesine gömülü olduğunda veya kullanıcı daha önce alan adıyla etkileşime girdiğinde otomatik oynatmaya izin verir. Tarayıcı davranışı ne olursa olsun her zaman kontrolleri uygulayın.
  • Düğmenin durumu değiştiğinde erişilebilir etiketini güncellememek. Artık sesi yeniden başlatan "Duraklat" etiketli bir düğme, aria-label özniteliğini "Oynat" olarak güncellemelidir — aksi takdirde ekran okuyucu kullanıcıları yanlış bir duyuru duyar ve yanlış eylemi tetikleyebilir.
  • Yalnızca tarayıcının yerel medya kontrollerine (controls özniteliği) güvenmek ve bunların otomatik oynatılan ses rahatsız edici hale gelmeden önce göründüğünü doğrulamamak. Yerel kontroller, medya öğesinin altında oluşturulur; bu da katlanma çizgisinin altında olabilir ve önemli bir rahatsızlık oluşmadan önce klavye ile erişilemez hale gelebilir.
  • Reklam ağları aracılığıyla sunulan sesli reklamlarla test yapmamak. Sayfa yüklemesinden sonra dinamik olarak eklenen reklam alanları, sayfa deneyiminin bir parçasıdır ve 1.4.2’ye tabidir. Reklam ağı uyumluluğu garanti edemiyorsa, sayfa için genel bir sessize alma kontrolü sağlayın.
  • Üç saniyelik muafiyeti, sürekli bir ses parçasını üç saniyenin altındaki segmentlere bölerek bir açık kapı olarak görmek. WCAG’in amacı açıktır: Ses, teknik olarak nasıl parçalara ayrılmış olursa olsun, sürekli çalıyor veya döngüye alınıyorsa bu ölçüte tabidir.
  • Ses kontrolünde görünür bir odak göstergesi sağlamamak. Kontrol klavye ile erişilebilir olsa bile, görme yetisi olan klavye kullanıcıları odak halkası yoksa kontrolü bulamaz; bu da hem bu ölçütün kullanılabilirlik amacını hem de WCAG 2.4.7 (Odak Görünür) maddesini ihlal eder.

Türkiye’nin Erişilebilirlik Mevzuatıyla İlişkisi

Türkiye’nin 21 Haziran 2025 tarihli ve 32933 sayılı Resmî Gazete’de yayımlanan 2025/10 sayılı Cumhurbaşkanlığı Genelgesi, Türkiye’de faaliyet gösteren çok çeşitli kamu ve özel sektör kuruluşları için WCAG 2.2 ile uyumlu zorunlu web erişilebilirliği gereklilikleri getirir. WCAG 1.4.2 — Ses Kontrolü, en temel gereklilik katmanına yerleştirilen bir Seviye A ölçütüdür. Seviye A ölçütlerine uyulmaması, Genelge kapsamında asgari düzeyde bir başarısızlık anlamına gelir.

Genelge, uyum takvimlerini şu şekilde belirler: kamu kurumları, Genelge’nin yayım tarihinden itibaren bir yıl içinde tam Seviye A uyumunu sağlamak zorundadır; düzenleme kapsamındaki özel sektör kuruluşları ise uyum için iki yıla sahiptir.

Aşağıdaki kuruluş türleri, Cumhurbaşkanlığı Genelgesi kapsamında açıkça sayılmıştır ve bu nedenle WCAG 1.4.2’yi karşılamakla yükümlüdür:

  • Tüm düzeylerdeki kamu kurumları ve devlet organları, bakanlıklar, belediyeler ve dijital hizmetleri kamu tarafından kullanılan devlet bağlantılı kurumlar dahil.
  • Türkiye’de faaliyet gösteren e-ticaret platformları, pazar yeri işletmecileri ve doğrudan tüketiciye satış yapan çevrimiçi perakendeciler dahil.
  • Türk bankacılık mevzuatı kapsamında düzenlenen bankalar ve finans kuruluşları, çevrimiçi bankacılık portalları, mobil web arayüzleri ve dijital ürün sayfaları dahil.
  • Hastaneler ve sağlık hizmeti sağlayıcıları, randevu alma, kayıt erişimi veya sağlık bilgisi sunulan özel hastane grupları ve kamu sağlık portalları dahil.
  • 200.000 veya daha fazla abonesi olan telekomünikasyon şirketleri, müşteri odaklı web siteleri, self-servis portalları ve tanıtım sayfaları dahil uyumlu olmak zorundadır.
  • Türkiye’de tüketicilere hizmet veren seyahat acenteleri ve çevrimiçi seyahat platformları, rezervasyon motorları ve destinasyon içerik sayfaları dahil.
  • Çevrimiçi biletleme ve yolcu bilgilendirme hizmeti sunan özel ulaşım şirketleri.
  • Millî Eğitim Bakanlığı (MEB) tarafından yetkilendirilmiş özel okullar, kayıt portalları, öğrenme yönetim sistemleri ve bilgilendirme web siteleri dahil.

Bu kuruluşların tümü için, bir bankanın ana sayfasındaki tanıtım videosu, bir e-ticaret ürün sayfasındaki arka plan müziği veya bir kamu portalındaki gömülü haber klibi olsun, otomatik olarak ses çalan bir sayfanın erişilebilir, klavye ile erişilebilir bir duraklatma veya ses kontrolü sunmaması, hem WCAG 1.4.2’nin hem de 2025/10 sayılı Cumhurbaşkanlığı Genelgesi ile getirilen yükümlülüklerin doğrudan ihlali anlamına gelir. Kapsam dahilindeki kuruluşların, tüm sayfa şablonlarını otomatik oynatılan medya açısından denetlemeleri ve düzenleyici tespitlerden kaçınmak ve tüm kullanıcılara eşit hizmet sunmak için kendi son tarihlerinden çok önce uyumlu kontrolleri uygulamaları önemle tavsiye edilir.