Apakah mungkin untuk melakukan penghapusan noise secara realtime dengan PulseAudio, sehingga output suara yang keluar lebih lancar?
Apakah mungkin untuk melakukan penghapusan noise secara realtime dengan PulseAudio, sehingga output suara yang keluar lebih lancar?
Jawaban:
module-echo-cancel
Saya mulai membaca banyak tentang PulseAudio dan opsi "tersembunyi" yang dimilikinya sehingga saya dapat menemukan yang mirip dengan pertanyaan ini. Yang saya temukan adalah modul peredam bising, yang merupakan salah satu yang secara dramatis menurunkan kebisingan statis pada mikrofon dan bahkan BANYAK kebisingan latar belakang, pada dasarnya memberi Anda manfaat hanya merekam suara Anda sendiri dengan kualitas yang sangat baik (Untuk rekaman audio sebagai contoh). Untuk melakukan ini ikuti langkah-langkah ini:
sudo nano /etc/pulse/default.pa
Tambahkan baris berikut di mana saja pada file, tetapi saya sarankan hampir di akhir di mana Anda akan menemukan komentar tentang hal-hal Pembatalan Echo (~ baris 140):
load-module module-echo-cancel
Muat ulang PulseAudio ( pulseaudio -k
) atau cukup nyalakan kembali komputer. Anda harus dapat memilih opsi Pembatalan Kebisingan baru dari Bagian Perangkat Input:
Anda dapat menemukan informasi lebih lanjut tentang itu di Halaman Modul Membatalkan Echo
Jika Anda ingin menetapkan sebagai default perangkat pembatalan gema cukup mengubah baris di atas menjadi:
load-module module-echo-cancel source_name=logitechsource
dan kemudian di bagian bawah file tambahkan
set-default-source logitechsource
Dalam hal ini saya menamai sumbernya logitechsource
, tetapi Anda dapat menamainya apa pun yang Anda inginkan dan cukup me-restart pulseaudio.
Terakhir, jika Anda tidak ingin nama yang sangat panjang pada Pengaturan Suara (Saat Anda ingin memilih perangkat input / output). Saran saya mengubah nama perangkat input seperti ini:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
Dan lagi, restart pulseaudio. Hasil akhirnya terlihat seperti ini:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
sesuai gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
Ini adalah pertanyaan lama, tetapi saya memiliki masalah yang sama dan setelah beberapa Googling (di mana saya kebanyakan menemukan orang yang setuju itu tidak mungkin) dan membaca beberapa halaman manual, saya sekarang telah mengembangkan solusi berdasarkan ide user2330377.
Pertama, Anda perlu membuat profil kebisingan untuk SoX. Gunakan saja program rekaman audio untuk merekam beberapa detik kebisingan, kemudian cd
masuk ke direktori tempat Anda menyimpan dan melakukannya sox noise.wav -n noiseprof noise.prof
.
Maka Anda perlu membuat perangkat loopback ALSA:
sudo modprobe snd_aloop
Ini diperlukan karena pulseaudio, tidak seperti Jack, tidak dapat langsung menghubungkan perangkat lunak audio bersama; karenanya kami akan menggunakan perangkat loopback sebagai proxy.
Sekarang Anda perlu memulai paman
dan menemukan nama-nama mikrofon Anda (atau perangkat rekaman lainnya) dan perangkat loopback yang baru saja kami buat. Setelah itu ditemukan, Anda dapat menjalankan perintah berikut untuk mulai merekam suara dari mikrofon Anda, menyalurkannya melalui SoX dan kemudian memutarnya di perangkat loopback:
pacat -r -d alsa_input.pci-0000_00_14.2.analog-stereo --latency=1msec|sox -b 16 -e signed -c 2 -r 44100 -t raw - -b 16 -e signed -c 2 -r 44100 -t raw - noisered noise.prof 0.2|pacat -p -d alsa_output.2.analog-stereo --latency=1msec
(Di mana Anda perlu mengganti nama perangkat yang benar untuk parameter -d - perangkat input untuk doa pacat pertama dan output perangkat loopback untuk yang kedua.)
Ini dia, hampir selesai! Sebagai langkah terakhir, mulailah merekam suara dengan aplikasi pilihan Anda, kemudian mulai pavucontrol
, ubah ke tab "Rekaman" dan atur perangkat audio yang digunakan untuk merekam (ditampilkan sebagai tombol abu-abu ke kanan) ke "Monitor Audio Loopback Alat". Anda sekarang harus memiliki rekaman yang jelas dan bebas noise!
Investigasi menunjukkan bahwa tidak ada cara yang dikenal untuk melakukan penyaringan pengurangan kebisingan waktu nyata dengan setiap sub sistem Linux. Beberapa situs web menunjuk ke perangkat keras yang dapat Anda beli yang seharusnya melakukan trik jauh lebih baik daripada melakukan filter perangkat lunak.
Atau jika ini untuk rekaman, Anda bisa melewati suara melalui Audacity dan menggunakan filter noise di sana.
module-echo-cancel
, yang memiliki beberapa implementasi, seperti webrtc | speex.
Berikut ini pada nada nada leas, menerapkan webrtc-aec di
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Ya Menggunakan pustaka Audio pengolahan webrtc.org untuk meningkatkan panggilan VoIP secara luar biasa dalam aplikasi yang mendukungnya dengan melakukan pembatalan gema akustik, kontrol penguatan analog, peredam bising, dan pemrosesan lainnya.
Berikut ini makalah yang bertanggal 2013 tentang masalah ini (penghapusan noise dengan pulseaudio bukan webrtc-aec secara khusus) http://lac.linuxaudio.org/2013/papers/37.pdf
"Kami telah mempresentasikan hasil pertama dari solusi pengurangan kebisingan / gema multi-channel yang dibangun di atas PulseAudio dan memotivasi keputusan desain. Pekerjaan ini telah menghasilkan sejumlah perbaikan dalam kerangka pembatalan gema PulseAudio dan pemrosesan sinyal, yang telah berkontribusi selama siklus pengembangan versi 3.0 / 4.0 dan harus memfasilitasi solusi audio Linux tertanam di masa depan. Pekerjaan lebih lanjut termasuk kode pengoptimalan untuk pencampuran aliran audio, metode resampling yang lebih efisien, dan penerapan MEA yang efisien dalam pipa pemrosesan multi-channel. "
Tidak ada informasi pada halaman dokumentasi modul tentang pembatalan kebisingan. Hanya ada algoritma AEC (Acoustic Echo Cancelled) di dalam module-echo-cancel, yang memiliki beberapa implementasi, seperti webrtc | speex.
Karena itu Anda harus membeli mikrofon headset | dengan fitur peredam bising terintegrasi sebanyak mungkin.
Ketika saya menguji rekaman suara di ubuntu saya menemukan beberapa kualitas tertentu:
Skype, Telegram menggunakan input mentah dari perangkat default (dalam kasus saya jack depan-in-mic | backward-mic). Jika Anda perlu membatalkan suara dalam aplikasi ini, Anda harus membeli headset | mikrofon hanya dengan fitur pembatalan kebisingan terintegrasi
Jika Anda perlu menggunakan panggilan suara di browser, maka Anda harus ingat bahwa browser memiliki implementasi algoritma pemrosesan suara sendiri, misalnya WebRTC.
Juga aplikasi web (situs seperti talky, hangout, tampil.in, dll) dapat memiliki implementasi algoritma pemrosesan suara sendiri, meskipun faktanya mereka dapat didasarkan pada analisis hangout webrtc