การปรับปรุงเสียงพูด — DeepFilterNet3

ลบเสียงรบกวนพื้นหลังออกจากการบันทึกเสียงพูดโดยใช้ DeepFilterNet3 โมเดลทำงานบน Neural Engine ผ่าน CoreML เพื่อให้ inference มีประสิทธิภาพ ขณะที่การประมวลผลสัญญาณทั้งหมด (STFT, ERB filterbank, deep filtering) ทำงานบน CPU ผ่าน Accelerate/vDSP

สถาปัตยกรรม

DeepFilterNet3 ใช้สถาปัตยกรรม decoder คู่ที่แยกการปรับปรุงเส้นโครงสเปกตรัมออกจากการกู้คืนรายละเอียดสเปกตรัมแบบละเอียด

ขั้นตอนรายละเอียด
STFTShort-time Fourier transform ผ่าน vDSP
Encoder4 ชั้น SepConv2d + SqueezedGRU
ERB Decoderมาสก์ sigmoid ใช้กับแถบความถี่ระดับ ERB
DF Decoderสัมประสิทธิ์ filter เชิงซ้อน 5-tap
iSTFTSTFT แบบผกผันเพื่อสร้างสัญญาณในโดเมนเวลา

ERB Decoder ประมาณค่ามาสก์ gain บนสเกล Equivalent Rectangular Bandwidth (ERB) ใช้สำหรับการกำหนดรูปร่างสเปกตรัมกว้าง DF Decoder ทำนายสัมประสิทธิ์ filter เชิงซ้อน 5-tap สำหรับรายละเอียดเล็ก โดยใช้ฟิลเตอร์ที่เรียนรู้แล้วโดยตรงในโดเมนความถี่

ไปป์ไลน์การประมวลผล

  1. STFT — แตกเสียงที่มีนอยส์ออกเป็นการแทนค่าเวลา–ความถี่ด้วย vDSP
  2. คุณลักษณะ ERB — แมป bin ของ STFT ไปยังแถบความถี่สเกล ERB
  3. โครงข่ายประสาท — Encoder ประมวลผลคุณลักษณะบน Neural Engine; decoder ERB และ DF ทำนายพารามิเตอร์การปรับปรุง
  4. การมาสก์ ERB — ใช้มาสก์ gain แบบ sigmoid เพื่อกดเสียงรบกวนในเส้นโครงสเปกตรัม
  5. Deep filtering — ใช้สัมประสิทธิ์เชิงซ้อน 5-tap เพื่อกู้คืนรายละเอียดสเปกตรัมที่ละเอียด
  6. iSTFT — สร้างเสียงสะอาดกลับจากสเปกตรัมที่ปรับปรุงแล้ว

รุ่นของโมเดล

รุ่นขนาดความแม่นยำ
INT8 (ค่าเริ่มต้น)~2.2 MBquantize 8 บิต
FP32~4.3 MBความแม่นยำเต็ม

โมเดลมีประมาณ 2.1M พารามิเตอร์ รุ่น INT8 ถูกใช้เป็นค่าเริ่มต้นและให้คุณภาพเทียบเท่าโดยใช้ขนาดเพียงครึ่งเดียว

การใช้งาน CLI

# ลดเสียงรบกวน (เอาต์พุตไปที่ _denoised.wav)
.build/release/speech denoise noisy.wav

# ระบุไฟล์เอาต์พุต
.build/release/speech denoise noisy.wav -o clean.wav

# ใช้โมเดลรุ่น FP32
.build/release/speech denoise noisy.wav --model fp32

ตัวเลือก

ตัวเลือกคำอธิบาย
--output, -oเส้นทางไฟล์เอาต์พุต (ค่าเริ่มต้น <input>_denoised.wav)
--modelรุ่นของโมเดล: int8 (ค่าเริ่มต้น) หรือ fp32
สำคัญ

DeepFilterNet3 ทำงานบน Neural Engine ผ่าน CoreML ไม่ใช่บน GPU ผ่าน MLX นั่นหมายความว่าโมเดลทำงานได้อย่างมีประสิทธิภาพแม้ในขณะที่โมเดลอื่นๆ ที่อาศัย GPU (ASR, TTS) กำลังทำงานอยู่ ไม่จำเป็นต้อง compile metallib

ดาวน์โหลดโมเดล

โมเดลขนาดHuggingFace
DeepFilterNet3 (CoreML FP16)~4.2 MBaufklarer/DeepFilterNet3-CoreML

การใช้ร่วมกับโมเดลอื่นๆ

การปรับปรุงเสียงพูดมีประโยชน์อย่างยิ่งเมื่อใช้เป็นขั้นตอน preprocessing ก่อนใช้กับโมเดลอื่นๆ

# ลดเสียงรบกวนแล้วถอดเสียง
.build/release/speech denoise noisy.wav -o clean.wav
.build/release/speech transcribe clean.wav

API ของ Swift

import SpeechEnhancement

let model = try await DeepFilterNet3.loadFromHub()
let cleanAudio = try await model.denoise(audioFile: "noisy.wav")
try cleanAudio.write(to: "clean.wav")

มีให้ใช้บน Android และ Linux ผ่าน ONNX Runtime ด้วยเช่นกัน