Phone-Server: Real-Time Full-Duplex Voice Router & Jitter Buffer
Tokio ve Tungstenite üzerinde çalışan, sunucu taraflı yankı iptali ve istemci taraflı Jitter Buffer mimarisine sahip düşük gecikmeli raw PCM ses yayın motoru.
Teknoloji yığını
- Diller
- Çatılar & kütüphaneler
Performans & metrikler
- Kritik ses thread'lerinde kilitlenmeyi (lock contention) ve paket kaybını önlemek için Unbounded MPSC kanalları kullanıldı
- Jitter Buffer sayesinde ağ gecikmelerindeki anlık kopmaların ve ses yırtılmalarının önüne geçildi
- Çok aşamalı Docker build sürecinde
--no-default-featureskullanılarak, sunucunun Debian runtime'ı ağır C/C++ ses kütüphanelerinden (libasound2) arındırıldı ve binary boyutu minimuma indirildi
Neden geliştirdim?
WebRTC gibi standart protokoller basit ses iletimi için çoğu zaman gereksiz hantal kalıyor. Amacım TCP/WebSocket üzerinden sadece ham PCM ses verisi (f32 LE bytes) taşıyacak hafif ve bellek güvenli bir Rust altyapısı kurmaktı. Yankı (echo) problemini routing katmanında kaynak adreslerini filtreleyerek çözdüm, donanımsal sample-rate uyuşmazlıklarını ise doğrudan istemcide manuel olarak eşitledim.Mimari & kararlar
Mimari temelde CPAL'in senkron donanım thread'leri ile Tokio'nun asenkron I/O'sunu birbirine bağlıyor. İstemci, bant genişliğinden tasarruf etmek için mikrofon girişini Stereo'dan Mono'ya düşürüp, unbounded MPSC kanallarıyla asenkron WebSocket yazıcısına aktarıyor. Oynatım tarafında ağdaki dalgalanmaları sönümlemek için Mutex ile sarmalanmış VecDeque tabanlı bir Jitter Buffer (1000 sample eşikli) çalışıyor. Sunucu ise (SocketAddr, Message) tuple'ları taşıyan bir tokio::sync::broadcast kanalı kullanıp, yankıyı önlemek adına paketleri sadece gönderen adres dışındaki herkese iletiyor.
Temel özellikler
- 01CPAL kullanarak donanım seviyesinde düşük gecikmeli ses yakalama ve oynatma
- 02Ağ dalgalanmalarına karşı
VecDequetabanlı eşzamanlı Jitter Buffer - 03
SocketAddreşleştirmesiyle sunucu tarafında yankı/feedback engelleme - 04Cargo feature flag'leri sayesinde donanımsal ses bağımlılıklarını (ALSA/PulseAudio) sunucu derlemesinden izole etme
- 05Bant genişliği verimliliği için anlık Mono/Stereo downmix ve upmix işlemleri
Teknik değerlendirme
Bu proje, senkron donanım kesmeleri ile asenkron event loop'lar arasındaki sınırın nasıl düzgün yönetileceğine dair iyi bir örnek. İstemcideki in_config.sample_rate = out_config.sample_rate; ataması, donanımsal saat (clock) uyuşmazlıklarını çözen doğrudan, low-level bir müdahale. Ayrıca cpal kütüphanesini Cargo feature flag'inin arkasına saklamak, sunucu binary'sini inanılmaz hafif tutuyor ve production ortamındaki Docker imaj boyutunu ciddi şekilde küçültüyor.
Benzer projeler
Actix-Web Overlay Network Proxy Orchestrator
Tor ve Lokinet overlay ağları üzerinde dağıtık proxy node'larını yönetmek ve yönlendirmek için inşa edilmiş, asenkron ve yüksek performanslı WebSocket sinyalleşme API'si.
- Rust
- Actix-Web
- Tokio
- +4
Ağ & Protokoller
Cyberia & Wired Protokolü
Özel ve yüksek performanslı bir iletişim protokolü olan Wired üzerine inşa edilmiş, güvenli ve merkeziyetsiz bir işletim sistemi ve ağ katmanı projesi. HTTP yerine karşılıklı şifrelenmiş bir TCP el sıkışması (handshake) ve AES ile şifrelenmiş WebSocket veri paketleri kullanır.
- Rust
- C++
- Tauri
- +6
Tor Şifreli Mesajlaşma İstemcisi
Sadece Tor ağı üzerinden çalışan güvenli ve merkeziyetsiz bir mesajlaşma istemcisi. Kısa ömürlü (ephemeral) token tabanlı kimlik doğrulama ile gerçek zamanlı ve şifreli C++ WebSocket iletişimi kullanır.
- C++
- JavaScript
- Boost.Asio
- +5
Benzer bir ihtiyacınız mı var?
Bu tür bir sistemi sizin için de kurabilirim.
Projenizi birkaç cümleyle anlatın; doğru yaklaşımı ve tahmini kapsamı birlikte belirleyelim.