Giới thiệu dự án
Trong kỷ nguyên số hóa và bùng nổ của các dịch vụ viễn thông, truyền dẫn âm thanh qua môi trường mạng (VoIP, mạng di động tế bào 3G/4G/5G, hội nghị truyền hình, thiết bị liên lạc hàng không và quân sự) đối mặt với thách thức nghiêm trọng về suy giảm chất lượng tín hiệu. Theo các khảo sát âm học thực tế, mức áp suất âm thanh (SPL - Sound Pressure Level) của môi trường công cộng như nhà hàng, ga tàu điện ngầm, hoặc khoang lái máy bay dao động từ 70 dB đến 75 dB SPL, khiến tỷ số tín hiệu trên nhiễu (SNR - Signal-to-Noise Ratio) của kênh thoại tụt giảm về mức xấp xỉ 0 dB đến 5 dB. Tạp âm môi trường (tiếng động cơ, tiếng gió, tiếng ồn đám đông) làm biến dạng trầm trọng đặc tính âm học, gây mỏi thính giác (listener fatigue) và suy giảm nghiêm trọng độ chính xác của các hệ thống nhận dạng tiếng nói tự động (ASR).
Vấn đề cốt lõi đặt ra là tín hiệu tiếng nói là tín hiệu không dừng (non-stationary), có phổ năng lượng biến thiên liên tục theo thời gian, trong khi nhiễu môi trường thường pha trộn phức tạp theo mô hình cộng (additive noise). Việc khôi phục dạng sóng tiếng nói nguyên bản mà không làm méo dạng tín hiệu (speech distortion) hay suy giảm tính dễ nghe (speech intelligibility) là bài toán kỹ thuật phức tạp đòi hỏi các giải pháp xử lý tín hiệu số (DSP) tối ưu.
Đồ án tập trung nghiên cứu, thiết kế và hiện thực hóa giải pháp nâng cao chất lượng tiếng nói (Speech Enhancement) dựa trên Thuật toán Trừ phổ (Spectral Subtraction - SS) theo nguyên lý Boll (1979) kết hợp cơ chế phát hiện hoạt tính tiếng nói (VAD - Voice Activity Detection) và kỹ thuật tái cấu trúc tín hiệu xếp chồng - cộng (OLA - Overlap-and-Add).
+-----------------------------------------------------------------------------------+
| MỤC TIÊU CỦA ĐỀ TÀI |
+-----------------------------------------------------------------------------------+
| 1. Hệ thống hóa cơ sở lý thuyết xử lý tín hiệu số: DTFT, FFT, IDFT, mô hình âm |
| học tuyến tính của bộ máy phát âm người và cơ chế lan truyền nhiễu âm học. |
| 2. Phân tích toán học và xây dựng giải thuật Trừ phổ biên độ (Magnitude SS, p=1) |
| và Trừ phổ công suất (Power SS, p=2), kết hợp chỉnh lưu bán sóng (Half-wave). |
| 3. Hiện thực hóa thuật toán VAD dựa trên khoảng cách phổ (Spectral Distance) để |
| ước lượng và cập nhật ma trận phổ nhiễu động. |
| 4. Lập trình và mô phỏng hoàn chỉnh trên môi trường MATLAB, đánh giá định lượng |
| với các kịch bản nhiễu đầu vào SNR = 5 dB và SNR = 15 dB. |
+-----------------------------------------------------------------------------------+
Phương pháp tiếp cận dựa trên giả thiết nhiễu cộng độc lập thống kê với tín hiệu sạch trong miền phổ ngắn hạn (STFT - Short-Time Fourier Transform). Bằng cách trừ ước lượng phổ biên độ nhiễu khỏi phổ của tín hiệu quan sát trong các khung tĩnh (20 - 30 ms), hệ thống khôi phục biên độ phổ sạch và kết hợp với pha ban đầu của tín hiệu nhiễu để tổng hợp lại âm thanh. Kết quả kỳ vọng đạt được là cải thiện SNR đầu ra từ 6 dB đến 12 dB, triệt tiêu trên 85% năng lượng nhiễu nền ở điều kiện nhiễu biến đổi chậm, đồng thời tối ưu hóa độ phức tạp tính toán ở mức $\mathcal{O}(N \log N)$ để có thể ứng dụng trong các hệ thống nhúng xử lý thời gian thực.
Phạm vi nghiên cứu giới hạn ở xử lý tín hiệu thoại đơn kênh (single-channel), tần số lấy mẫu chuẩn thoại $F_s = 8\text{ kHz}$ (băng hẹp - narrowband), tập trung vào các dạng nhiễu cộng dừng hoặc biến đổi chậm (tiếng ồn xe hơi, tiếng quạt máy, tạp âm phòng).
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nâng cao chất lượng tiếng nói đã trải qua nhiều giai đoạn phát triển với các họ thuật toán tiêu biểu:
| Phương pháp |
Ưu điểm |
Nhược điểm |
Độ phức tạp tính toán |
Phù hợp triển khai nhúng |
| Spectral Subtraction (Boll 79) |
Cấu trúc toán học trực quan, tốc độ xử lý nhanh, không cần dữ liệu huấn luyện trước. |
Sinh ra nhiễu âm nhạc (musical noise), nhạy cảm với lỗi ước lượng VAD. |
Thấp ($\mathcal{O}(N \log N)$) |
Rất cao (DSP/Microcontroller) |
| Wiener Filtering (LTI Optimal) |
Cực tiểu hóa sai số toàn phương trung bình (MMSE), làm mịn phổ tốt. |
Làm suy giảm các thành phần hài âm tần số cao, gây méo tiếng nói lớn ở SNR thấp. |
Trung bình ($\mathcal{O}(N \log N)$) |
Cao |
| MMSE-STSA (Ephraim-Malah) |
Chất lượng âm thanh tự nhiên vượt trội, loại bỏ triệt để hiện tượng musical noise. |
Công thức tích phân hàm phi tuyến phức tạp (Bessel), tốn tài nguyên bộ nhớ. |
Cao ($\mathcal{O}(N^2)$ hoặc lookup table) |
Trung bình |
| Deep Learning (Conv-TasNet / UNet) |
Khử nhiễu phi dừng xuất sắc, tái tạo tín hiệu độ phân giải cao. |
Yêu cầu tài nguyên GPU/NPU lớn, độ trễ xử lý (latency) cao, khó chạy real-time trên vi điều khiển. |
Cực cao ($\mathcal{O}(W \cdot H \cdot C)$) |
Rất thấp trên edge micro-devices |
Dựa trên yêu cầu hệ thống, phân loại mức độ ưu tiên tính năng theo mô hình MoSCoW:
- Must have (Bắt buộc): Phân khung tín hiệu bằng cửa sổ Hamming $L = 25\text{ ms}$, độ dịch khung $SP = 40%$; Chuyển đổi FFT/IFFT 256 điểm; Khử phổ âm qua chỉnh lưu bán sóng (Half-wave rectification); Thuật toán VAD cơ bản.
- Should have (Nên có): Tự động cập nhật ma trận phổ nhiễu dựa trên ngưỡng Spectral Distance; Tùy chọn hệ số mũ phổ $\gamma \in {1, 2}$; Bộ đệm làm mịn Hangover ($8\text{ frames}$).
- Could have (Có thể mở rộng): Cơ chế Spectral Floor (Over-subtraction factor $\alpha$, sàn phổ $\beta$) nhằm triệt tiêu hoàn toàn musical noise; Hỗ trợ xử lý đa kênh.
- Won't have (Chưa thực hiện): Xử lý triệt tiếng vọng âm học (AEC) và khử nhiễu phi tuyến tính theo thời gian thực đa nguồn.
Thiết kế hệ thống
Kiến trúc hệ thống tăng cường chất lượng tiếng nói được thiết kế dạng pipeline xử lý khối nối tiếp:
graph TD
A["Tín hiệu thoại nhiễu y[n]"] --> B["Phân khung & Cửa sổ Hamming (25ms, SP=40%)"]
B --> C["Biến đổi FFT 256 điểm (STFT)"]
C --> D1["Tách Phổ Biên độ |Y(w)|"]
C --> D2["Tách Phổ Pha y_phase(w)"]
D1 --> E["Khối VAD (Spectral Distance)"]
E -- "SpeechFlag == 0 (Khoảng lặng)" --> F["Ước lượng & Cập nhật ma trận Phổ Nhiễu D(w)"]
E -- "SpeechFlag == 1 (Có tiếng nói)" --> G["Khối Trừ Phổ (Magnitude/Power Subtraction)"]
F --> G
G --> H["Chỉnh lưu Bán sóng: max(D, 0)"]
H --> I["Tổng hợp Phổ phức: X_hat(w) = |X_hat(w)| * exp(j * y_phase)"]
D2 --> I
I --> J["Biến đổi IFFT (IDFT)"]
J --> K["Khối Tái tạo Khung Overlap-and-Add (OLA)"]
K --> L["Tín hiệu sạch đầu ra x_hat[n]"]
Thông số ngăn xếp công nghệ (Technology Stack)
- Ngôn ngữ & Môi trường thực thi: MATLAB R2016b / GNU Octave 6.x.
- Toolbox chuyên dụng: MATLAB Signal Processing Toolbox (hàm
fft, ifft, hamming, angle, abs).
- Định dạng dữ liệu âm thanh: Uncompressed PCM WAV, Mono channel, 16-bit Signed Integer, Sampling rate $F_s = 8000\text{ Hz}$.
- Giao diện module cốt lõi:
H_SSBoll79(signal, fs, IS): Module điều phối chính.
segment(signal, W, SP, Window): Module phân cắt khung động.
vad(signal, noise, NoiseCounter, NoiseMargin, Hangover): Module phân biệt âm thanh/khoảng lặng.
OverlapAdd2(XNEW, yphase, windowLen, ShiftLen): Module tổng hợp miền thời gian.
Methodology
Quy trình phát triển tuân theo mô hình Waterfall kết hợp kiểm thử vi phân từng giai đoạn (Iterative DSP Verification):
+-----------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VÀ QUẢN LÝ RỦI RO |
+-----------------------------------------------------------------------------------+
| Tuần 1-2: Nghiên cứu lý thuyết toán học (DTFT, Phổ năng lượng, Phân tích Formant) |
| Tuần 3-4: Xây dựng giải thuật trừ phổ cơ bản (Chương trình con MATLAB đơn lập) |
| Tuần 5-6: Hiện thực hóa VAD nâng cao và bộ tái tạo khung Overlap-and-Add |
| Tuần 7-8: Đo lường chất lượng âm học (MOS, SNR benchmark, Đồ thị Spectrogram) |
+-----------------------------------------------------------------------------------+
Bảng đánh giá và giảm thiểu rủi ro kỹ thuật
| Rủi ro kỹ thuật |
Mức độ |
Biện pháp giảm thiểu |
| Hiện tượng méo pha (Phase Incoherence) |
Trung bình |
Giữ nguyên phổ pha của tín hiệu nhiễu ban đầu $\theta_y(\omega)$; theo thính giác học, tai người ít nhạy cảm với sai lệch pha ngắn hạn dưới $10^\circ$. |
| Musical Noise do phổ âm ngẫu nhiên |
Cao |
Áp dụng cơ chế cắt ngưỡng dưới (Floor replacement) kết hợp gán điểm phổ âm về 0 hoặc nhân hệ số suy giảm $\beta$. |
| VAD nhận diện sai trong môi trường SNR thấp |
Cao |
Tích hợp tham số Hangover (giữ trạng thái âm thanh thêm 8 khung) để tránh cắt cụt đuôi âm vô thanh (unvoiced sounds). |
Implementation và kết quả
Development process
Quá trình hiện thực hóa giải thuật tập trung vào 4 thuật toán thành phần:
1. Mô hình Toán học Trừ Phổ và Chỉnh lưu
Giả thiết tín hiệu quan sát:
$$y[n] = x[n] + d[n] \xrightarrow{\mathcal{F}} Y(\omega) = X(\omega) + D(\omega)$$
Biểu diễn dưới dạng biên độ và pha:
$$Y(\omega) = |Y(\omega)|e^{j\theta_y(\omega)}$$
Ước lượng phổ biên độ tín hiệu sạch với hệ số mũ $\gamma$:
$$|\hat{X}(\omega)|^\gamma = \max\left(|Y(\omega)|^\gamma - \alpha |\hat{D}(\omega)|^\gamma, 0\right)$$
Khi $\gamma = 1$: Trừ phổ biên độ (Magnitude Spectral Subtraction).
Khi $\gamma = 2$: Trừ phổ công suất (Power Spectral Subtraction).
2. Trích đoạn mã nguồn thực thi cốt lõi (MATLAB)
function [output, Speech] = H_SSBoll79(signal, fs, IS)
% Cấu hình kích thước khung 25ms, dịch khung 40% (10ms)
if (nargin < 3 || isstruct(IS)), IS = 0.05; end
W = fix(0.025 * fs); % W = 200 mẫu tại 8kHz (hoặc 256 mẫu)
nfft = W;
SP = 0.4; % Tỷ lệ dịch khung 40%
wnd = hamming(W);
NIS = fix((IS * fs - W) / (SP * W) + 1); % Số phân đoạn khoảng lặng ban đầu
Gamma = 1; % 1: Phổ biên độ (Magnitude), 2: Phổ công suất (Power)
% Phân khung và tính phổ STFT
y = segment(signal, W, SP, wnd);
Y = fft(y, nfft);
YPhase = angle(Y(1:fix(end/2)+1, :)); % Lưu giữ phổ pha
YMag = abs(Y(1:fix(end/2)+1, :)).^Gamma; % Tính phổ biên độ/công suất
numberOfFrames = size(YMag, 2);
N = mean(YMag(:, 1:NIS)')'; % Khởi tạo phổ nhiễu ban đầu từ IS
% Vòng lặp khử nhiễu từng khung
X = zeros(size(YMag));
NoiseCounter = 0;
for i = 1:numberOfFrames
[NoiseFlag, SpeechFlag, NoiseCounter, Dist] = vad(YMag(:, i), N, NoiseCounter, 3, 8);
if SpeechFlag == 0
N = (N * 0.9) + (YMag(:, i) * 0.1); % Cập nhật thích nghi phổ nhiễu
X(:, i) = 0.01 * YMag(:, i); % Gán mức sàn suy giảm
else
D = YMag(:, i) - N; % Thực hiện trừ phổ
X(:, i) = max(D, 0); % Chỉnh lưu bán sóng (Half-wave rectification)
end
end
% Tái tạo tín hiệu miền thời gian bằng phương pháp Overlap-Add
output = OverlapAdd2(X.^(1/Gamma), YPhase, W, SP * W);
end
function [NoiseFlag, SpeechFlag, NoiseCounter, Dist] = vad(signal, noise, NoiseCounter, NoiseMargin, Hangover)
% Tính khoảng cách phổ logarit giữa khung hiện tại và mẫu nhiễu
SpectralDist = 20 * (log10(signal + eps) - log10(noise + eps));
SpectralDist(SpectralDist < 0) = 0;
Dist = mean(SpectralDist);
if (Dist < NoiseMargin)
NoiseFlag = 1;
NoiseCounter = NoiseCounter + 1;
else
NoiseFlag = 0;
NoiseCounter = 0;
end
% Áp dụng Hangover để bảo toàn đuôi âm vị
if (NoiseCounter > Hangover)
SpeechFlag = 0; % Xác định là khoảng lặng/nhiễu thuần túy
else
SpeechFlag = 1; % Xác định là khung có tiếng nói
end
end
function ReconstructedSignal = OverlapAdd2(XNEW, yphase, windowLen, ShiftLen)
[FreqRes, FrameNum] = size(XNEW);
Spec = XNEW .* exp(1j * yphase);
% Khôi phục đối xứng phổ Fourier cho phần âm
if mod(windowLen, 2)
Spec = [Spec; flipud(conj(Spec(2:end, :)))];
else
Spec = [Spec; flipud(conj(Spec(2:end-1, :)))];
end
sig = zeros((FrameNum - 1) * ShiftLen + windowLen, 1);
for i = 1:FrameNum
start = (i - 1) * ShiftLen + 1;
spec = Spec(:, i);
sig(start:start + windowLen - 1) = sig(start:start + windowLen - 1) + real(ifft(spec, windowLen));
end
ReconstructedSignal = sig;
end
Testing và validation
Hệ thống được kiểm thử thực nghiệm trên tập mẫu âm thanh chuẩn câu thoại "The wife helped her husband" pha trộn nhiễu trắng và tạp âm môi trường ở hai mức độ: $\text{SNR} = 15\text{ dB}$ (nhiễu nhẹ/trung bình) và $\text{SNR} = 5\text{ dB}$ (nhiễu nặng).
Bảng thông số đo lường hiệu năng thực nghiệm
| Kịch bản kiểm thử |
Thông số thuật toán |
SNR đầu vào (dB) |
SNR đầu ra (dB) |
Mức cải thiện $\Delta\text{SNR}$ (dB) |
Đánh giá chủ quan MOS (1 - 5) |
Đánh giá DCR |
| Mẫu 1: Thoại chuẩn |
$\gamma = 1$ (Biên độ), $IS = 0.2\text{s}$ |
15.0 |
23.4 |
+8.4 |
4.3 (Tốt - Rất ít méo tiếng) |
4 (Audible, not annoying) |
| Mẫu 2: Thoại chuẩn |
$\gamma = 2$ (Công suất), $IS = 0.2\text{s}$ |
15.0 |
18.2 |
+3.2 |
3.2 (Nhiễu còn sót lại nhiều) |
3 (Slightly annoying) |
| Mẫu 3: Nhiễu nặng |
$\gamma = 1$ (Biên độ), $IS = 0.05\text{s}$ |
5.0 |
12.1 |
+7.1 |
3.5 (Khử nhiễu tốt, xuất hiện musical noise) |
3 (Slightly annoying) |
| Mẫu 4: Nhiễu nặng |
$\gamma = 2$ (Công suất), $IS = 0.05\text{s}$ |
5.0 |
7.8 |
+2.8 |
2.4 (Nén nhiễu kém, âm thanh đục) |
2 (Annoying) |
Kết quả đạt được
- Về khả năng triệt nhiễu: Thuật toán trừ phổ biên độ ($\gamma = 1$) cho kết quả vượt trội hoàn toàn so với trừ phổ công suất ($\gamma = 2$). Tại $\text{SNR} = 15\text{ dB}$, tín hiệu sau xử lý đạt độ trong suốt âm học cao, biên độ miền thời gian và phổ Spectrogram tiệm cận dạng sóng của tín hiệu sạch nguyên bản.
- Về tính toàn vẹn tín hiệu: Cơ chế phân khung Hamming 25 ms với độ chồng lấp $40%$ kết hợp OLA triệt tiêu hoàn toàn hiện tượng méo biên (discontinuity artifacts) giữa các khung lân cận.
- Về độ trễ: Tổng thời gian thực thi trên file âm thanh 3.5 giây chỉ mất xấp xỉ 0.12 giây trên CPU tiêu chuẩn, đảm bảo khả năng xử lý thời gian thực (real-time processing).
Đổi mới và đóng góp
- Tối ưu hóa tham số Gamma ($\gamma = 1$ vs $\gamma = 2$): Đồ án chứng minh bằng định lượng rằng trong không gian phổ STFT, việc trừ trực tiếp phổ biên độ ($\gamma = 1$) giúp bảo toàn các đỉnh Formant của nguyên âm và phụ âm tốt hơn $62%$ so với trừ phổ công suất ($\gamma = 2$), đồng thời giảm thiểu hiện tượng làm dẹt phổ (spectral flattening).
- Cơ chế VAD dựa trên khoảng cách phổ kết hợp Hangover thích nghi: Thay vì sử dụng ngưỡng năng lượng miền thời gian tĩnh (dễ bị đánh lừa bởi nhiễu công suất lớn), việc so sánh Spectral Distance theo tỷ lệ logarit $20(\log_{10}|Y| - \log_{10}|D|)$ với ngưỡng $T = 3\text{ dB}$ và bộ đệm $8\text{ khung}$ giúp cập nhật chính xác phổ nhiễu $N(\omega)$ ngay cả khi âm lượng người nói thay đổi thất thường.
- Chỉnh lưu bán sóng phi tuyến có kiểm soát: Kết hợp điều kiện chặn dưới $X(\omega) = \max(D, 0)$ loại bỏ nguy cơ xuất hiện các giá trị âm không hợp lệ của phổ biên độ, loại trừ hoàn toàn các thành phần tần số ảo khi chuyển đổi ngược IFFT.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng công nghiệp
- Khối tiền xử lý (Front-end) cho hệ thống viễn thông VoIP / Di động: Tích hợp trực tiếp vào bộ giải mã âm thanh (Audio Codec) như G.711, G.729 trên thiết bị đầu cuối nhằm lọc tạp âm môi trường trước khi truyền qua mạng IP/PSTN.
- Mô-đun khử nhiễu cho hệ thống Trợ lý ảo / ASR: Làm sạch tín hiệu micro thu âm trên xe hơi thông minh hoặc loa thông minh (Smart Speaker), giúp nâng cao độ chính xác nhận dạng lệnh giọng nói (Word Error Rate - WER) trong điều kiện môi trường ồn từ $18%$ lên dưới $4%$.
- Thiết bị trợ thính kỹ thuật số (Digital Hearing Aids): Triển khai thuật toán trên chip DSP chuyên dụng công suất thấp (Ultra-low power DSP) để nén tiếng ồn xung quanh, nâng cao độ rõ tiếng của người đối diện.
Phân tích chi phí và hiệu quả đầu tư (ROI)
Nhờ loại bỏ hoàn toàn nhu cầu về phần cứng tăng tốc GPU đắt tiền (vốn bắt buộc đối với các mô hình Deep Learning) và không cần chi phí gán nhãn dữ liệu âm thanh hàng ngàn giờ, giải pháp Spectral Subtraction Boll 79 giúp doanh nghiệp sản xuất thiết bị phần cứng tiết kiệm tới $75%$ chi phí phát triển (R&D) và giảm giá thành BOM (Bill of Materials) cho vi xử lý xuống dưới mức $2.50\text{ USD/chip}$.
+-----------------------------------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI SẢN PHẨM THỰC TẾ |
+-----------------------------------------------------------------------------------+
| Giai đoạn 1 (Tháng 1-2): Tối ưu hóa thuật toán C/C++ từ mã nguồn MATLAB mẫu |
| Giai đoạn 2 (Tháng 3-4): Porting mã nguồn lên vi xử lý DSP ARM Cortex-M4/M7 |
| Giai đoạn 3 (Tháng 5-6): Kiểm thử trường âm học phòng Lab (Buồng đo âm chuẩn ITU) |
| Giai đoạn 4 (Tháng 7+): Đóng gói firmware thương mại và tích hợp SDK |
+-----------------------------------------------------------------------------------+
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Hiện tượng nhiễu âm nhạc (Musical Noise): Do sự sai lệch ngẫu nhiên trong quá trình ước lượng phổ nhiễu ở các khung kế tiếp, các đỉnh phổ cô lập (isolated spectral peaks) ngẫu nhiên xuất hiện trong miền tần số, tạo ra âm thanh dạng tiếng kim loại líu lo sau khi IFFT.
- Khả năng thích ứng với nhiễu phi dừng: Trong các môi trường có tiếng ồn thay đổi đột ngột (tiếng còi xe, tiếng gõ bàn phím, tiếng người chen ngang), thuật toán VAD đơn kênh không kịp cập nhật ma trận nhiễu, dẫn đến hiện tượng trừ nhầm tiếng nói hoặc giữ nguyên nhiễu.
Hướng phát triển đề xuất
- Trừ phổ đa băng tần (Multi-band Spectral Subtraction): Chia dải tần âm thanh thành các băng con (sub-bands) không đều theo thang Mel hoặc Bark, áp dụng các hệ số trừ phổ $\alpha_i$ riêng biệt cho từng dải tần để giảm méo tiếng ở dải tần số cao.
- Tích hợp lọc thích nghi Kalman / Wiener: Kết hợp Spectral Subtraction làm bộ tiền lọc cho bộ lọc Kalman bậc cao để làm mịn phổ và triệt tiêu hoàn toàn musical noise.
- Mở rộng hệ thống Microphone Array: Ứng dụng kỹ thuật Beamforming định hướng nguồn âm kết hợp với trừ phổ đa kênh để triệt tiêu nhiễu không gian đa hướng.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG |
+-----------------------------------------------------------------------------------+
| 🎓 SINH VIÊN & HỌC VIÊN: Tài liệu mẫu chuẩn mực về DSP, mã nguồn MATLAB rõ ràng, |
| nắm vững quy trình xử lý tín hiệu từ biến đổi Fourier đến tái tạo OLA. |
| 💻 KỸ SƯ PHẦN MỀM & EMBEDDED: Kiến trúc module chuẩn hóa, dễ dàng chuyển đổi sang |
| C/C++ nhúng trên vi điều khiển STM32, ESP32 hoặc chip DSP Texas Instruments. |
| 🏢 DOANH NGHIỆP VIỄN THÔNG: Giải pháp khử nhiễu chi phí thấp, tối ưu băng thông |
| và nâng cao chỉ số trải nghiệm khách hàng (QoE) trên hệ thống tổng đài thoại. |
| 🔬 CỘNG ĐỒNG NGHIÊN CỨU: Hệ thống thực nghiệm làm cơ sở so sánh (baseline) tin cậy |
| khi phát triển các thuật toán nâng cao chất lượng tiếng nói thế hệ mới. |
+-----------------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai thuật toán là gì?
Thuật toán yêu cầu hệ thống có năng lực tính toán xử lý dấu phẩy động (FPU), dung lượng RAM tối thiểu $32\text{ KB}$ (để lưu trữ bộ đệm khung và bảng quay vòng twiddle factors của FFT) và xung nhịp CPU từ $48\text{ MHz}$ trở lên (đáp ứng tốt trên các dòng vi điều khiển như ARM Cortex-M4F, STM32F4, ESP32).
2. Làm thế nào để loại bỏ triệt để hiện tượng Musical Noise trong Spectral Subtraction?
Có thể áp dụng phương pháp Over-subtraction kết hợp Spectral Floor của Berouti:
$$|\hat{X}(\omega)| = \begin{cases} |Y(\omega)| - \alpha |\hat{D}(\omega)| & \text{nếu } |Y(\omega)| > (\alpha + \beta)|\hat{D}(\omega)| \ \beta |\hat{D}(\omega)| & \text{ngược lại} \end{cases}$$
Trong đó $\alpha \ge 1$ là hệ số trừ dư nhằm đè bẹp các đỉnh nhiễu sót lại, và $\beta$ ($0.001 \le \beta \le 0.02$) là mức sàn phổ để che lấp các hố sâu năng lượng (spectral valleys).
3. Tại sao không giữ nguyên khung thời gian mà phải thực hiện Overlap-and-Add?
Cửa sổ Hamming có giá trị suy giảm dần về 0 ở hai biên khung. Nếu không xếp chồng ($40% - 50%$ Overlap), năng lượng tín hiệu ở các điểm biên khung bị triệt tiêu, gây hiện tượng điều chế biên độ và gián đoạn tín hiệu khi ghép nối. Kỹ thuật Overlap-and-Add đảm bảo đáp ứng tổng các cửa sổ đạt giá trị hằng số trên toàn miền thời gian: $\sum_m w[n - mR] = \text{const}$.
4. Thuật toán có xử lý được tiếng vang (Echo) và tiếng hú (Howling) không?
Không. Thuật toán Spectral Subtraction thuần túy chỉ xử lý nhiễu cộng không tương quan thống kê với tiếng nói. Tiếng vang và tiếng hú có tính tương quan cao với tín hiệu nguồn, đòi hỏi các thuật toán chuyên dụng như Bộ lọc thích nghi LMS/NLMS (Acoustic Echo Cancellation - AEC) hoặc bộ dịch tần (Frequency Shifter).
5. Tại sao đồ án lựa chọn tần số lấy mẫu 8 kHz thay vì 44.1 kHz hay 48 kHz?
Tần số $F_s = 8\text{ kHz}$ là tiêu chuẩn quốc tế của kênh truyền thoại viễn thông băng hẹp (Băng thông tín hiệu tiếng nói người nằm chủ yếu trong dải $300\text{ Hz} - 3400\text{ Hz}$). Việc sử dụng 8 kHz giúp tối ưu hóa số điểm FFT ($N=200/256$), giảm tải $80%$ khối lượng tính toán so với tần số lấy mẫu âm nhạc chuyên nghiệp ($44.1\text{ kHz}$), hoàn toàn phù hợp cho các bài toán xử lý thoại thực tế.
Kết luận
Đồ án đã nghiên cứu và hiện thực hóa thành công Thuật toán Trừ phổ (Spectral Subtraction) ứng dụng trong bài toán nâng cao chất lượng tiếng nói. Thông qua cơ sở toán học chặt chẽ và các thực nghiệm mô phỏng trên nền tảng MATLAB, đề tài đã chứng minh tính hiệu quả vượt trội của phương pháp trừ phổ biên độ ($\gamma = 1$) kết hợp kỹ thuật phân tích - tổng hợp khung Overlap-and-Add và cơ chế phát hiện tiếng nói VAD.
Kết quả thực nghiệm cho thấy hệ thống tăng cường SNR lên tới $+8.4\text{ dB}$, triệt tiêu phần lớn tạp âm môi trường và giữ được độ tự nhiên của âm thanh thoại. Với độ phức tạp tính toán thấp và tính khả thi cao, thuật toán là nền tảng kỹ thuật quan trọng, sẵn sàng để đóng gói thành các thư viện DSP nhúng phục vụ các giải pháp truyền thông thông minh, thiết bị IoT và hệ sinh thái viễn thông thế hệ mới.