Ses Dalgaları ile Veri İletişimi
WiFi, Bluetooth veya internet erişimi olmadan, yalnızca hoparlör (verici) ve mikrofon (alıcı) kullanarak yakın cihazlar arasında veri taşımak teknik olarak mümkündür ve data-over-sound olarak bilinir. Bu sayfa, projenin temelini oluşturan akustik veri iletimi konusundaki araştırmayı özetler.
1. Neden 18–22 kHz?
İnsan kulağı genelde 20 Hz – 20 kHz arasını duyar; fakat yetişkinlerin çoğu 17–18 kHz üzerindeki frekansları algılayamaz (presbiakuzi). Standart akıllı telefon, tablet ve laptop mikrofonları/hoparlörleri 22 kHz'e kadar olan sinyalleri makul kalitede üretip örnekleyebilir (44.1 kHz / 48 kHz örnekleme hızı, Nyquist limiti ≈ 22 kHz).
Akademik literatür bu aralığı "near-ultrasound" (yakın-ultrasonik) / quasi-ultrasound olarak adlandırır. ACM MobiCom 2016'da yayınlanan "Near-ultrasound communication for TV's 2nd screen services" çalışması tipik TV izleme ortamında 15 bps veri hızını başarmıştır. IEEE'nin "Ultrasonic Communication Using Consumer Hardware" çalışmasında ise 5 metreye kadar mesafede 4 kbps'e ulaşılmıştır.
Pratik aralık:
• 17–19 kHz: En güvenilir, çoğu mikrofon iyi çalışır, çocuklar/genç kulaklar duyabilir.
• 19–21 kHz: Yetişkinler genellikle duymaz, mikrofon hassasiyeti azalır.
• 20–22 kHz: Pratikte duyulmaz, ama Nyquist sınırına yakın olduğundan donanıma göre kalite değişir.
2. Gerçek Dünya Kullanım Alanları
📺 Second-Screen / İkinci Ekran
TV hoparlöründen yayılan ultrasonik damga, izleyicinin telefonunda izlediği içeriği tam saniyesinde tanımlar. Reklamla etkileşim, ek içerik, interaktif oyun veya ödül senaryolarında kullanılır. "J-shape detection" algoritmaları ulusal TV yayınlarında kullanılmıştır.
💳 Temassız Ödeme
Hindistan'da ToneTag ve benzeri firmalar; NFC olmayan telefonlarda bile sadece hoparlör/mikrofon kullanarak ödeme yapılmasını sağlıyor. QR, NFC, BLE bağımlılığını kaldırır.
🔗 Cihaz Eşleştirme
Smart TV, hoparlör veya IoT cihazını eşleştirirken WiFi şifresini sesle iletmek. Google'ın Tone uzantısı (kapatıldı), Chromecast Guest Mode benzer yaklaşımlar.
🏥 Sağlık Cihazları
CardiaWhisper gibi tıbbi araştırmalarda EKG verisi gibi ölçümleri radyo izni gerektirmeden hastane içinde ses ile aktarmak.
🛍️ Mağaza-içi Konum
Shopkick, mağazalarda hoparlöre yerleştirilen ultrasonik beacon ile müşterinin konumunu tespit ederek ödül verirdi. Reklam sektöründe SilverPush bu yaklaşımı kullandı (gizlilik tartışmalarına yol açtı).
📢 Ofline Bildirim Yayını
Acil duyuru sistemleri: WiFi/sinyal olmayan AVM, hastane, fabrika gibi yerlerde PA hoparlöründen yayılan sessiz ses, telefonlara bildirim tetikler.
🤖 AI Ajan İletişimi
Birden fazla AI ajanın aynı odada hoparlör/mikrofon ile birbirleriyle konuşması; ggwave bu senaryo için tercih edilen kütüphane oldu (2024–2025 trend).
🔐 Sözsüz Doğrulama
Kapı kilitleri, otomat, otopark bariyeri gibi sistemlerde — telefonu sadece yakına götürmek, hoparlörden çıkan sessiz "token" ile doğrulama sağlar.
3. Modülasyon Teknikleri
3.1 FSK (Frequency Shift Keying)
Farklı bit kombinasyonları farklı frekanslarla temsil edilir. Bu projede kullandığımız yöntem 4-FSK:
| Sembol | Bitler | 18-20 kHz (varsayılan) | 20-22 kHz (ultrasonik) |
|---|---|---|---|
| S0 | 00 | 18 300 Hz | 20 100 Hz |
| S1 | 01 | 18 750 Hz | 20 550 Hz |
| S2 | 10 | 19 200 Hz | 21 000 Hz |
| S3 | 11 | 19 650 Hz | 21 450 Hz |
Her sembol 2 bit taşır. 60 ms sembol süresi → saniyede yaklaşık 4 bayt iletilir.
3.2 MFSK / OFDM
Multi-Frequency Shift Keying: ggwave kütüphanesinde olduğu gibi aynı anda 6 ton ile 3 bayt taşımak. 96 frekans (46.875 Hz aralık) kullanılarak 4.5 kHz bant içinde 8–16 bayt/sn elde edilir. OFDM, WiFi, LTE, DSL'de de kullanılan ortogonal alt taşıyıcı yaklaşımıdır.
3.3 Chirp Sinyalleri
Frekansın zamanla doğrusal değiştiği darbeler. Chirp.io (Sonos tarafından satın alındı) ve birçok ürün senkronizasyon için kullandı. Yansımalar ve dar bant gürültüsüne karşı dayanıklıdır.
3.4 PSK (Phase Shift Keying)
Veri taşıyıcının fazında kodlanır. Daha verimli ancak akustik kanalda (çoklu yol, Doppler) zordur. Telsiz iletişimde yaygındır.
4. Veri Çerçevesi (Frame) Tasarımı
Bu projede her iletim aşağıdaki yapıdadır:
┌──────────┬──────────┬──────────┬──────────────┬──────────┐ │ PREAMBLE │ SOF │ LENGTH │ PAYLOAD │ CRC-16 │ │ 17.0 kHz │ marker │ 16 bit │ N bayt │ 16 bit │ │ ~200 ms │ ~100 ms │ 8 sembol │ 4N sembol │ 8 sembol │ └──────────┴──────────┴──────────┴──────────────┴──────────┘
- PREAMBLE: Alıcının zamanlamayı yakalaması için sabit ton.
- SOF: Start-Of-Frame markeri.
- LENGTH: Yükün bayt uzunluğu.
- PAYLOAD: Veri (UTF-8 metin veya base64 ikili parça).
- CRC-16-CCITT: Polinom 0x1021 ile hata tespiti.
⚡ Bant Darlığını Aşmak: Token (Link) Yaklaşımı
Saf P2P modunda ham bayt hızı yaklaşık 5 B/sn'dir; bu da 4 KB'lık bir görsel için ≈ 13 dakika anlamına gelir. Pratik kullanım için endüstride yaygın bir kestirme yöntem: asıl veriyi değil, küçük bir referansı sesle iletmek.
GÖNDEREN ALICI
───────── ────
[veri] Mikrofon dinler
│ │
│ POST /api/drop.php │
▼ ▼
sunucu → token: "X9K4M" ses çözülür → "X9K4M"
│ │
│ (5 byte ≈ 2 saniye ses) │
▼ ▼
sesle yayınla ───── ~18-22 kHz ─────> GET /api/get.php?t=X9K4M
│
asıl veri (5 MB'a kadar)
│
▼
Anında gösterim
Avantajları:
- ~2 saniye içinde 5 MB veri "iletilmiş" gibi görünür
- Token sabit uzunluk; iletim süresi içerik boyutundan bağımsız
- Sunucu, içeriği TTL (24 saat) sonra otomatik temizler
- Ses kanalı için ideal: kısa, tek paket, gerekirse tekrarlanır
Bu projedeki Hızlı Mod tam olarak bu yaklaşımı uygular. Token alfabesi
Crockford base32 (karışan harfler çıkarılmış): 23456789ABCDEFGHJKMNPQRSTUVWXYZ,
5 karakter = 30⁵ ≈ 24M kombinasyon, çakışma olursa otomatik uzar.
Kullanım senaryoları: second-screen reklamı, ödeme onayı, kapı kilidi,
cihaz eşleştirme, paylaşım linki, etiketli içerik tetikleme.
Saf vs Hızlı Mod: Eğer hedef gerçek bir internetsiz ortam ise Saf Mod tek seçenek. Demo, gerçek uygulamalar (ödeme, eşleştirme, second-screen) için Hızlı Mod 1000× daha pratiktir.
6. Büyük Dosyaların İletilmesi (Saf Mod)
Akustik kanalın bant darlığı nedeniyle ham bayt hızı ≈ 4–10 B/s'dir. Büyük veriler şu adımlarla işlenir:
- Sıkıştırma: Resimler client-side yeniden boyutlandırılır; düşük kaliteli JPEG'e çevrilir. Hedef: 1–4 KB.
- Parçalama: Veri 32 baytlık paketlere bölünür; her paket sıra numarası taşır.
- Manifest paketi: İletim başında dosya adı, MIME tipi, toplam paket sayısı gönderilir.
- Doğrulama: Her paket CRC-16 ile doğrulanır; bozuk paketler atılır.
- Yeniden birleştirme: Paketler sıraya konup orijinal veri çıkarılır.
Gerçekçi rakamlar: 200 baytlık metin ≈ 50 saniye, 4 KB'lık küçük resim ≈ 15 dakika. Telefon-laptop testlerinde (lewismoten/data-over-audio): insan duyma bandı için 538 bps, telefon bandında 138 bps elde edildi.
7. Bilinen Projeler & Kütüphaneler
- ggwave (Georgi Gerganov)
- C++ + WebAssembly. 6 ton paralel MFSK, Reed-Solomon hata düzeltme. 8–16 B/sn. F0 ultrasonik mod için 15 kHz. Açık kaynak, npm üzerinden erişilebilir.
- quiet.js / libquiet
- OFDM tabanlı veri iletimi; daha hızlı ama daha karmaşık.
- AudioNetwork (robertrypula)
- Saf JS, Web Audio API tabanlı; eğitim amaçlı detaylı protokol katmanları.
- data-over-audio (lewismoten)
- MFSK, çoklu osilatör. Telefon-laptop testlerinde 538 bps.
- ToneTag
- Hindistan kökenli ticari ödeme platformu; ses ile P2P para transferi.
- Cue Audio
- Stadyum/etkinlik senkronizasyonu (ışık şovları, anonslar).
- Lisnr
- Ticari SDK; ödeme, eşleştirme, kimlik doğrulama.
- Google Tone (2015–2016)
- Chrome eklentisi; sekme URL'ini ses ile paylaşırdı. ~18 kHz. Kapatıldı.
- Chirp.io → Sonos
- Chirp tabanlı protokol; mağaza içi cihaz eşleştirme. Sonos tarafından satın alındı.
- SilverPush / Shopkick
- Reklam izleme/mağaza beacon. Gizlilik tartışmalarına yol açtı; FTC inceledi.
8. Sınırlamalar
- Menzil: Tipik 0.5–5 metre. Yansıyan sesler hata artırır.
- Gürültü hassasiyeti: Yüksek frekanslı arka plan gürültüsü hata oranını artırır.
- Donanım farklılığı: Ucuz hoparlörler 18 kHz üstünde zayıflar.
- Veri hızı: 5–20 B/sn; WiFi ile karşılaştırılamaz.
- Tarayıcı izinleri: Mikrofon için HTTPS ve kullanıcı onayı gerekir.
- Hayvanlar: Köpek/kedi 20 kHz'e yakın sesleri duyabilir.
- Gizlilik: Ultrasonik beacon takibi kullanıcı izni gerektirir.
9. Bu Projedeki Mimari
GÖNDEREN CİHAZ ALICI CİHAZ ┌────────────────────┐ ┌────────────────────┐ │ Metin / Dosya │ │ getUserMedia() │ │ │ │ │ │ │ │ Sıkıştırma / │ │ AudioContext │ │ Chunking │ │ │ │ │ │ │ │ AnalyserNode │ │ Frame oluştur │ │ (FFT, n=4096) │ │ (CRC16 + length) │ ~18-22 kHz │ │ │ │ │ │ ═══════════════> │ Senkron + sembol │ │ 4-FSK encoder │ hava │ tespiti │ │ │ │ │ │ │ │ AudioBuffer → │ │ Çerçeve birleştir │ │ Hoparlör │ │ CRC kontrol │ └────────────────────┘ └────────────────────┘
10. Kaynaklar
- Lee & Park — Near-ultrasound communication for TV's 2nd screen services (ACM MobiCom 2016)
- IEEE — Ultrasonic Communication Using Consumer Hardware
- NCBI — Medical Data over Sound: CardiaWhisper Concept
- ToneTag — Data-Over-Sound Technology blog
- Trillbit — Use cases of data over sound
- Georgi Gerganov — ggwave (GitHub)
- Robert Rypula — AudioNetwork (GitHub)
- Lewis Moten — data-over-audio (GitHub)
- Cue Audio — Acoustic Modem / data over sound
- W3C Web Audio API ve MediaDevices.getUserMedia spesifikasyonları