ลดเสียงรบกวนพื้นหลังและเพิ่มประสิทธิภาพการพูดจากคลิปเสียงโดยใช้ ffmpeg


30

ฉันแยกคลิปเสียงจากไฟล์วิดีโอสำหรับการรู้จำเสียง วิดีโอเหล่านี้มาจากอุปกรณ์มือถือ / อื่น ๆ ที่ทำด้วยมือดังนั้นจึงมีเสียงดังมาก ฉันต้องการลดเสียงพื้นหลังของเสียงเพื่อให้การพูดที่ฉันส่งไปยังโปรแกรมรู้จำเสียงพูดของฉันชัดเจน ฉันใช้ ffmpeg เพื่อทำสิ่งนี้ทั้งหมด แต่ฉันติดอยู่ที่ขั้นตอนการลดเสียงรบกวน

จนถึงตอนนี้ฉันได้ลองใช้ตัวกรองดังนี้:

ffmpeg-20140324-git-63dbba6-win64-static\bin>ffmpeg -i i nput.wav -filter_complex "highpass=f=400,lowpass=f=1800" out2.wav

ffmpeg -i i nput.wav -af "equalizer=f=1000:width_type=h:width=900:g=-10" output.wav

ffmpeg -i i nput.wav -af "bandreject=f=1200:width_type=h:width=900:g=-10" output.wav

แต่ผลลัพธ์ที่น่าผิดหวังมาก เหตุผลของฉันคือเนื่องจากคำพูดอยู่ในช่วง 300-3,000 เฮิร์ตซ์ฉันสามารถกรองความถี่อื่น ๆ ทั้งหมดเพื่อระงับเสียงพื้นหลังใด ๆ ฉันพลาดอะไรไป

นอกจากนี้ฉันอ่านเกี่ยวกับตัวกรองเนอร์ที่สามารถใช้สำหรับการปรับปรุงการพูดและพบสิ่งนี้แต่ฉันไม่แน่ใจว่าจะใช้อย่างไร

คำตอบ:


35

หากคุณต้องการแยกเสียงพูดให้ลองใช้ตัวกรองสัญญาณเสียงความถี่ต่ำร่วมกับตัวกรองสัญญาณเสียงความถี่สูง สำหรับเสียงที่ใช้งานได้ฉันได้สังเกตเห็นว่าการกรองออก 200hz และต่ำกว่านั้นกรอง 3000hz ขึ้นไปทำงานได้ค่อนข้างดีในการรักษาเสียงเสียงที่ใช้งานได้

ffmpeg -i <input_file> -af "highpass=f=200, lowpass=f=3000" <output_file>

ในตัวอย่างนี้เพิ่มตัวกรองความถี่สูงผ่านก่อนเพื่อตัดความถี่ที่ต่ำกว่าจากนั้นใช้ตัวกรองความถี่ต่ำเพื่อตัดความถี่ที่สูงขึ้น หากจำเป็นคุณสามารถเรียกใช้ไฟล์ของคุณได้มากกว่าหนึ่งครั้งเพื่อล้างความถี่ db ที่สูงขึ้นภายในช่วงความถี่ตัด


ขออภัยดูเหมือนจะไม่มีการลดเสียงรบกวนที่เห็นได้ชัดสำหรับฉัน
Angad

วิธีนี้ใช้งานได้ดีมากในการลดเสียงรบกวนรอบข้างในระดับต่ำ (พัดลมเสียงหึ่ง ฯลฯ ) แต่อาจทำให้คุณภาพเสียงลดลงเล็กน้อยแม้ว่าจะสามารถลดลงได้บ้างโดยใช้ตัวกรองอื่น ๆ ในภายหลัง
เลนคอลลินส์

3
สำหรับกรณีของฉันเสียงต้นฉบับแย่มากแทบจะเป็นไปไม่ได้เลยที่จะได้ยินเสียงเพราะน้ำมีเสียงดังในพื้นหลัง ฉันใช้ดังต่อไปนี้ มันไม่ได้คุณภาพดี แต่ดีกว่าเดิม 1000 เท่า -af "highpass=f=200, lowpass=f=1000"
Eric

