Faz Dizili Mikrofon (2023)
(benwang.dev)- 192 kanallı faz dizili mikrofon, kayıt sonrasında bile yönlülüğün değiştirilebilmesini veya aynı anda yüz binlerce noktaya odaklanılabilmesini sağlayarak, sıradan yönlü mikrofonlarla zor olan ses kaynağı konum tahmini ve görselleştirmeyi mümkün kılar
- Donanım, radyal mikrofon kolları ve merkezi bir hub’dan oluşur; yaklaşık $700 maliyetle 192 MEMS mikrofon, Colorlight i5 FPGA kartı ve Gigabit Ethernet aktarım yapısı kullanır
- FPGA, karmaşık ön işlemeden çok ham PDM verisi aktarımına odaklanır; 3.125MHz girişi işler ve yaklaşık 715Mbps ile Gigabit Ethernet bant genişliğinin yaklaşık %70’ini kullanır
- Yazılım, CIC filtreleri, FFT tabanlı kalibrasyon, GPU optimizasyonu ve Triton beamforming’i birleştirerek 3D yakın alan ve 2D uzak alan ses kaynağı konumunu gerçek zamanlı olarak görselleştirir
- UDP paketleri
tcpdumpile yakalanıp yeniden oynatılabilir, ancak ham depolama hızı 87.5MB/s seviyesine ulaştığından 1 saatlik kayıt için 315GB gerekir
192 kanallı faz dizili mikrofon yapısı
- 192 kanallı faz dizili mikrofon, FPGA veri toplama ile GPU tabanlı beamforming ve görselleştirmeyi bir araya getirir
- Sıradan yönlü mikrofonlardan farklı olarak faz dizisi, kayıt sonrasında bile yönlülüğün değiştirilebilmesini sağlar ve gerçek zamanlı olarak aynı anda yüz binlerce noktaya odaklanabilir
- Tüm tasarım açık kaynak olarak yayımlanmıştır
Donanım tasarımı
-
Dizi yapısı ve maliyet
- Çok sayıda mikrofon, geniş aralıklı bir dağılımla yerleştirilerek faz dizisi oluşturulur
- Doğrusal dizilerde, geniş bant sinyaller için mikrofonlar arasındaki üstel aralıklandırma en uygun yöntem olarak bilinir
- 2D dizide, merkezi hub kartını küçük tutmak için simetrik doğrusal dizi kolları radyal olarak yerleştirilir
- Tüm dizinin maliyeti yaklaşık $700’dır
-
Kol kartları
- Her kolun uzunluğu PCB üretim ve montaj sınırlarına göre belirlendi; JLCPCB’nin 4 katmanlı PCB üretim ve montaj için azami uzunluğu 570mm idi
- Mikrofon olarak birim başına yaklaşık $0.5 fiyatlı düşük maliyetli dijital çıkışlı MEMS mikrofonlar kullanılır
- Bu fiyat aralığında mikrofonlar arasında büyük performans farkı yoktur
- Çoğu 10kHz’e kadar makul performans gösterir, ancak faz gecikmesi ve ses seviyesi eşleşmesi belirtilmez
- Mikrofonlar veriyi PDM(pulse density modulation) biçiminde çıkarır
- Duyulabilir aralığın çok üzerinde, en fazla 4MHz frekansta 1 bit çıkış üretir
- Yüksek örnekleme hızıyla niceleme gürültüsünü telafi eder
- Veriyi saat sinyalinin yükselen ve düşen kenarlarında yakalayan DDR desteği sayesinde iki mikrofon tek bir hat üzerinde çoklanabilir
- Her kol 8 mikrofon ve 4 çıkış hattı içerir; saat giriş hattında çıkış tamponu bulunur
- Yüzlerce mikrofon aynı saat sinyalini paylaşsa bile yükselme süresinin makul kalması için tasarlanmıştır
- Kol PCB’lerinin verimi iyi değildi; ilk durumda çalışan kart oranı yaklaşık %50 idi
- En yaygın arıza, saat hattının 3V3 veya GND’ye kısa devre olmasıydı
- Kısa devreyi çözmek için mikrofonları tek tek söküp deneme-yanılma yapmak gerekiyordu
- Bazı mikrofonlar yeniden işlemden sonra da hatalı veri üretti ve kod bu mikrofonları maskeleyerek hariç tuttu
- Sonraki tasarımda saat hattına seri direnç eklemek, panelizasyonu iyileştirmek ve lehim pastası stencil’ini geliştirmek yeniden işleme ihtiyacını azaltabilir
-
Hub kartı
- Veri toplama için çok sayıda düşük gecikmeli I/O ve Gigabit Ethernet gibi yüksek hızlı arayüzler gerektiren bir FPGA kullanılır
- Özellikle Colorlight i5 kartı seçilmiştir
- Bunun nedeni yeterli I/O, düşük fiyat, kolay bulunabilirlik ve iki entegre Ethernet PHY içermesidir
- Bu projede Ethernet PHY’lerden yalnızca biri kullanılır
- Bu kart aslında LED paneller için bir Ethernet arayüzüdür, ancak tamamen tersine mühendislik uygulanmıştır
- Yaklaşık 100 GPIO, DDR2 konnektörü üzerinden dışarı alınmıştır; bu da orijinal FPGA’nin BGA yapısına kıyasla fan-out’u kolaylaştırır
- Hub, FPGA’nin yanı sıra basit güç yönetim devresi, kol kartları için konnektörler ve entegre manyetiklere sahip Ethernet konnektörü içerir
-
Mekanik tasarım
- Kollar, PCB montaj standoff’ları ve somunlar ile M3 vidalar kullanılarak hub’a bağlanır
- Kol ile hub arasındaki bağlantı 8 pinli 2mm pitch konnektör ile sağlanır
- İlk tasarımda kol PCB’sindeki slotlar ile çevresel yapısal PCB birbirine geçirilmişti, ancak kolun burulma rijitliği düşük olduğundan tüm yapı kolayca deforme oluyordu
- Son tasarımda dizinin dış çevresine lazer kesimli 1/4 inç MDF parçası yerleştirildi ve her kol kablo bağıyla MDF’ye sabitlendi
- Mikrofon dizisi duvara monte edildiği için yansımaya açıktır; bu nedenle kalibrasyonu kolaylaştırmak amacıyla yansımalar akustik köpük ile azaltıldı
FPGA gateware
-
Tasarım hedefleri
- Gateware’in temel hedefi, toplanan ham veriyi kayıpsız biçimde bilgisayara kararlı şekilde aktarmaktır
- FPGA üzerinde decimation ve filtreleme yapmak veri hızını azaltabilir, ancak ham PDM verisi de Gigabit Ethernet üzerinden aktarılabilir
- Ham veriyi göndermek, FPGA kodunun karmaşıklığını azaltır ve yinelemeli geliştirmeyi hızlandırır
- Kod derleme süresi yerleştirme ve yönlendirmeden daha kısadır; ayrıca genel amaçlı kodda hata ayıklayıcı kullanmak, gateware hata ayıklamaktan daha kolaydır
-
PDM arayüzü
- PDM giriş modülü, 50MHz sistem saatini 16’ya bölerek 3.125MHz PDM saati üretir
- Her saat kenarından sonra 96 giriş pini yakalanır ve her saat döngüsünde 32 bit veri kaydırılır
- Her 192 bitlik veri parçasına 32 bitlik artan tamsayı başlığı eklenir
- PDM arayüzünün giriş veri hızı 3.125MHz × 96 giriş pini × DDR 2 = 600Mbps’dir
- Başlık dâhil çıkış veri hızı 700Mbps’dir ve 32 bitlik çıkış veri yolunun kullanım oranı yaklaşık %40’tır
-
Paketleme ve UDP aktarımı
- Paketleme modülü, özel giriş arayüzüne sahip bir FIFO tamponuna benzer
- Ethernet arayüzü PDM çıkışından daha hızlı olduğu için, standart bir FIFO gibi kuyrukta tek öğe olduğunda hemen çıkış vermek istekten küçük paketler oluşturabilir
- Paketleme modülü, kuyrukta bir paketlik veri birikene kadar bekler ve ardından iletime başlayarak sabit boyutlu paketleri garanti eder
- Her paket 48 adet 224 bitlik PDM çıkış bloğu içerir
- Bir blok 192 bit veri ve 32 bit başlıktan oluşur
- Paket başına veri miktarı 1344 bayttır
- Buna 20 bayt IPv4 başlığı ve 8 bayt UDP başlığı eklenir
- Paket oranı yaklaşık 65kpps’dir; sonuçta hat hızı 715Mbps olur ve Gigabit Ethernet kullanım oranı yaklaşık %70’tir
- UDP akışı için LiteEth kullanılır
- UDP/IP kapsülleme ve ARP tablosu gibi alt düzey karmaşıklıkları soyutlar
- FIFO’yu UDP akışına bağlamayı kolaylaştıran bir arayüz sunar
- Aralıklı gecikmeler, paketleme FIFO’sundaki tampon payıyla emilir
-
FPGA kaynak kullanımı
- Colorlight i5’in FPGA’si
LFE5U-25F-6BG381Cmodelidir ve 25k LUT içerir - Tasarım, açık kaynak Project Trellis araç zinciriyle yerleştirilip yönlendirilmiştir
- Gateware basit tutulduğu için kaynak kullanımı düşüktür ve ek özellikler için geniş alan bırakır
- DP16KD: 16/56, 28%
- TRELLIS_FF: 1950/24288, 8%
- TRELLIS_COMB: 3701/24288, 15%
- Maksimum saat, 50MHz hedefinde 73.17MHz ile geçmiştir
- Ethernet RX saatine ilişkin zamanlama uyarısı, LiteEth’in gray counter’ıyla ilgili bir false positive durumudur
- Colorlight i5’in FPGA’si
Yazılım işleme hattı
-
CIC filtre
- Her mikrofon 3.125MHz 1 bit sinyal üretir ve bunu sonraki işlem için daha düşük örnekleme hızına ve bit derinliğine indirmek gerekir
- Bu iş için aritmetik işlemi az olan CIC filtre kullanılır
- Tom Verbeure’nin Moving Average and CIC Filters serisi referans alınmıştır
- Son seçim 4 kademeli, 16x decimation CIC filtre oldu
- Örnekleme hızını 195kHz’e düşürür
- Çıkış 32 bittir
- 3.125MHz veriyi kabul edebilmek için tek bir örnek grubunun 320ns içinde işlenmesi gerekir
- Basit Rust uygulaması tek çekirdekte yeterince hızlı değildi; bu yüzden soyutlamayı azaltıp otomatik vektörleştirmeyi daha iyi teşvik eden bir uygulama son hâlde kullanıldı
- SIMD intrinsic uygulaması çok daha hızlıydı, ancak diğer kodlarla birlikte kullanıldığında hizalama sorunları yaşandı
- Benchmark sonuçları:
bench_cic: 574ns/iter, 41MB/sbench_fast_cic: 181ns/iter, 132MB/sbench_simd_cic: 36ns/iter, 666MB/s
-
Kalibrasyon
- Dizi kalibrasyonu, odada dizinin önünde hareket ettirilen ve white noise çalan bir hoparlörle yapıldı
- Tüm mikrofon çiftleri arasında FFT tabanlı çapraz korelasyon hesaplanarak göreli gecikmeler elde edildi
- Mikrofon çifti sayısı 18.000’den fazla olduğu için hesaplama yükü büyüktür
- 16k~64k pencere boyutlarında FFT bellek darboğazına takıldığından, sonuçları belleğe yazmamak için IFFT ile tepe arama birleştirildi ve 15 kat hızlanma elde edildi
- Ryzen 7950X üzerinde bu süreç gerçek zamanlı çalışır
- Ardından her andaki ses kaynağı konumu ile her mikrofonun konumu gradyan inişiyle optimize edilir
- Kayıp fonksiyonu, ölçülen korelasyon ile ideal korelasyon arasındaki farkı azaltır
- Mikrofon konumlarının başlangıç konumlarından aşırı sapmaması sağlanır
- Ses kaynağı yörüngesinin jerk değeri de azaltılır
- Kalibrasyon sürecinde ses hızı da optimizasyon parametresi olarak yer alır; bu da tüm sürecin aşırı karmaşık bir termometre gibi davranmasına yol açar
- Yüzlerce yinelemeden sonra ses kaynağı konumu, mikrofon konumu ve ses hızı gibi sabitler makul çözümlere yakınsar
- Bu problem GPU vektörleştirmesine çok uygundur ve birkaç saniyede yakınsar
- Nihai ortalama konum hatası yaklaşık 1mm düzeyindedir
- Yetersiz yapısal rijitliğin oluşturduğu çökme gibi büyük sistematik bozulmalar da kalibrasyonla düzeltilir
- Tasarlanan konum ile kalibre edilen konum arasındaki azami hata yaklaşık 5mm’dir
- 10kHz sesin dalga boyu yaklaşık 3.4cm olduğundan, kalibrasyon yapılmazsa yüksek frekanslarda anlamlı faz hataları oluşabilir
Beamforming ve görselleştirme
-
Beamforming yöntemi
- Beamforming, ham mikrofon girişlerini işleyerek yönlü yanıt oluşturma sürecidir
- Uygulanan yöntem en basit delay-and-sum, yani DAS’tır
- Her sinyal, ses kaynağına olan mesafe farkına göre geciktirilip toplanır
- Bu projede beamforming frekans alanında yapılır
- Frekans alanında gecikme, gerekli gecikmeyle orantılı doğrusal faz terimi ve sinyalin karmaşık çarpımı ile uygulanır
- Böylece örnekleme periyodunun tam sayı katı olmayan gecikmeler de doğal biçimde işlenir
- Orijinal dizinin birden fazla örtüşen alt dizisi, frekans aralıklarına göre kullanılır
- Tüm frekanslarda tüm mikrofonlarla beamforming yapmak gerekmediğinden işlem yükü azalır ve tüm frekanslarda beamforming kazancının dengelenmesine de yardımcı olur
-
Triton tabanlı GPU uygulaması
- Beamformer, Triton kernel’larıyla uygulanmıştır
- Triton, Nvidia GPU’larda çalışacak şekilde derlenen bir Python DSL’idir
- Yüz binlerce noktaya beamforming uygulandığında GPU’nun büyük paralelliği gerçek zamanlı sonuçları mümkün kılar
- Triton dilinin paylaşımlı bellek dizi indeksleme desteğine ilişkin mevcut kısıt nedeniyle performans tam olarak optimum değildir, ancak CUDA C++ yazmak tercih edilmemiştir
-
Yakın alan 3D beamforming
- Yakın alan 3D beamforming 5cm voksel ızgarası üzerinde yapılır
- Izgara boyutu 64×64×64’tür
- RTX 4090 üzerinde 12Hz güncelleme hızına ulaşılır
- Daha yüksek hızlar, küçük iş birimlerinde CPU-GPU senkronizasyonunun verimsiz ek yüküyle sınırlanır
- Voksel ızgarası, OpenGL tabanlı yüksek performanslı görselleştirme kütüphanesi VisPy ile görselleştirilir
- 250 bin yarı saydam vokselin çizimi, modern oyunlardaki poligon sayılarıyla karşılaştırıldığında etkileşimli kare hızlarında sorun oluşturmaz
-
Uzak alan 2D beamforming
- Uzak alan ses kaynaklarında dalga cephesi neredeyse düzdür; bu nedenle kaynağın ne kadar uzakta olduğu dizi sinyalini anlamlı biçimde değiştirmez
- Yakın ses kaynaklarında dalga cephesi eğriliği daha büyüktür ve bu sayede 3D konum belirlenebilir
- Uzak alan beamforming’de derinlik boyutu olmadığı için daha yüksek çözünürlük kullanılabilir
- 512×512 piksellik ızgara kullanılır ve yine 12Hz güncelleme hızına ulaşılır
- Uzak alan beamforming, gerçek düzlem dalga varsayımı yerine noktaların uzağa yerleştirilmesi şeklindeki yaklaşımı kullanır
- Oda içi yansımalar ve çok yollu etkiler fazla olduğundan 2D görselleştirme demosu akustik ortamdan etkilenir
-
Yönlü ses
- Önceki iki beamforming uygulaması her konumdaki ses enerjisini hesaplar, ancak beamformed sesi bellekte oluşturmaz
- Yönlü ses kaydı için zaman alanında çalışan bir delay-and-sum beamformer uygulanmıştır
- Dizi merkezine göre 3D koordinat alır
- Ses örnekleri üretir
- Bu beamformer’ın çıktıya göre konumu türevlenebilir durumdadır
- Ses kaynağı konumu, türevlenebilir bir kayıp fonksiyonu ile optimize edilebilir
- Çok konuşmacılı transkripsiyonda forced alignment modeli kullanarak her konuşmacının fiziksel konumunu bulmaya yönelik uygulamalar mümkün olabilir
- Etkiyi karşılaştırmak için bir hoparlör dizinin önünde ses oynatırken, başka bir hoparlör dizi merkezinden yaklaşık 45 derece uzakta aynı mesafeden white noise çalar
- Tek mikrofon ham sesi ile beamforming uygulanmış ses karşılaştırılarak beamforming etkisi gösterilir
Kayıt yöntemi ve sınırlamalar
- Mikrofon dizisi verisi UDP paketleri olduğundan
tcpdumpgibi araçlarla kaydedilebilir - Paket yakalama dosyası okunup paketler dinleyiciye yeniden enjekte edilebilir
- Önceki programlar gerçek zamanlı çalışacak şekilde tasarlanmış olsa da, bu yöntemle kayıtlı veriler üzerinde de çalışırlar
- Dezavantajı, ham verinin aynen saklanması nedeniyle çıkış veri hızının çok yüksek olmasıdır
- Niceleme gürültüsü bile eksiksiz kaydedilir
- Veri hızı 87.5MB/s’dir
- 1 saatlik kayıt için 315GB gerekir
- Daha optimize bir uygulama sıkıştırma kullanabilir veya CIC filtreden sonra daha düşük örnekleme hızında kayıt yapabilir
Olası genişletmeler
- Proje fiilen tamamlanmış durumdadır ve yakın gelecekte üzerinde daha fazla çalışma planlanmamaktadır
- Yine de bunu kendisi yapmak isteyenler için genişletme alanı vardır
- DAMAS gibi daha gelişmiş beamforming algoritmaları kullanmak
- Sesin nereden geldiğini görüp o konumdan ses kaydetmek gibi mevcut işlevleri birleştiren daha iyi bir GUI
- Türevlenebilir beamforming ile sinir ağı modellerini birleştirmek; örneğin forced alignment örneğindeki gibi uygulamalar mümkün olabilir
1 yorum
Hacker News yorumları
Kalibrasyon sürecinde ses hızı da sistemin en iyi modelini elde etmek için optimize edilen bir parametre olduğundan, tüm prosedürün saçma derecede aşırı tasarlanmış bir termometre gibi çalışması ilginç.
Elektronik dünyasındaki “Her sensör bir sıcaklık sensörüdür; bazıları başka şeyleri de ölçer” sözü aklıma geliyor.
Meğer bu yöntemle sıcaklığı da ölçebiliyor, grafiği dışa uzatarak mutlak sıfırı da bulabiliyormuşsunuz.
Hatırladığım kadarıyla sonuç yaklaşık 20K sapmıştı; ama bir lise öğrencisinin garaj projesi için oldukça iyi olduğunu düşünüyorum.
Yeterince hassas bir atalet ölçüm biriminin (IMU), Coriolis etkisini kullanarak nispeten doğru bir boylam ölçümü bile yapabilmesi örneği özellikle hoşuma gidiyor.
https://youtu.be/zsA3X40nz9w?si=oGg2wdUlLXSDxpsN
Eskiden zemine büyük bir Y şekliyle yerleştirilmiş 4 mikrofonlu bir dizi ile yarasaların çok noktalı konumlandırmasını yapan bir projede çalışmıştım.
Dört mikrofona varış zamanlarındaki farkı kullanarak dizinin üzerinden uçan her yarasanın konumunu bulabiliyor ve türünü de belirleyebiliyorduk.
Rüzgâr türbini kurulumlarının çevresel etkisini değerlendiren bir araştırmada kullanıldı; oldukça eğlenceliydi.
Kısa lazer darbeleriyle sivrisinekleri izleyip öldürmek için geliştirilmiş bir cihazdı.
Sivrisineklerin uzaydaki konumunu hassas biçimde yakalamak gerektiğinden, yan ürün olarak kanat çırpma frekansı farklarını algılayıp hedefleri cinsiyete ve türe göre ayırt edebiliyordu.
Elbette donanım ve yazılım becerilerim yetersizdi; TDOA algoritmasını da en saf haliyle uygulamış, zaman farkını çapraz korelasyonla tahmin etme yöntemini de çok verimsiz kurmuştum.
Yine de çok şey öğrendim ve sonunda SAR sistemleri üzerine doktoraya uzandı.
SAR’ı aslında dizi yerine platformun hareketini kullanan bir beamformer’a yakın görüyorum.
Yarasaların akciğerlerinin çok hassas olduğu, büyük türbinlerin basınç farkı içinden uçtuklarında kılcal damarlarının fiilen patladığı yönünde bir şey duymuştum.
Nereden başlamam gerektiğine dair başvurulabilecek kaynaklar olsa iyi olurdu.
Bir akrebin altına mikrofon dizisi yerleştirip, yarasanın akrebi taramak için ultrasonik ışınını nasıl hareket ettirdiğini göstermişlerdi.
Gerçekten şaşırtıcı bir sonuçtu [0].
[0]: https://www.youtube.com/watch?v=57ScSPWhGqU
Dizide neden TDM I2S mikrofonları yerine PDM kullanıldığını merak ediyorum.
ICS-52000 nispeten ucuz; 100 adette 2 dolar civarında, 4 mikrofonlu breakout kartları da var ve anladığım kadarıyla 8 ya da 16 taneye kadar zincirlenebiliyor.
https://www.cdiweb.com/datasheets/notwired/ds-nw-aud-ics5200...
Jetson veya I2S destekli DSP/GPU donanımı kullanılırsa I2S portu başına 16 mikrofon zincirlenebiliyor; bu da FPGA kurulumuna göre montaj ve programlamayı çok daha kolay gösteriyor.
192 mikrofon söz konusu olunca 2 dolar/adet ile 0,5 dolar/adet arasındaki fark epey büyüyor.
16’lı daisy-chain yapsanız bile yeterli sayıda I2S arayüzü olan bir cihaz bulmak zor; çoğu cihazda gereken sayı yok.
FPGA ve özel donanımın kendisi de eğlencenin bir parçasıydı.
Kaçak gazın tıslama sesini veya elektrik arkının korona deşarjını duymak için daha yüksek frekanslar işe yarıyor.
Orin’in içeride 6 I2S portu var; bu yüzden 16*6 = 96 mikrofona kadar mümkün görünüyor ve bu oldukça iyi bir sayı.
Ancak pratikte sanırım yalnızca 3 tanesi kart dışına çıkarılmış ve farklı geliştirme kartı konnektörlerinde bulunuyor [1].
Tasarımda sorun her zaman ayrıntılardadır; 96’dan fazlasına ihtiyacınız varsa FPGA’yı yapılandırmak daha kolay olabilir.
Not aldığım parçalar ICS-52000 $3.50 20kHz, ICS-41350 $1.05 40kHz, SPH0641LU4H-1 $1.45 80kHz+ idi.
[1] https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide...
I2S’in en iyi seçenek olmamasının yaklaşık iki nedeni var.
I2S, PDM’in 2 pini yerine 3 pin gerektiriyor.
Ancak verdiğiniz veri sayfasındaki gibi mikrofonları daisy-chain yapabiliyorsanız bu oldukça hoş; standart I2S olmasa bile bu itiraz ortadan kalkıyor.
PDM çok daha yüksek örnekleme hızlarına erişebildiğinden, geciktir-topla işleminde gecikmeyi seçmek için daha fazla esneklik sağlıyor.
Örneğin PDM saat sinyali 2MHz ise teorik olarak 0,5µs hassasiyetle geciktirebilirsiniz.
Gerçekte daha düşük hassasiyetle yapılır ama I2S saat sinyali genelde en fazla 192kHz civarındadır.
PDM mikrofonlar ayrıca daha ucuz.
YouTube’da akustik kamera diye ararsanız performansını gösteren epey etkileyici demolar var
Bir süredir takip ettiğim şirketlerden biri bu; FLIR gibi büyük oyuncular da bu alana giriyor gibi görünüyor: https://www.youtube.com/@gfaitechgmbh
İlginç ama ürkütücü bir kullanım örneği, kamusal alanları kaydedip daha sonra belirli kişiler arasındaki bir konuşmaya “yakınlaştırmak”
Koklear implant kullanan bir arkadaşımla konuşunca, uygun sinyal işleme eklenirse duymaya büyük ölçüde yardımcı olabileceğini düşündüm
Yeniden lisansüstü öğrencisi olup ultrasonik hoparlör dizileriyle birleştirerek tıbbi uygulamalar denemek isterdim
Özünde gerçek zamanlı geri bildirimi olan süper güçlü bir HIFU (yüksek yoğunluklu odaklanmış ultrason) gibi bir şey
https://en.wikipedia.org/wiki/Focused_ultrasound
Frekans çok daha yüksek; 40 kHz değil, 1–10 MHz civarını düşünmek gerekiyor ve sıradan elektronik devreler fiilen kullanılamıyor
Konuşmak istersen profildeki e-posta adresinden ulaşabilirsin
Bu teknolojinin iyi paketlenmiş bir biçimde birçok mobil cihaza girmesini isterdim
Asistanların, evrensel çevirmenlerin ve benzerlerinin önündeki engellerden birinin kötü ses kalitesi olduğunu düşünüyorum
Gürültüyü azaltıp yön algılayabilmek büyük fayda sağlama potansiyeline sahip
Örneğin yemek masası etrafındaki bir grup sohbetini gerçek zamanlı çevirmek istiyorum
İlk etapta telefonların ve kulaklıkların kendi mikrofonlarını birleştirip bu amaçla kullanabilmesini isterdim
Daha da ileri gidip yakındaki tüm telefonlar işbirliği yaparak yüksek kaliteli yönlü ses sağlayabilse nasıl olur diye düşünüyorum
Elbette gizlilik sorunlarının çözülebileceği varsayımıyla
Hayat değiştirebilir
Android’in Live Transcribe’ı şu anda çok iyi, ama hangi kelimenin hangi konuşmacıdan geldiğini ayırmaya çalışmıyor bile
Gürültülü bir odada birinin bize söylediklerini anlayabilmemiz için beynin muazzam bir işlem yaptığı ortaya çıkıyor
https://en.wikipedia.org/wiki/Cocktail_party_effect?wprov=sf...
Yaklaşık olarak toplamaya çalıştığınız en yüksek ses frekansının 10 katı düzeyinde, yani saniyenin on binlerde biri içinde olmalı
Ayrıca dizi mikrofon konumları düz bir çizgi, daire veya başka basit bir geometri değilse iyileştirilmiş sinyali çıkarmak için gereken kod, yani matematik, çok zorlaşır
Boeing, bu cihazın küresel bir sürümünü yapıp 787 prototipinde ses yalıtımı adaylarını bulmak için kullanmıştı
Uçak gibi gürültülü ortamlarda işitsel yanılsamalar nedeniyle sesin gerçek konumundan farklı bir yerden geliyormuş gibi algılanabildiği söyleniyor
Ses yalıtımı için belirli bir ağırlık bütçesi varsa 80/20 noktasını doğru tutturmak önemli hale gelir
Zynq 7010 ile oynamak istiyorsanız EBAZ4205 kartına bakmaya değer
AliExpress’te 20–30 avroya alınabiliyor ve eski bir Bitcoin madenciliği kontrolcüsüydü
Bazı kişiler tamamını tersine mühendislikle çözüp GitHub’a koymuş; GPIO’ya erişmek için adaptör kartı da var
Daha az karmaşık bir başlangıç için GoWin FPGA kullanan “Sipeed” kartları gibi Çin yapımı FPGA’lar da var
Gayet kullanılabilirler ve IDE’si de ücretsiz
Dün gece araştırırken tam da bu sayfaya geldim
Odaya mikrofonlar yerleştirip yalnızca belirli bir bölgenin sesini kaydetmenin yolunu bilen var mı merak ediyorum
Benim kullanım amacım, çevrim içi arkadaşlarımla TV izlerken kanepe tarafını kaydetmek ve arkadaşların sesleriyle yayın gürültüsünü sesten çıkarmak
Mikrofon dizisi yapıp beam steering kullanırsam mümkün olabilir gibi geliyor, ama GitHub’da gerçek zamanlı çalışan çok fazla kod örneği bulamadım
https://obsproject.com/
https://voicemeeter.com/
İstediğiniz şey mikrofon ya da beamforming teknolojisi değil; tüm görüntülü görüşme yazılımlarının kullandığı türden eko giderme
Yayın sesini ve arkadaş sesini giriş olarak verip her birine eko giderme uygulamanız yeterli
Bir nokta, yani kanepe ile her mikrofon arasındaki mesafeyi ölçer; sesin kanepeden mikrofona ulaşma süresi kadar sinyali zaman alanında geciktirip sonra toplarsınız
Temelde, farklı mesafelerde olsalar bile mikrofonların kanepe sinyalini aynı anda almış gibi hizalanmasını sağlamaya çalışırsınız
Bu yöntemin işe yaraması için mikrofon mesafeleri arasındaki farkın yeterince büyük olması gerekir