เป็นไปได้ไหมที่จะกำจัดสัญญาณรบกวนแบบเรียลไทม์ด้วย PulseAudio ดังนั้นเอาต์พุตเสียงที่ออกมานั้นเรียบเนียนกว่าเดิม?
เป็นไปได้ไหมที่จะกำจัดสัญญาณรบกวนแบบเรียลไทม์ด้วย PulseAudio ดังนั้นเอาต์พุตเสียงที่ออกมานั้นเรียบเนียนกว่าเดิม?
คำตอบ:
module-echo-cancel
ฉันเริ่มอ่านมากเกี่ยวกับ PulseAudio และตัวเลือก "ซ่อน" ที่มีอยู่ฉันจึงสามารถหาสิ่งที่คล้ายกับคำถามนี้ได้ สิ่งที่ฉันพบคือโมดูลตัดเสียงรบกวนซึ่งเป็นสิ่งที่ช่วยลดเสียงคงที่ในไมโครโฟนและแม้แต่เสียงพื้นหลังจำนวนมากโดยทั่วไปให้ประโยชน์จากการบันทึกเสียงของคุณเองด้วยคุณภาพที่ยอดเยี่ยม (สำหรับการบันทึกเสียง ตัวอย่างเช่น). ให้ทำตามขั้นตอนนี้:
sudo nano /etc/pulse/default.pa
เพิ่มบรรทัดต่อไปนี้ที่ใดก็ได้ในไฟล์ แต่ฉันแนะนำเกือบท้ายที่คุณจะพบความคิดเห็นเกี่ยวกับสิ่งที่ Echo ยกเลิก (~ บรรทัดที่ 140):
load-module module-echo-cancel
โหลด PulseAudio ( pulseaudio -k
) หรือรีสตาร์ทคอมพิวเตอร์ คุณควรเลือกตัวเลือกตัดเสียงรบกวนใหม่จากส่วนอุปกรณ์อินพุต:
คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่Echo Cancel Module
หากคุณต้องการตั้งค่าเริ่มต้นอุปกรณ์ echo ยกเลิกเพียงแค่เปลี่ยนบรรทัดข้างต้นเป็น:
load-module module-echo-cancel source_name=logitechsource
จากนั้นที่ด้านล่างของไฟล์เพิ่ม
set-default-source logitechsource
ในกรณีนี้ฉันตั้งชื่อที่มาlogitechsource
แต่คุณสามารถตั้งชื่อได้ตามที่คุณต้องการ
สุดท้ายถ้าคุณไม่ต้องการชื่อยาวสุดในการตั้งค่าเสียง (เมื่อคุณต้องการเลือกอุปกรณ์อินพุต / เอาต์พุต) ข้อเสนอแนะของฉันคือการเปลี่ยนชื่ออุปกรณ์อินพุตเช่นนี้:
load-module module-echo-cancel source_name=logitechsource source_properties=device.description=LogitechHD
และเริ่มใหม่อีกครั้ง pulseaudio ผลลัพธ์ที่ได้จะเป็นดังนี้:
load-module module-echo-cancel aec_method=webrtc aec_args="analog_gain_control=0 digital_gain_control=1"
ตามgitlab.freedesktop.org/pulseaudio/pulseaudio/pulseaudio/issues/224
นี่เป็นคำถามเก่า แต่ฉันมีปัญหาเดียวกันและหลังจาก Googling (ซึ่งฉันพบคนส่วนใหญ่ที่เห็นด้วยไม่สามารถทำได้) และอ่านหน้าเว็บบางหน้าตอนนี้ฉันได้พัฒนาวิธีแก้ปัญหาตามความคิดของผู้ใช้ 2330377
ก่อนอื่นคุณต้องสร้างโปรไฟล์เสียงสำหรับ SoX เพียงแค่ใช้โปรแกรมบันทึกเสียงใด ๆ ที่จะบันทึกไม่กี่วินาทีของเสียงแล้วลงในไดเรกทอรีที่คุณบันทึกไว้และทำcd
sox noise.wav -n noiseprof noise.prof
จากนั้นคุณต้องสร้างอุปกรณ์ลูปแบ็ก ALSA:
sudo modprobe snd_aloop
สิ่งนี้จำเป็นเนื่องจาก pulseaudio ซึ่งแตกต่างจากแจ็คไม่สามารถเชื่อมต่อซอฟต์แวร์เสียงโดยตรงเข้าด้วยกัน ดังนั้นเราจะใช้อุปกรณ์ลูปแบ็คเป็นพร็อกซี
ตอนนี้คุณต้องเริ่มpaman
และค้นหาชื่อของทั้งไมโครโฟนของคุณ (หรืออุปกรณ์บันทึกอื่น ๆ ) และของอุปกรณ์ลูปแบ็คที่เราเพิ่งสร้างขึ้น เมื่อพบแล้วคุณสามารถดำเนินการคำสั่งต่อไปนี้เพื่อเริ่มการบันทึกเสียงจากไมโครโฟนของคุณไพพ์ผ่าน SoX แล้วเล่นบนอุปกรณ์ลูปแบ็ค:
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 - อุปกรณ์อินพุตสำหรับการร้องขอ pacat แรกและเอาต์พุตอุปกรณ์ลูปแบ็คเป็นครั้งที่สอง)
คุณไปเกือบเสร็จแล้ว! ในขั้นตอนสุดท้ายให้เริ่มบันทึกเสียงด้วยแอพพลิเคชั่นที่คุณต้องการจากนั้นเริ่มpavucontrol
เปลี่ยนเป็นแท็บ "การบันทึก" และตั้งค่าอุปกรณ์เสียงที่ใช้สำหรับการบันทึก (แสดงเป็นปุ่มสีเทาทางด้านขวา) เป็น "Monitor of Loopback Audio อุปกรณ์" ตอนนี้คุณควรมีการบันทึกที่ชัดเจนและปราศจากเสียงรบกวน!
การสอบสวนแสดงให้เห็นว่าไม่มีวิธีใดที่จะทราบได้ว่าใช้ตัวกรองลดเสียงรบกวนแบบเรียลไทม์กับระบบย่อย Linux ใด ๆ บางเว็บไซต์ชี้ไปที่ฮาร์ดแวร์ที่คุณสามารถซื้อได้ซึ่งควรทำเคล็ดลับได้ดีกว่าทำตัวกรองซอฟต์แวร์
อีกทางเลือกหนึ่งสำหรับการบันทึกคุณสามารถส่งผ่านเสียงผ่านความกล้าและใช้ตัวกรองสัญญาณรบกวนได้
module-echo-cancel
เท่านั้นซึ่งมีการใช้งานหลายอย่างเช่น webrtc | Speex
นี่คือวิธี leas tone ใช้ webrtc-aec ใน
http://wiki.gentoo.org/wiki/PulseAudio
webrtc-aec ใช่ใช้ webrtc.org ไลบรารี AudioProcessing เพื่อเพิ่มการโทร VoIP อย่างมากในแอปพลิเคชันที่สนับสนุนโดยทำการยกเลิกการสะท้อนเสียงการควบคุมการรับสัญญาณอนาล็อกการลดสัญญาณรบกวนและการประมวลผลอื่น ๆ
นี่คือบทความลงวันที่ 2013 เรื่อง (การกำจัดเสียงรบกวนด้วย pulseaudio ไม่ใช่ webrtc-aec โดยเฉพาะ) http://lac.linuxaudio.org/2013/papers/37.pdf
"เราได้นำเสนอผลลัพธ์ครั้งแรกของโซลูชันการลดสัญญาณรบกวน / เสียงก้องหลายช่องทางที่สร้างขึ้นบน PulseAudio และกระตุ้นการตัดสินใจในการออกแบบงานนี้ส่งผลให้มีการปรับปรุงจำนวนมากในการยกเลิก PulseAudio echo และกรอบการประมวลผลสัญญาณที่ได้รับ มีส่วนร่วมในวงจรการพัฒนาเวอร์ชัน 3.0 / 4.0 และควรช่วยสนับสนุนโซลูชันระบบเสียง Linux แบบฝังตัวในอนาคตงานต่อไปจะรวมถึงรหัสการปรับให้เหมาะสมสำหรับการผสมการสตรีมเสียงวิธีการสุ่มตัวอย่างทางวิทยาศาสตร์มากขึ้นและการใช้งาน AEC ที่มีประสิทธิภาพ
ไม่มีข้อมูลใด ๆ ในหน้าเอกสารของโมดูลเกี่ยวกับการตัดเสียงรบกวน มีอัลกอริทึม AEC (Acoustic Echo Cancellation) เพียงอย่างเดียวใน module-echo-cancel ซึ่งมีการใช้งานหลายอย่างเช่น webrtc | Speex
ดังนั้นคุณควรซื้อชุดหูฟัง | ไมโครโฟนพร้อมคุณสมบัติตัดเสียงรบกวนในตัวให้มากที่สุด
ขณะที่ฉันทดสอบการบันทึกเสียงในอูบุนตูฉันพบคุณสมบัติพิเศษบางอย่าง:
Skype, Telegram ใช้อินพุตดิบจากอุปกรณ์เริ่มต้น (ในกรณีแจ็ค front-in-mic-backward-mic) หากคุณต้องการยกเลิกเสียงในแอพนี้คุณควรซื้อหูฟัง | ไมโครโฟนเท่านั้นที่มีคุณสมบัติการตัดเสียงรบกวนในตัว
หากคุณต้องการใช้การโทรด้วยเสียงในเบราว์เซอร์คุณควรทราบว่าเบราว์เซอร์มีการใช้งานอัลกอริทึมการประมวลผลเสียงของตัวเองเช่น WebRTC
แอปพลิเคชันบนเว็บ (ไซต์เช่น talky, hangouts, appear.in และอื่น ๆ ) สามารถใช้อัลกอริทึมการประมวลผลเสียงของตัวเองได้แม้ว่าจะเป็นไปตามการวิเคราะห์ webrtc