Browsed by
Kategori: WebRTC

Google Meet ve Yapay Zeka ile Gürültü Önleme Çözümü

Google Meet ve Yapay Zeka ile Gürültü Önleme Çözümü

Pandemi dönemi sebebiyle biliyorsunuz ki evden çalışma ile beraber web video konferans sistemleri de çok rağbet görmeye başladı. Pazarı açık ara Zoom domine etse de Google Meet de pazar payını artırmak isteyenlerden biri. Bunu da gün geçtikçe platformuna yeni özellikler ekleyerek hedefliyor. Yakın zamanda Google Meet’e eklenen gürültü önleme özelliği  sayesinde bu alanda Google yeni bir inovasyon yapmışa benziyor.

2020 Nisan ayında Google, Meet’ın gürültü engelleme özelliğinin G Suite Enterprise ve G Suite Enterprise for Education müşterilerine geldiğini duyurmuştu. Bu vesile ile bu özelliğin fikir babasının G Suite Ürün Yönetim Müdürü Serge Lachapelle olduğunu da belirtelim.  G Suite ürün yönetimi direktörü Serge Lachapelle, 13’ü Google’da olmak üzere 25 yıldır video konferans teknolojileri üzerinde çalışmış ve bu konuda oldukça deneyimli birisi.

Projenin Başlangıcı

Temel olarak bu proje Google’ın Ocak 2017’de Limes Audio‘yu satın almasıyla başlıyor. Esas fikir ise farklı saat dilimlerinde bulunan katılımcılar ile yapılan toplantılarda yaşanan sıkıntılar (evden çalışanların çocuklarının ve evcil hayvanlarının sesleri, kahvaltı sesleri vb.) sonucu doğuyor.

Google Meet’te Gürültü Nasıl Önleniyor?

Belki kullananlarınız vardır, bazı kulaklıklarda ve akıllı telefonlarda birden fazla mikrofonun kullanıldığı gürültü önleme mekanizmaları mevcut. Bu yöntem temelde ağıza tarafındaki mikrofondan alınan ses sinyalinden ağıza uzak olan başka bir mikrofondan (genelde mobil telefonların arkasında ya da üst-yanında bulunuyor) alınan ses sinyalinin çıkarılması ile çalışıyor. Google Meet’de sunulan özellik ise kullanıcı cihazından bağımsız, tamamen bulut tabanlı bir altyapı ve makine öğrenmesi kullanılarak gerçekleştiriliyor.

Neyin konuşma ve neyin konuşma olmadığını bulabilmek, gürültü ve konuşma arasındaki farkı anlamak ve daha sonra sadece konuşmayı filtreleyebilmek için bir makine öğrenme modelinin (denoiser) eğitilmesi gerekiyor. Serge ve ekibi, modeli eğitmek için kendi toplantılarını kullanıyor, daha sonra çok kişinin bulunduğu Youtube videoları ve arkasından manuel doğrulama yöntemleri ile algoritma olgunlaştırılıyor. Nihai durumda ise sistem köpek havlaması, kalem tıklaması ve daha fazlası gibi arka plandaki dikkat dağıtıcı sesleri akıllıca filtreleyebiliyor.

Aşağıdaki videoda da görebileceğiniz gibi Serge konuşurken bir yandan kuru yemiş poşeti, basmalı kalem ve bardak-kaşık gibi şeylerle gürültü çıkartarak özelliğin nasıl çalıştığını gösteriyor. Rutin olmayan gürültüler başladığı anda yüksek bir biçimde duyuluyor ama zaman içinde bu gürültüler sönümleniyor:

Google Meet Noise Cancellation Demosu

Takdir edeceğiniz üzere yapay zekanın işin içinde olduğu bir gürültü önleme sistemini kullanabilmek için sesinizin Google tarafından dinleniyor olması gerekiyor. Kullanıcı tarafında şifrelenen ses Google veri merkezlerinde çözülüp analiz ediliyor ve filtrelenen ses de yine aynı şekilde şifrelenerek kullanıcılara iletiliyor. Burada sesin dinlenerek analiz edilmesi kullanıcı tarafında bir soru işareti oluştursa da bu analizin sadece denoiser özelinde yapıldığı belirtiliyor. Bundan ziyade bu işlemlerin kısa sürede halledilebilmesi özellikle gerçek zamanlı iletişim için oldukça önemli bence.

Eğer G Suite Enterprise veya G Suite Enterprise for Education ürünlerini kullanıyorsanız bu özelliği aktif edebilmek için toplantı esnasında sağ altta bulunan üç noktaya tıklayıp Settings’den Noise cancellation‘ı aktif etmeniz yeterli:

Google Meet Noise Cancellation Ayarı
Google Meet Noise Cancellation Ayarı

Son Söz

Google’ın sevdiği bir yöntem olan veriyi merkezde (bulutta) işleyip kullanıcı tarafını daha yalın bırakma yöntemi başka bir alanda da vücut bulmuş. Şimdilik hala kısıtlı bir şekilde G Suite Enterprise ve G Suite Enterprise for Education müşterilerine sunulan bu hizmet tahminimce yakın zamanda tüm Google Meet kullanıcılarına da sunulacaktır. Hatta ileride Google’ın bunu başka hizmet sağlayıcılarına bir cloud hizmeti olarak da verebileceğini düşünüyorum.

Jitsi Meet Ubuntu’ya Nasıl Kurulur?

