- Triforce adalah beamformer adaptif berbasis Rust untuk memanfaatkan susunan mikrofon pada laptop Apple Silicon di luar macOS
- Dukungan terbatas pada MacBook Air/Pro 13" M1/M2, MacBook Air 15" M2, serta MacBook Pro 14"/16" M1/M2 Pro·Max
- Susunan mikrofon segitiga atau linear pada perangkat ini terlalu sensitif dan omnidirectional tanpa beamforming, sehingga sulit memisahkan sinyal yang diinginkan
- Dependensi diminimalkan agar selain crate yang tercantum di Cargo.lock, hanya membutuhkan LV2
- Implementasi saat ini sulit diharapkan melampaui implementasi Apple, dan tanpa SIMD/NEON tidak mendukung dekomposisi wideband maupun output stereo
Beamformer untuk susunan mikrofon Apple Silicon
- Triforce mengimplementasikan beamformer adaptif Minimum Variance Distortionless Response untuk susunan mikrofon pada laptop Apple Silicon
- Perangkat yang didukung adalah sebagai berikut
- MacBook Pro 13" (M1/M2)
- MacBook Air 13" (M1/M2)
- MacBook Pro 14" (M1 Pro/Max, M2 Pro/Max)
- MacBook Pro 16" (M1 Pro/Max, M2 Pro/Max)
- MacBook Air 15" (M2)
- Susunan mikrofon pada laptop target disusun dalam bentuk segitiga atau garis lurus
- Jika digunakan tanpa beamforming, susunan ini terlalu sensitif dan bekerja secara omnidirectional sehingga kurang berguna; untuk memanfaatkannya di luar macOS diperlukan beamformer
- Selain crate yang ditentukan di Cargo.lock, dependensi tambahan yang dibutuhkan adalah LV2
Status implementasi dan keterbatasan yang diketahui
- Karena sulit menemukan literatur yang mudah diakses tentang DSP dan beamforming adaptif wideband, implementasi saat ini merupakan upaya yang didasarkan pada matematika rekayasa tingkat tahun pertama sarjana serta prinsip-prinsip yang diperoleh dari berbagai halaman web dan PDF
- Sulit mengharapkan performanya lebih baik daripada implementasi Apple, dan patch perbaikan sangat diterima
- Keterbatasan yang diketahui adalah sebagai berikut
- nalgebra tidak melakukan optimasi SIMD eksplisit dan bergantung pada auto-vectorization LLVM, sehingga performa dan efisiensi rutin matematika matriks kurang baik
- Tanpa dukungan SIMD/NEON, performanya terlalu lambat untuk plugin audio real-time sehingga dekomposisi wideband tidak dilakukan
- Output hanya mendukung mono, dan pemrosesan matriks tambahan untuk output stereo palsu memiliki beban komputasi yang terlalu besar
- Menurut statistik crates.io, total unduhan mencapai 4.247 kali, dan ada 7 versi yang telah dipublikasikan
1 komentar
Komentar Hacker News
Ada tulisan blog yang berisi penjelasan latar belakang di sini: https://asahilinux.org/2025/03/progress-report-6-14/#is-this...
Toshiba Tablet PC convertible yang saya pakai lebih dari 20 tahun lalu punya array beamforming mikrofon, dan juga dilengkapi perangkat lunak untuk menentukan dari arah mana suara akan direkam
Kegunaan utamanya untuk merekam kuliah, dan bisa diatur agar beam diarahkan ke belakang laptop, ke arah dosen, sehingga hanya suara dari sana yang direkam
Ide yang luar biasa, tapi sejak itu saya belum pernah melihatnya lagi
Ini juga ide yang hebat, dan produk serupa masih ada: https://electronics.sony.com/imaging/imaging-accessories/all...
Array mikrofon ruang rapat mendeteksi siapa yang sedang berbicara lalu memisahkan audio orang tersebut
Konferensi video di ruang rapat besar sejak lama sudah memilih mikrofon yang paling keras saat itu agar noise dari banyak mikrofon tidak tercampur, dan beamforming membuatnya jauh lebih baik
Jika mikrofonnya ada di bidang layar, bukan di badan perangkat, sepertinya tidak akan bisa membedakan “depan” dan “tepat di belakang”
Bisa punya banyak kegunaan bagus, seperti mobil otonom yang “melihat” pejalan kaki di balik semak, mendeteksi kendaraan darurat yang mendekat lebih awal, dan mendengar sepeda sebelum terlihat
Saya selalu penasaran bagaimana mereka mengimplementasikannya
Tesis master yang pada akhirnya tidak pernah saya selesaikan membahas topik yang mirip
Saya mencoba melokalisasi dan memisahkan pembicara dalam estimasi posisi 3D dengan memanfaatkan fakta bahwa hampir semua smartphone punya setidaknya 2 mikrofon
Pelajaran yang saya dapat seperti ini: laju sampling antarperangkat sedikit meleset, kira-kira sekitar ±1 sampel per detik, jadi tidak besar tetapi tetap harus diperhitungkan
Karakteristik spektral mikrofon konsumen sangat beragam, jadi bahkan dua ponsel model yang sama yang baru dikeluarkan dari kotaknya pun punya perbedaan yang bukan hanya terukur tetapi juga terdengar
Suara memantul dari segala macam permukaan, terutama dinding beton
Dari tempat yang mudah diakses, interior mobil adalah yang paling mendekati ruang anekoik
Transformasi Fourier dari Gaussian adalah Gaussian, jadi ini sangat berguna saat memperkirakan frekuensi sinyal harmonik seperti suara, ketika panjang gelombangnya sedikit lebih pendek daripada setengah panjang jendela
Tidak ada yang memantulkan selain tanah, dan mungkin mereka juga meletakkan busa di bawah eksperimennya
Tentu itu tidak menghilangkan noise lingkungan, tetapi katanya cukup efektif untuk mengurangi pantulan dari peralatan mereka sendiri
Ini membuat saya sadar betapa banyak pekerjaan yang dibutuhkan untuk menjalankan Linux di Apple Silicon Mac, bahkan untuk hal-hal yang tampaknya sepele
Kata “sepele” di sini saya pakai dengan penuh hormat. Saya hampir tidak pernah memakai mikrofon bawaan kecuali kalau lupa membawa headset
Mengutip laporan progres(https://asahilinux.org/2025/03/progress-report-6-14/#is-this...): “Tetap saja ini Apple. Tidak ada yang sederhana”
Headphone dengan mikrofon wraparound terpisah mungkin bisa lebih baik, tetapi headphone sehari-hari punya keterbatasan karena posisi mikrofonnya
Mikrofon MBP cukup bagus, bahkan dengan noise cancellation yang baik, sehingga lebih layak dipilih daripada kebanyakan boom mic headset
Keunggulannya juga lebih sedikit menangkap suara mulut yang tidak perlu seperti suara mengunyah permen karet atau minum kopi
Rasanya 99% orang di rapat memakai kombinasi headphone biasa dan mikrofon MBP
Masalah utama konfigurasi ini adalah Anda tidak bisa mendengar suara sendiri lewat headphone, dan kalau memakai headphone noise-cancelling kadang itu bisa cukup mengganggu
Hanya saja, Apple belakangan juga mulai keluar dari jalur yang mereka rapikan sendiri
Intinya, semua yang dibuat Apple itu terintegrasi secara vertikal
Untuk menyediakan fitur seperti AirDrop atau Continuity, mereka mengimplementasikannya di seluruh stack
Kalau memilih jalur DIY, yaitu pendekatan yang pada dasarnya diambil Asahi, Anda juga harus membuat sendiri bagian-bagian software yang hilang
Kelebihannya, manfaat pekerjaan itu bisa dinikmati seluruh ekosistem. Contohnya DSP baru di PipeWire
Hardware PC umumnya kurang bagus, dan tanpa komponen tambahan seperti ini hardware Apple juga sama saja
Tetapi “paket lengkap” mereka sudah menetapkan standar yang cukup tinggi, dan saya ingin melihat ekosistem open source bebas bisa mencapai standar itu
Beberapa Retina MacBook Pro awal hanya punya array 2 mikrofon, tetapi kebanyakan punya array 3 mikrofon penuh
Kalau tidak, sistem akan turun ke mode codec bitrate rendah yang sangat kuno, dan audio yang saya dengar pun jadi buruk sekali
Jadi kalau memungkinkan saya selalu memakai mikrofon Mac
Bahkan pada perangkat keras laptop murah, dan tentu saja pada perangkat keras kelas atas seperti MBP, hasil yang sangat bagus bisa diperoleh dengan teknik DSP berbasis perangkat lunak
Saya suka bahwa sebagian besar pekerjaan audio Asahi dapat diterapkan hampir apa adanya bukan hanya pada Mac tetapi juga pada laptop biasa
Saya sudah menggunakan plugin sintesis harmonik bass rendah Bankstown dan convolution equalizer yang dikembangkan untuk Asahi pada laptop HP murah, dan hasilnya sangat mengesankan
Ini juga memanfaatkan fitur pemuatan otomatis rantai plugin PipeWire yang dikembangkan untuk Asahi
Beamformer ini juga tampaknya akan punya cukup banyak kegunaan di luar ekosistem Asahi
Terkait optimisasi SIMD, sepertinya akan bagus jika penulis melihat faer
Secara pribadi pengalaman saya dengan pustaka dasarnya, pulp, tidak terlalu baik karena mencoba menangani pekerjaan di luar cakupan aljabar linear, tetapi jika tujuannya terutama mempercepat operasi aljabar linear, sepertinya ini cocok
Saya sedang menyiapkan tulisan blog tentang Rust SIMD dan podcast terkait, dan saya akan membahas hal ini di sana
[1]: https://docs.rs/faer/latest/faer/
Repositori GitHub: https://github.com/chadmed/triforce
Disebutkan “susunan mikrofon pada laptop Apple Silicon berikut” lalu dicantumkan MacBook Pro 13" M1/M2, MacBook Air 13" M1/M2, MacBook Pro 14" M1 Pro/Max·M2 Pro/Max, MacBook Pro 16" M1 Pro/Max·M2 Pro/Max, dan MacBook Air 15" M2; saya penasaran apakah ini berarti M2/M3 tidak memiliki susunan mikrofon serupa atau hanya belum diuji
Saya juga penasaran apakah ini hanya didukung di Linux
Saya tidak tahu apakah ini juga memungkinkan di macOS, dan apakah Apple menyediakan stream khusus untuk masing-masing mikrofon
macOS melakukan perhitungan beamforming yang sangat mirip secara internal, dan hanya menampilkannya ke pengguna sebagai satu mikrofon gabungan
M3 belum didukung oleh Asahi Linux, jadi fakta bahwa M3 tidak ada di daftar adalah persoalan terpisah dari apakah M3 memiliki mikrofon seperti ini
macOS memiliki perangkat lunaknya sendiri jauh di dalam sistem untuk menangani ini, dan ke aplikasi hanya diekspos sebagai mikrofon biasa
Ada pembahasan yang lebih umum di laporan kemajuan Asahi Linux terbaru
“Sayangnya, mikrofon PDM sangat omnidireksional dan sangat sensitif. Tanpa beamforming dalam bentuk apa pun, mikrofon ini tidak akan bisa dipakai dengan baik”
https://asahilinux.org/2025/03/progress-report-6-14/
Selain itu, terungkap bahwa sebagian pekerjaan yang sebelumnya dilakukan untuk keluaran speaker juga dipakai ulang untuk input mikrofon
“Berkat fondasi yang telah kami siapkan di PipeWire dan WirePlumber untuk dukungan speaker, menghubungkan rantai DSP termasuk Triforce ke mikrofon ternyata benar-benar sederhana. Kami hanya perlu memperbarui file konfigurasi dan membiarkan WirePlumber menangani sisanya!”
Menarik sekali jika penulis paket ini mau menjelaskan pendapatnya tentang kalimat “seperti speaker, Apple juga berusaha terlalu canggih di sini”
Saya khususnya penasaran apa pendapatnya tentang implementasi speaker
Apa yang terlalu rumit? Perangkat kerasnya, atau perangkat lunaknya?
Sebagai pengguna MBP dan penghobi audio, saya sangat terkesan dengan implementasi speaker, terutama pada model MBP yang lebih besar
Namun saya hanya penghobi, dan selain tweeter serta konfigurasi woofer ganda berlawanan, saya tidak tahu banyak
Tampaknya Apple juga memakai trik seperti equalizer adaptif yang digunakan perancang speaker Bluetooth “bagus” untuk mendapatkan performa yang layak dan ekstensi bass dari speaker kecil
Salah satu masalahnya adalah dibutuhkan DSP yang canggih untuk membatasi penggunaan daya agar tidak terlalu panas
Tanpa itu, volume yang bisa dihasilkan dalam batas aman akan sangat terbatas
Jika ingin tahu lebih jauh, mungkin ini ikhtisar terbaik: https://github.com/AsahiLinux/asahi-audio
Ini sudah benar selama beberapa generasi
Saat saya memakai MBP 2014, beberapa teman yang menonton film saat bepergian bersama saya terkejut dengan suaranya
M4 MBP juga sama, kualitas speakernya benar-benar sampai pada tingkat yang sebenarnya lebih dari yang dibutuhkan
Sekarang ini, setidaknya pada perangkat keras premium, “audio spasial” pada speaker dan mikrofon beamforming mulai terasa seperti standar
Audio yang tumpul, berisik, sempit, dan tidak seimbang sudah tidak bisa diterima lagi