Có thể thực hiện loại bỏ tiếng ồn trong thời gian thực với PulseAudio, vì vậy âm thanh phát ra phát ra mượt mà hơn?
Có thể thực hiện loại bỏ tiếng ồn trong thời gian thực với PulseAudio, vì vậy âm thanh phát ra phát ra mượt mà hơn?
Câu trả lời:
module-echo-cancel
Tôi bắt đầu đọc rất nhiều về PulseAudio và các tùy chọn "ẩn" mà nó có để tôi có thể tìm thấy một câu hỏi tương tự với câu hỏi này. Mô-đun tôi tìm thấy là mô-đun khử tiếng ồn, là mô-đun giúp giảm đáng kể bất kỳ tiếng ồn tĩnh nào trên micrô và thậm chí RẤT NHIỀU tiếng ồn nền, về cơ bản mang lại cho bạn lợi ích chỉ ghi âm giọng nói của chính bạn với chất lượng tuyệt vời (Để ghi âm ví dụ). Để làm điều này theo các bước sau:
sudo nano /etc/pulse/default.pa
Thêm dòng sau vào bất cứ nơi nào trên tệp, nhưng tôi khuyên bạn gần như ở cuối nơi bạn sẽ tìm thấy một nhận xét về công cụ Hủy Echo (~ dòng 140):
load-module module-echo-cancel
Tải lại PulseAudio ( pulseaudio -k
) hoặc đơn giản là khởi động lại máy tính. Bạn sẽ có thể chọn tùy chọn Khử tiếng ồn mới từ Phần Thiết bị đầu vào:
Bạn có thể tìm thêm thông tin về nó trên Trang Mô-đun Hủy Echo
Nếu bạn muốn đặt làm mặc định , thiết bị hủy tiếng vang chỉ cần chuyển dòng trên thành:
load-module module-echo-cancel source_name=logitechsource
và sau đó ở dưới cùng của tập tin thêm
set-default-source logitechsource
Trong trường hợp này tôi đã đặt tên nguồn logitechsource
, nhưng bạn có thể đặt tên cho bất cứ thứ gì bạn muốn và chỉ cần khởi động lại pulseaudio.
Cuối cùng, nếu bạn không muốn một tên siêu dài trên Cài đặt âm thanh (Khi bạn muốn chọn một thiết bị đầu vào / đầu ra). Đề nghị của tôi là đổi tên thiết bị đầu vào như thế này:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
Và một lần nữa, khởi động lại pulseaudio. Kết quả cuối cùng trông như thế này:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
theo gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/224
Đây là một câu hỏi cũ, nhưng tôi đã có cùng một vấn đề và sau khi một số Googling (nơi tôi chủ yếu tìm thấy những người đồng ý là không thể) và đọc một số trang nam, tôi đã phát triển một giải pháp dựa trên ý tưởng của người dùng2330377.
Đầu tiên bạn cần tạo một hồ sơ tiếng ồn cho SoX. Chỉ cần sử dụng bất kỳ chương trình ghi âm nào để ghi lại một vài giây tiếng ồn, sau đó cd
vào thư mục bạn đã lưu và thực hiện sox noise.wav -n noiseprof noise.prof
.
Sau đó, bạn cần tạo một thiết bị loopback ALSA:
sudo modprobe snd_aloop
Điều này là bắt buộc vì pulseaudio, không giống như Jack, không thể kết nối trực tiếp phần mềm âm thanh với nhau; do đó chúng tôi sẽ sử dụng thiết bị loopback làm proxy.
Bây giờ bạn cần bắt đầu paman
và tìm tên của cả micrô của bạn (hoặc thiết bị ghi âm khác) và của thiết bị loopback mà chúng tôi vừa tạo. Khi chúng được tìm thấy, bạn có thể thực hiện lệnh sau để bắt đầu ghi âm từ micrô của mình, dẫn nó qua SoX và sau đó phát trên thiết bị 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
(Trường hợp bạn cần thay thế tên thiết bị chính xác cho các tham số -d - thiết bị đầu vào cho lệnh gọi pacat đầu tiên và đầu ra thiết bị loopback cho lần thứ hai.)
Có bạn đi, gần xong rồi! Bước cuối cùng, bắt đầu ghi âm với ứng dụng bạn chọn, sau đó khởi động pavucontrol
, đổi sang tab "Ghi âm" và đặt thiết bị âm thanh được sử dụng để ghi (hiển thị dưới dạng nút màu xám ở bên phải) thành "Monitor of Loopback Audio Thiết bị ". Bây giờ bạn nên có một bản ghi rõ ràng và không có tiếng ồn!
Điều tra cho thấy rằng không có cách nào thực hiện lọc giảm nhiễu thời gian thực với bất kỳ hệ thống phụ Linux nào. Một số trang web chỉ đến phần cứng mà bạn có thể mua nên thực hiện thủ thuật tốt hơn nhiều so với thực hiện bộ lọc phần mềm.
Ngoài ra, nếu đây là để ghi âm, bạn có thể truyền âm thanh qua Audacity và sử dụng bộ lọc tiếng ồn ở đó.
module-echo-cancel
Cancelling ) bên trong , có một số triển khai, như webrtc | speex.
Đây là cách dễ dàng, triển khai webrtc-aec trong
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec Có Sử dụng thư viện AudioProcessing của webrtc.org để tăng cường các cuộc gọi VoIP trong các ứng dụng hỗ trợ nó bằng cách thực hiện khử tiếng vang âm thanh, kiểm soát khuếch đại analog, khử nhiễu và xử lý khác.
Đây là một bài báo ngày 2013 về chủ đề này (loại bỏ tiếng ồn bằng pulseaudio không phải là webrtc-aec cụ thể) http://lac.linuxaudio.org/2013/ con / 37.pdf
"Chúng tôi đã trình bày kết quả đầu tiên của giải pháp giảm tiếng ồn / tiếng vang đa kênh được xây dựng trên PulseAudio và thúc đẩy các quyết định thiết kế. Công việc đã dẫn đến một số cải tiến trong khung xử lý tín hiệu và khử tiếng vang PulseAudio, đã được đã đóng góp trong chu kỳ phát triển phiên bản 3.0 / 4.0 và sẽ tạo điều kiện cho các giải pháp âm thanh Linux nhúng trong tương lai. Công việc tiếp theo bao gồm tối ưu hóa mã để trộn luồng âm thanh, phương pháp lấy mẫu sinh thái hơn và triển khai AEC hiệu quả trong đường ống xử lý đa kênh. "
Không có bất kỳ thông tin nào trên trang tài liệu mô-đun về loại bỏ tiếng ồn. Chỉ có thuật toán AEC (Acoustic Echo Cancelling) bên trong hủy bỏ tiếng vang mô-đun, có một số triển khai, như webrtc | speex.
Do đó, bạn nên mua tai nghe | micro có tính năng khử tiếng ồn tích hợp càng nhiều càng tốt.
Khi tôi thử nghiệm ghi âm giọng nói trong Ubuntu, tôi đã tìm thấy một số phẩm chất đặc biệt:
Skype, Telegram sử dụng đầu vào thô từ thiết bị mặc định (trong trường hợp của tôi là giắc cắm micrô phía trước). Nếu bạn cần hủy tiếng ồn trong ứng dụng này, bạn chỉ nên mua tai nghe | micrô có tính năng khử tiếng ồn tích hợp
Nếu bạn cần sử dụng các cuộc gọi thoại trong trình duyệt, thì bạn nên nhớ rằng các trình duyệt có triển khai thuật toán xử lý giọng nói của riêng nó, ví dụ WebRTC.
Ngoài ra, các ứng dụng web (các trang web như talky, hangouts, xuất hiện, v.v.) có thể có triển khai thuật toán xử lý giọng nói của riêng nó, mặc dù thực tế là chúng có thể dựa trên phân tích hangout webrtc