ฉันได้รับข้อผิดพลาดบางอย่างจากด้านบนหรือค่อนข้างคำเตือนจาก ffmpeg: [Parsed_highpass_0 @ 0x1524780] การตัด 52 ครั้ง กรุณาลดการรับ
shevy

6
คุณสามารถดูตัวอย่างตัวกรองของคุณด้วยffplay <input file> -af lowpass=3000,highpass=200
Björn

11

FFmpeg ตอนนี้มีตัวกรองเนทีฟ 2 ตัวเพื่อจัดการกับเสียงพื้นหลัง:

นอกจากนี้เมื่อเวลาผ่านไปเราสามารถใช้ตัวกรองladspa(ค้นหาตัวแยกสัญญาณรบกวน) และ / หรือlv2(ค้นหาตัวแยกเสียงพูด) ด้วย FFmpeg


9

ffmpeg ไม่มีตัวกรองเสียงที่ดีสำหรับการลดเสียงรบกวน Audacity มีตัวกรอง NR ที่มีประสิทธิภาพพอสมควร แต่มันถูกออกแบบมาเพื่อใช้กับการดำเนินการ 2 รอบพร้อมตัวอย่างเสียงรบกวนจากนั้นอินพุต

ความคิดเห็นที่ด้านบนของhttps://github.com/audacity/audacity/blob/master/src/effects/NoiseReduction.cppอธิบายวิธีการทำงาน (โดยทั่วไป: ปราบปรามทุกช่อง FFT ที่ต่ำกว่าขีด จำกัด ) มันจะให้สัญญาณผ่านเมื่อพวกมันดังกว่าชั้นเสียงในย่านความถี่นั้นมันสามารถทำสิ่งมหัศจรรย์ได้โดยไม่ทำให้เกิดปัญหามันเหมือนตัวกรอง band-pass ที่ปรับได้ ไปยังสัญญาณเนื่องจากพลังงานของเสียงรบกวนแผ่กระจายไปทั่วสเปกตรัมทั้งหมดการปล่อยผ่านย่านแคบ ๆ เพียงไม่กี่แห่งจะช่วยลดพลังงานเสียงรบกวนลงได้มาก

ดูเพิ่มเติมที่การลดเสียงรบกวน: ความกล้าเปรียบเทียบกับตัวเลือกอื่น ๆ อย่างไร สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานและการกำหนดค่าใหม่ของ FFT ถังขยะในทางใดทางหนึ่งเป็นพื้นฐานของตัวกรองลดเสียงรบกวนเชิงพาณิชย์ทั่วไปเช่นกัน

การย้ายฟิลเตอร์นั้นไปที่ ffmpeg น่าจะเป็นเรื่องที่ค่อนข้างอึดอัด บางทีการนำไปใช้เป็นตัวกรองที่มี 2 อินพุตแทนที่จะเป็นตัวกรอง 2 รอบจะทำงานได้ดีที่สุด เนื่องจากต้องการเพียงไม่กี่วินาทีในการรับโปรไฟล์เสียงจึงไม่เหมือนกับการอ่านไฟล์ทั้งหมด และคุณไม่ควรป้อนกระแสข้อมูลเสียงทั้งหมดเป็นตัวอย่างเสียงรบกวน จะต้องเห็นตัวอย่างเสียงรบกวนเพียงเพื่อกำหนดเกณฑ์สำหรับแต่ละถังขยะ FFT

ดังนั้นใช่อินพุตที่ 2 แทนที่จะเป็น 2pass จะสมเหตุสมผล แต่นั่นทำให้ใช้งานง่ายกว่าตัวกรอง ffmpeg ส่วนใหญ่ คุณต้องใช้วูดูด้วยการแยกสตรีม / ช่วงเวลาแยก และแน่นอนว่าคุณต้องมีการแทรกแซงด้วยตนเองเว้นแต่ว่าคุณมีตัวอย่างเสียงรบกวนในไฟล์แยกต่างหากที่จะเหมาะสมสำหรับไฟล์อินพุตหลายไฟล์ (ตัวอย่างเสียงรบกวนจากไมโครโฟน / การตั้งค่าเดียวกันควรใช้ได้กับคลิปทั้งหมดจากการตั้งค่านั้น)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.