Cải thiện chất lượng giọng nói — DeepFilterNet3
Loại bỏ tiếng ồn nền trong các bản ghi giọng nói bằng DeepFilterNet3. Mô hình chạy trên Neural Engine qua CoreML để suy luận hiệu quả, trong khi toàn bộ xử lý tín hiệu (STFT, ERB filterbank, deep filtering) chạy trên CPU qua Accelerate/vDSP.
Kiến trúc
DeepFilterNet3 dùng kiến trúc bộ giải mã kép, tách biệt việc cải thiện đường bao phổ và việc khôi phục chi tiết phổ tinh.
| Giai đoạn | Chi tiết |
|---|---|
| STFT | Short-time Fourier transform qua vDSP |
| Encoder | 4 lớp SepConv2d + SqueezedGRU |
| ERB Decoder | Mặt nạ sigmoid áp dụng lên các dải tần theo thang ERB |
| DF Decoder | Hệ số lọc phức 5 tap |
| iSTFT | STFT nghịch để tái dựng tín hiệu trong miền thời gian |
ERB Decoder ước tính mặt nạ tăng ích trên thang Equivalent Rectangular Bandwidth (ERB), xử lý định hình phổ rộng. DF Decoder dự đoán hệ số lọc phức 5 tap cho chi tiết tinh, áp dụng các bộ lọc đã học trực tiếp trong miền tần số.
Pipeline xử lý
- STFT — Phân tích âm thanh có nhiễu thành biểu diễn thời gian–tần số bằng vDSP
- Đặc trưng ERB — Ánh xạ các bin STFT sang dải tần theo thang ERB
- Mạng nơ-ron — Encoder xử lý đặc trưng trên Neural Engine; bộ giải mã ERB và DF dự đoán tham số cải thiện
- Mặt nạ ERB — Áp dụng mặt nạ tăng ích sigmoid để khử nhiễu trong đường bao phổ
- Deep filtering — Áp dụng hệ số phức 5 tap để khôi phục chi tiết phổ tinh
- iSTFT — Tái dựng âm thanh sạch từ phổ đã cải thiện
Biến thể mô hình
| Biến thể | Kích thước | Độ chính xác |
|---|---|---|
| INT8 (mặc định) | ~2.2 MB | Lượng tử hóa 8 bit |
| FP32 | ~4.3 MB | Độ chính xác đầy đủ |
Mô hình có khoảng 2.1M tham số. Biến thể INT8 được dùng mặc định và cho chất lượng tương đương với chỉ một nửa kích thước.
Cách dùng CLI
# Khử nhiễu âm thanh (đầu ra ghi vào _denoised.wav)
.build/release/speech denoise noisy.wav
# Chỉ định tệp đầu ra
.build/release/speech denoise noisy.wav -o clean.wav
# Dùng biến thể FP32 của mô hình
.build/release/speech denoise noisy.wav --model fp32
Tùy chọn
| Tùy chọn | Mô tả |
|---|---|
--output, -o | Đường dẫn tệp đầu ra (mặc định <input>_denoised.wav) |
--model | Biến thể mô hình: int8 (mặc định) hoặc fp32 |
DeepFilterNet3 chạy trên Neural Engine qua CoreML, không phải trên GPU qua MLX. Điều này nghĩa là mô hình hoạt động hiệu quả ngay cả khi các mô hình khác dựa trên GPU (ASR, TTS) đang chạy. Không cần biên dịch metallib.
Tải mô hình
| Mô hình | Kích thước | HuggingFace |
|---|---|---|
| DeepFilterNet3 (CoreML FP16) | ~4.2 MB | aufklarer/DeepFilterNet3-CoreML |
Kết hợp với các mô hình khác
Cải thiện chất lượng giọng nói đặc biệt hữu ích khi dùng làm bước tiền xử lý trước các mô hình khác:
- Trước khi phiên âm — Khử nhiễu âm thanh trước khi chạy ASR để giảm tỷ lệ lỗi từ trên các bản ghi nhiễu
- Trước khi tạo embedding người nói — Âm thanh sạch hơn cho ra embedding người nói đáng tin cậy hơn
- Trước khi phân tách người nói — Khử nhiễu có thể cải thiện độ chính xác phân đoạn
# Khử nhiễu rồi phiên âm
.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")
Cũng có sẵn trên Android và Linux qua ONNX Runtime.