PulseAudio ile gerçek zamanlı gürültü giderme?


66

PulseAudio ile gerçek zamanlı parazit giderme yapmak mümkün mü, bu yüzden çıkan ses daha yumuşak mı?


Yoğun olmasına rağmen, birisinin bunun için bir filtre yazmasını gerektirse de, muhtemelen mümkündür.
RolandiXor

2
@Vadi - Hala Ubuntu veya başka bir PulseAudio tabanlı Distro kullanıyorsanız, size yardımcı olabilecek bir cevap ekledim. Umarım senin için işe yarar dostum.
Luis Alvarado,

Bu mesaj benzer bir şey yapıyor gibi görünüyor
Ahmed

Yanıtlar:


75

Pulseaudio modülü module-echo-cancel

PulseAudio ve "gizli" seçenekleri hakkında çok fazla okumaya başladım, böylece bu soruya benzer bir tane bulabildim. Bulduğum bir tanesi, mikrofondaki statik gürültüyü ve hatta arka plan gürültüsünün LOT'unu bile önemli ölçüde azaltan, temelde sadece mükemmel ses kalitesi ile kendi sesinizi kaydetme avantajı veren gürültü önleme modülü idi (ses kaydı için). Örneğin). Bunu yapmak için şu adımları izleyin:

  1. sudo nano /etc/pulse/default.pa

  2. Dosyanın herhangi bir yerine aşağıdaki satırı ekleyin, ancak neredeyse sonunda Yankı İptali ile ilgili bir yorum bulacağınız yeri (~ satır 140) öneririm:

    load-module module-echo-cancel
    
  3. PulseAudio ( pulseaudio -k) ' yu yeniden yükleyin veya bilgisayarı yeniden başlatın. Giriş Cihazı Bölümünden yeni Gürültü Önleme seçeneğini belirleyebilmelisiniz:

    ekran görüntüsü

Bununla ilgili daha fazla bilgiyi Yankı İptal Modülü Sayfasında bulabilirsiniz.

Girişi varsayılan olarak ayarla

Varsayılan olarak ayarlamak istiyorsanız , echo cancel device sadece yukarıdaki satırı çevirin:

load-module module-echo-cancel source_name=logitechsource

ve sonra dosyanın altındaki eklemek

set-default-source logitechsource

Bu durumda kaynağın ismini verdim logitechsource, ama ne istersen onu isimlendirebilir ve sadece pulseaudio'yu yeniden başlatabilirsin.

Cihazı yeniden adlandır

Son olarak, Ses Ayarlarında süper uzun bir isim istemiyorsanız (Bir giriş / çıkış cihazı seçmek istediğinizde). Önerim, giriş cihazını şu şekilde yeniden adlandırıyor:

load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD

Ve yine, pulseaudio'yu yeniden başlatıyorum. Sonuç şöyle görünür:

ekran görüntüsü


6
Yapması kolay ve işleri bozmuyor gibi görünüyor - teşekkürler!
Vadim Peretokin

2
Mükemmel bir çözüm, benim için kutunun dışında çalıştı, teşekkür ederim
rancho

1
Bu, dizüstü bilgisayarımdaki fan gürültüsünün çoğunu kesti ve kayıtlarım çok daha iyi geliyor!
PJ Brunet

1
Kutsal moly - eBay'den aldığım berbat 5 dolarlık bir mikrofondan bile inanılmaz sonuçlar alıyorum. Stüdyo kalitesi değil ama şimdi VOIP aramaları için gayet iyi.
Raymond Morgan,

2
Yankı modülünün ses düzeyi kaydırıcısını otomatik olarak ayarlamasını önlemek istiyorsanız, gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
joelostblom

16

Bu eski bir soru, ama aynı problemi yaşadım ve bir miktar Googling (çoğunlukla bunun mümkün olmadığını düşündüğüm insanları buldum) ve bazı man sayfalarını okuduktan sonra, şu anda kullanıcı2330377'nin fikrine dayanan bir çözüm geliştirdim.

İlk önce SoX için bir gürültü profili oluşturmanız gerekir. Birkaç saniye gürültü yapmak için herhangi bir ses kayıt programını kullanın, ardından cdkaydettiğiniz dizine kaydedin sox noise.wav -n noiseprof noise.prof.

O zaman bir ALSA geridöngü aygıtı oluşturmanız gerekir:

sudo modprobe snd_aloop

Bu gereklidir, çünkü pulseaudio, Jack'in aksine, doğrudan ses yazılımını birbirine bağlayamaz; Bu yüzden geridöngü aygıtını bir vekil olarak kullanacağız.

Şimdi pamanhem mikrofonunuzun (veya başka bir kayıt cihazının) hem de yeni oluşturduğumuz geridöngü cihazının adlarını başlatmanız ve bulmanız gerekiyor . Bunlar bulunduğunda, mikrofonunuzdan ses kaydetmeye, SoX'a aktarmaya ve sonra geri döngü cihazında çalmaya başlamak için aşağıdaki komutu uygulayabilirsiniz:

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