Jitsi Meet Ubuntu’ya Nasıl Kurulur?

Kısa Not: Jitsi Meet kurulumu ile ilgili profesyonel hizmet almak isterseniz bana iletişim linkinden ulaşabilirsiniz.

Jitsi Meet, çok kullanışlı ve basit, WebRTC tabanlı açık kaynaklı çok platformlu bir video konferans çözümüdür. Jitsi Meet’i bulut tabanlı veya kendi sunucularınızda da kullanabilirsiniz. Bu blog yazımda, Jitsi sunucusunu Ubuntu tabanlı linux platformunuza nasıl kuracağınızı açıklayacağım.

Jitsi Meet’i Ubuntu linux platformuna kurmak oldukça kolaydır. Bu kılavuzda, Jitsi sunucusunu Ubuntu 18.04 üzerinde .deb paketlerini kullanarak nasıl kurulacağını bulabilirsiniz.

Bu kurulum yazısında sizin Ubuntu’yu kurabileceğinizi farz ediyorum ve Jitsi kurulumuna temel kurulum noktasından devam edeceğim.

Öncelikle, sudo & ssh gibi temel paketleri kuralım. Konsoldan root olarak oturum açın, ardından gerekli paketleri kurun.

apt-get install -y ssh sudo ufw apt-transport-https

Root olmayan kullanıcınızı (benimki ferikci) /etc/sudoers dosyasına ekleyin.

ferikci  ALL=(ALL:ALL) ALL

Artık sudo komutlarını kullanarak mevcut kullanıcınızla devam edebilirsiniz.

Opsiyonel: UFW güvenlik duvarını etkinleştirin ve gereken portları açın:

sudo ufw allow in ssh 
sudo ufw allow in http 
sudo  ufw allow in https 
sudo  ufw allow in 10000/udp 
sudo  ufw enable 

Eğer linux makinenize SSH ile bağlıysanız, “ufw allow ssh” komutunu girdikten sonra “ufw enable” komutunu girin, aksi takdirde mevcut SSH bağlantınızı kaybedebilirsiniz.

Eğer Jitsi sunucusunu bir hostname ile kullanacaksanız /etc/hosts dosyasında ilgili hostname in blunduğuna emin olun:

127.0.0.1 localhost jitsi.test.local

Ardından linux makinenizi yeniden başlatın:

reboot

Şimdi kurulumun geri kalanında mevcut kullanıcınızla SSH üzerinden tekrar oturum açın.

Jitsi GPG anahtarını ekleyin.

 wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add - 

Ubuntu sistemlerinde Jitsi, Ubuntu’nun “universe” paketi deposundan bağımlılıklar gerektirir. Bunun için aşağıdaki komutla universe reposunu da ekleyin:

apt-add-repository universe

Daha sonra Jitsi deposunu ekleyin ve apt yi güncelleyin

sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
sudo apt-get -y update 

Jitsi-Meet Kurulumu

Artık Jitsi sunucu kurulumuna hazırsınız. Jitsi-meet’i bağımlılıklarıyla birlikte kurmak için aşağıdaki komutu kullanın:

sudo apt-get -y install jitsi-meet

Kurulum esnasında bilgisayar adınız (hostname) sorulacak ancak, sadece bilgisayar adınızı yazmayın, bu alana bilgisayar adınızı FQDN olarak yazmalısınız, aksi takdirde bağlantı ile ilgili sorunlarla karşılaşabilirsiniz. Bu arada, FQDN’nin DNS sunucuları tarafından çözüğlebildiğinden emin olun. (Ya da FQDN’i bilgisayarınızın hosts dosyanıza ekleyebilirsiniz.).

Jitsi Hostname (FQDN) Ayarları

Kurulumda bundan sonra sertifika istenecektir. Ben bu kurulumda kendinden imzalı SSL sertifikası kullanacağım, bu yüzden ilk seçeneği seçiyorum.

Jitsi SSL Sertifika Konfigürasyon Menüsü

Kurulum bir süre sonra tamamlanacak ve komut istemine geçecektir.

Şimdi video konferans GUI’nize bağlanma zamanı geldi. Jitsi sunucusunun ana sayfasına gitmek için https://FQDN adresini kullanın:

https://jitsi.test.local

Oda adı giriş alanına sahip bir ana sayfa göreceksiniz. Bir oda adı girin ve Go düğmesine tıklayın.

Jitsi Meet Ana Sayfa

Hepsi bu kadar! Aynı prosedürle veya https://FQDN/odaadı URL’sini kullanarak odanıza daha fazla katılımcı ekleyebilirsiniz.

https://jitsi.test.local/testroom
Ve Jitsi Meet Çalışır

Jitsi’yi Bir NAT Arkasında Çalıştırmak

Jitsi sunucunuzu iç IP ile bir NAT arkasında kullanmak istiyorsanız, yönlendiricinizi aşağıdaki portları Jitsi Meet sunucunuza yönlendirecek şekilde yapılandırmanız (port forwarding) gerekir:

  • 80/TCP
  • 443/TCP
  • 10000/UDP

Ardından /etc/jitsi/videobridge/sip-communicator.properties dosyasına iç ve dış IPlerinizi içeren aşağıdaki satırları eklemeniz gerekir:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=[İÇ.IP.ADRESİ]
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=[DIŞ.IP.ADDRESİ]

Örnek olarak kendi konfigürasyonum şöyle:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=192.168.1.20
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=95.9.74.32