web-dev-qa-db-ja.com

マイク-静的バックグラウンドノイズ抑制

サウンドカードはRealtek ALC 892です。Windows7では公式のRealtekドライバーを使用し、LinuxではPulseAudio(Ubuntu 13.10)を使用します。 WindowsとLinuxの両方で、マイクブースト+ 30dbを有効にすると(マイクが静かなので必要です)、非常に迷惑で大きなバックグラウンドノイズが発生します(両方のシステムのAudacityでバックグラウンドノイズも確認しました)。

ただし、Windows Realtekドライバーには動作するノイズ抑制オプションがあります(有効にすると、Audacityはバックグラウンドノイズを表示せず、耳にもバックグラウンドノイズがないことを確認します)。

Image showing noise suppression option

私の質問は、ALSA/PulseAudioでバックグラウンドノイズ抑制を有効にするにはどうすればよいですか?インストールできるモジュールはありますか、それとも設定ファイルで有効にできる設定がありますか?

私はそれに対する解決策を見つけることができませんし、これは私がLinuxに完全に切り替えるのを妨げる唯一のことです-私は多くのマイクを使用して話し、WindowsではRealtekソフトウェアはバックグラウンドノイズを完全に削除し、PulseAudioはそれを削除しませんLinuxで録音された音声が非常に悪いことを意味します。

私はより良いサウンドカードとマイクを購入できることを知っていますが、私が言ったように、Windows Realtekドライバーはソフトウェアレベルのノイズをリアルタイムで削除します(つまり、TeamSpeak3/Steam /何でもvoipプログラムで話しているときにノイズがありません) Linuxでも同様です。

これはUnix StackExchangeにもクロスポストされます

14
user1873947

私はlubuntuを使用し、pulseaudioとpavucontrolをすでにインストールしています。端末からskypeを起動して、マイクノイズの問題を解決しました:Pulse_PROP="filter.want=echo-cancel" skype

15
Evgeniy

少し遅れましたが、最近、ラップトップの内蔵マイクで同様の静的なバックグラウンドノイズの問題が発生しました(同じRealtekチップセットと思いますが、すべてのサウンドカードで解決するはずです)。実際に見てみると、webrtc echo-cancelプラグインを使用してpulseaudioでリアルタイムにノイズを減らす方法があります(Ubuntu/Mintのデフォルトのspeex echo-cancelはうまくいきませんでした)。 PulseAudio Gentoo wiki でそれについて言及しましたが、Ubuntuで有効にする方法を理解するのに少し時間がかかりました。私にとっては大きな違いがあり、Skypeのバックグラウンドノイズはほとんどなくなりました。

幸いなことに、Ubuntuはこれに必要なwebrtcライブラリを既にパッケージ化しています。プラグインを有効にするために最小限の変更を適用して公式ソースからコンパイルし、更新されたパッケージをインストールできます。

ソフトウェアソースでソースコードリポジトリを有効にしてから、次の操作を行います。

Sudo apt install build-essential

# do this if like me you have libjack-jackd2-0 installed and not libjack0
Sudo apt install libjack-jackd2-dev

# for jack dependency problem accept the second solution of not installing libjack-dev, libjack0 since we already have installed required dev package above
Sudo apt build-dep pulseaudio

# also install webrtc
Sudo apt install libwebrtc-audio-processing-dev

# get the Pulse source package
apt source pulseaudio
cd pulseaudio-4.0

この後、debian/rulesファイルを編集し、〜行57に移動して--enable-webrtc-aecに「DEB_CONFIGURE_EXTRA_FLAGS」を追加します(たとえば、--disable-hal-compatオプションの後)

次にdebian/pulseaudio.installファイルを編集して追加します:usr/lib/Pulse-*/modules/libwebrtc-util.so

Pulse PulseaAudio System-Wide Equalizer も必要な場合は、debian/pulseaudio-utils.installを編集して/usr/bin/qpaeqを追加します。

次に、パッケージをビルドして新しいdebsを取得します:dpkg-buildpackage -d -us -uc -nc

生成されたdebs間にpulseaudio、pulseaudio-utilsおよびlibpulseパッケージをインストールする必要があります(例:Trusty 64ビットリリース、またはMint 17 64ビットの場合:Sudo dpkg -i pulseaudio_4.0-0ubuntu11_AMD64.deb pulseaudio-utils_4.0-0ubuntu11_AMD64.deb libpulse0_4.0-0ubuntu11_AMD64.deb libpulsedsp_4.0-0ubuntu11_AMD64.deb libpulse-mainloop-glib0_4.0-0ubuntu11_AMD64.deb

最後に/etc/Pulse/default.paでwebrtcプラグインを有効にします:Sudo gedit /etc/Pulse/default.pa

ファイルの最後に次を追加します。

### Load echo cancellation module
load-module module-echo-cancel source_name=echosource aec_method=webrtc
set-default-source echosource

上記のwebupd8リンクで説明されているように、必要に応じてイコライザーを有効にすることもできます。

この後、pulseaudio(pulseaudio -k && pulseaudio --start)、logoff + relogin、またはリブートを再起動すると、pulseaudioでノイズ/エコーキャンセルプラグインが有効になります。どういうわけか、完全な再起動後には正常に機能しますが、再ログインしただけではあまり機能しません。

14
sumwale