(-D parametreleri için doğru aygıt adlarını değiştirmeniz gereken yer - ilk pacat çağrısı için giriş aygıtı ve ikinci için geridöngü aygıtı çıkışı.)

İşte, neredeyse bitti! Son adım olarak, seçtiğiniz uygulamayı kullanarak ses kaydetmeye başlayın, ardından başlayın pavucontrol, "Kayıt" sekmesine geçin ve kayıt için kullanılan ses cihazını ayarlayın (sağdaki gri düğme olarak görüntülenir) "Geri Döngü Ses Monitörü" Cihaz". Şimdi net ve gürültüsüz bir kayıt yapmalısınız!



2

Araştırma, herhangi bir Linux alt sistemiyle gerçek zamanlı gürültü azaltma filtrelemesi yapmanın bilinen bir yolu olmadığını göstermektedir. Bazı web siteleri, satın alabileceğiniz donanıma işaret eder; bu da bir yazılım filtresi yapmaktan çok daha iyi bir şeydir.

Alternatif olarak, eğer bu bir kayıt için ise, sesi Audacity'den geçirebilir ve oradaki gürültü filtresini kullanabilirsiniz.


Yazık, neden olmasın diye merak ediyorum. Araştırdığınız için teşekkürler.
Vadim Peretokin

Elbette! Modül dokümantasyon sayfasında gürültü iptali hakkında bir bilgi bulunmamaktadır. Sadece AEC (Akustik Eko İptal) algoritması içeride yoktur module-echo-cancel| WebRTC'de gibi çeşitli uygulamaları olan olan speex.
vskubriev

1

İşte, ses tonunda, webrtc-aec'i

http://wiki.gentoo.org/wiki/PulseAudio

webrtc-aec Evet VoIP çağrılarını geliştirmek için AudioProcessing kütüphanesini kullanır; akustik eko iptali, analog kazanç kontrolü, gürültü azaltma ve diğer işlemler gerçekleştirerek onu destekleyen uygulamalarda VoIP çağrılarını büyük ölçüde kullanır.

İşte konuyla ilgili 2013 tarihli bir makale (özellikle pulseaudio ile webrtc-aec ile gürültü giderilmesi) http://lac.linuxaudio.org/2013/papers/37.pdf

“PulseAudio üzerine inşa edilmiş çok kanallı bir gürültü / yankı azaltma çözümünün ilk sonuçlarını sunduk ve tasarım kararlarını motive ettik. Bu çalışma PulseAudio yankı iptali ve sinyal işleme çerçevesindeki bazı iyileştirmelerle sonuçlandı. sürüm 3.0 / 4.0 geliştirme döngüsü boyunca katkıda bulundu ve gelecekteki gömülü Linux ses çözümlerini kolaylaştırmalı. Daha fazla çalışma, ses akışı karıştırma kodunu optimize etmeyi, daha verimli yeniden örnekleme yöntemlerini ve çok kanallı işleme hattında etkin bir AEC'nin uygulanmasını içerir. "


Hızlıca aklımda olan şey, bir gürültü profili almak ve sox kullanarak gerçek zamanlı gürültü giderme yapmak ve ardından nabız halinde bir giriş akışı olarak kullanabileceğim ses çıkışını oynatmaktı. Darbenin giriş ve çıkış akışlarını bu şekilde oluşturabildiğini ve yönlendirebildiğine inanıyorum. Bu, oynatma akışının başka bir uygulamaya giriş akışı olarak yönlendirilebildiği ve oynatma akışının her cihaz için değil uygulama başına olduğu için cihazın donanımına yönlendirilmesi gerekmez.
user2330377

Pulseaudio cihazları listelemek için pacmd kullanarak, onlardan kayıt yapmak ve oynatmak için pacat kullanmaya ve akışta gerçek zamanlı efektler yapmak için sox kullanıyorum.
user2330377

Bunun için senaryoları yayınlamak ister misiniz?
Vadim Peretokin

0

Modül dokümantasyon sayfasında gürültü iptali hakkında bir bilgi bulunmamaktadır. Webrtc | gibi bazı uygulamaları olan modül-echo-cancel modülünün içinde yalnızca AEC (Acoustic Echo Cancellation) algoritması var. speex.

Bu nedenle, mümkün olduğunca entegre gürültü önleme özelliğine sahip kulaklık | mikrofon satın almalısınız.

Ubuntu'da ses kaydını test ederken bazı özel özellikler buldum:

  • Skype, Telegram varsayılan cihazdan gelen ham girdiyi kullanır (benim açımdan mic-in | backward-mic jaklar). Bu uygulamalarda bir gürültüyü iptal etmeniz gerekirse, yalnızca entegre gürültü önleme özelliğine sahip kulaklık | mikrofon satın almalısınız.

  • Tarayıcıda sesli çağrıları kullanmanız gerekiyorsa, tarayıcıların kendi ses işleme algoritmaları uygulamalarına sahip olduğunu, örneğin WebRTC'yi aklınızda tutmalısınız.

  • Ayrıca web uygulamaları (talky, hangouts, visible.in, etc gibi siteler), webrtc hangout analizine dayanabilmelerine rağmen, kendi ses işleme algoritmaları uygulamalarına sahip olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.