ฉันเป็นมือใหม่มากในการประมวลผลคำพูด จริงๆ แล้วฉันกำลังพยายามทำ Noise Reduction ฉันกำลังใช้วิธีลบสเปกตรัม ในขณะที่ทำเช่นนั้น ในเอกสารทางทฤษฎีและอัลกอริธึมหลายฉบับ กล่าวว่าต้องใช้เฟรมของสัญญาณเสียง
เพื่อสิ่งนั้น ฉันใช้เวลานาน 20 มิลลิวินาทีสำหรับแต่ละเฟรม เช่น สำหรับความถี่ในการสุ่มตัวอย่าง = 16KHz ฉันจะได้แต่ละเฟรมด้วย 16KHz * 20ms = 320 ตัวอย่าง/เฟรม
windowed_frame = frame .* hamming(length(frame));
complex_spec = fft(windowed_frame,512);
mag_spec = abs(complex_spec);
phase_spec = angle(complex_spec);
ตอนนี้สำหรับสัญญาณรบกวนมันบอกว่า:
สมมติว่าเฟรมที่ไม่ใช่คำพูดสองสามเฟรมเริ่มต้นเป็นสัญญาณรบกวน
ดังนั้นเพื่อให้ได้ค่าประมาณเสียงรบกวน จึงระบุเอาไว้
หาค่าเฉลี่ยของ 3 เฟรมแรกหรือมากกว่านั้น
และแต่ละเฟรมถ้ายาว 320 ตัวอย่าง ทีนี้ การบอกว่าหาค่าเฉลี่ย/ค่าเฉลี่ยของ 3 เฟรมแรกนั้นหมายความว่าอย่างไร
3 เฟรมมีทั้งหมด 3*320 = 960 ตัวอย่าง มันบ่งชี้ว่าต้องใช้ค่าเฉลี่ยของค่า 960 เหล่านั้นหรือไม่? แต่นั่นจะส่งผลให้มีเพียงค่าเดียวเท่านั้น แต่ฉันจะต้องมีขนาดแบบหน้าต่าง เช่น Noise_estimate ขนาด 20ms
ความช่วยเหลือใด ๆ ?