← Quay lại Trang Chủ Blog
Xử Lý Tín Hiệu Số

Xử Lý Tín Hiệu Số: Từ Mẫu Đến Phổ

27 tháng 7, 2026 · Lộ trình 15 bài học

Mọi thuật toán tự viết — không hộp đen nào cả

Hầu hết tài liệu DSP dừng lại ở công thức và để bạn gọi AnalyserNode.getFloatFrequencyData() coi như "đã hiểu FFT". Series này đi ngược lại: mọi thuật toán — DFT ngây thơ, FFT radix-2, hàm cửa sổ, thiết kế FIR, biquad IIR — đều được tự viết bằng JavaScript thuần, có self-test verify bằng số thật, và chỉ dùng AnalyserNode đúng MỘT lần để đối chiếu kết quả FFT tự viết có khớp không. Bạn sẽ biết CHÍNH XÁC vì sao spectrogram trông như vậy, không chỉ biết cách gọi hàm ra nó.

Điểm khác biệt lớn nhất: toán ↔ đồ thị ↔ âm thanh luôn cập nhật đồng thời. Kéo một pole lại gần vòng tròn đơn vị và NGHE tiếng cộng hưởng rít lên trên nhạc thật; đổi bit depth và NGHE nhạc vỡ dần theo đúng công thức SQNR; kéo tần số qua ngưỡng Nyquist và NGHE tiếng gập phổ (aliasing) xảy ra ngay trước tai bạn.

📡

Về Series này

Xương sống của series là DSPJS — thư viện DSP mini tự xây dần qua từng bài (blog/dsp/dsp-core.js): bộ sinh tín hiệu (Bài 1) → tích chập (Bài 4) → DFT/FFT (Bài 5–6) → cửa sổ (Bài 7) → thiết kế FIR (Bài 9) → biquad IIR (Bài 11) → resampling (Bài 12). Cột mốc trung tâm là Pole–Zero Filter Lab (Bài 10): kéo-thả pole/zero trên mặt phẳng z, nghe filter đổi tính cách tức thì qua AudioWorklet thời gian thực.

Trước khi bắt đầu

📚 Điều kiện tiên quyết
Nên có: Series Web Audio (AudioContext, nghe/đo thực hành — dùng liên tục từ Bài 1), Series Điện Tử (mạch lọc analog RC — đối chiếu bộ lọc tương tự với bộ lọc số ở Bài 9–11). Không bắt buộc phải học trước Series Hệ Thống Nhúng — chỉ Bài 14 (cross-over DSP↔VMCU) mới cần tới, được nhắc lại ngắn gọn khi tới đó.

Bảng thuật ngữ nền tảng (Glossary)

Thuật ngữ Dịch nghĩa Định nghĩa ngắn gọn
x[n] Tín hiệu rời rạc Tín hiệu chỉ tồn tại tại các chỉ số mẫu nguyên n, khác x(t) liên tục.
Aliasing Gập phổ Hiện tượng tần số cao "giả trang" thành tần số thấp khi lấy mẫu không đủ nhanh.
Lượng tử hoá Quantization Làm tròn biên độ liên tục về một số hữu hạn mức rời rạc, sinh ra sai số lượng tử.
LTI Hệ tuyến tính bất biến thời gian Hệ thỏa cả tính tuyến tính lẫn bất biến theo thời gian — đặc trưng hoá trọn vẹn bởi đáp ứng xung.
Tích chập Convolution Phép toán "lật-dịch-nhân-cộng" mô tả đầu ra của mọi hệ LTI theo đáp ứng xung của nó.
DFT / FFT Biến đổi Fourier rời rạc / nhanh Chuyển tín hiệu từ miền thời gian sang miền tần số; FFT là thuật toán O(N log N) tính DFT.
Rò rỉ phổ Spectral leakage Năng lượng "lem" sang các bin tần số lân cận khi khung tín hiệu không chứa số nguyên chu kỳ.
Spectrogram Phổ theo thời gian Biểu diễn năng lượng tần số thay đổi theo thời gian, dựng từ nhiều khung STFT chồng lấp.
FIR / IIR Filter đáp ứng xung hữu hạn / vô hạn FIR không hồi tiếp (luôn ổn định, có thể linear phase); IIR hồi tiếp (hiệu quả hơn, có thể mất ổn định).
Pole / Zero Điểm cực / điểm không Vị trí trên mặt phẳng z quyết định hình dạng đáp ứng tần số và tính ổn định của filter.
Biquad Filter bậc 2 Khối filter IIR 2 cực/2 không, đơn vị xây dựng cơ bản của mọi EQ số hiện đại.
Resampling Đổi tần số lấy mẫu Chuyển tín hiệu từ tần số lấy mẫu này sang tần số khác bằng decimation/interpolation có lọc.

Danh sách 15 bài học trong lộ trình

Lộ trình chia 4 chặng: tín hiệu & nền tảng → miền tần số → filter & đa tốc độ → thực chiến & capstone. Các bài sẽ được mở khoá dần khi xuất bản.

Chặng 1 — Tín hiệu & nền tảng
01

Tín hiệu là gì: từ liên tục đến số

x(t) vs x[n], tín hiệu cơ bản (xung, bậc thang, sine, chirp, nhiễu), năng lượng vs công suất, chu kỳ rời rạc. Demo: Signal Generator Playground — chọn/ghép tín hiệu, vẽ + nghe ngay.

02

Lấy mẫu, Nyquist & Aliasing

Định lý Nyquist–Shannon, phổ gương, tần số gập, aliasing đời thực. Demo: Aliasing Stroboscope kéo tần số qua Nyquist thấy + nghe alias gập xuống.

03

Lượng tử hoá & dải động

Bit depth, LSB, sai số lượng tử, quy tắc ~6dB/bit, SNR, dithering. Demo: kéo bit depth 16→8→4→2 nghe nhạc vỡ dần.

04

Hệ LTI, tích chập & đáp ứng xung

Tuyến tính + bất biến thời gian, tích chập y[n]=x[n]*h[n], đáp ứng xung đặc trưng hoá hệ LTI. Demo: convolution từng bước + reverb bằng impulse response phòng thật.

Chặng 2 — Miền tần số
05

DFT: cửa sổ nhìn sang miền tần số

DFT như phép "so khớp" sinusoid, bins, độ phân giải fs/N, đối xứng liên hợp. Demo: DFT Explorer — vẽ tín hiệu tuỳ ý, click 1 bin thấy đúng sinusoid nó đại diện.

06

FFT: thuật toán thay đổi thế giới

Radix-2 decimation-in-time, butterfly, bit-reversal, O(N log N). Demo: butterfly diagram tương tác + benchmark tốc độ DFT vs FFT thật.

07

Rò rỉ phổ & hàm cửa sổ

Vì sao chu kỳ không nguyên gây leakage; cửa sổ rect/Hann/Hamming/Blackman. Demo: hai tone sát nhau — đổi cửa sổ thấy tách được/không.

08

STFT & Spectrogram

Đánh đổi thời gian–tần số, khung chồng lấp, hop size. Demo: spectrogram 3 tông nối tiếp — kéo kích thước khung thấy trade-off thời gian/tần số sống.

Chặng 3 — Filter & đa tốc độ
09

Filter FIR: từ trung bình trượt đến windowed-sinc

FIR = tích chập với h[n] hữu hạn, sinc lý tưởng cắt bằng cửa sổ, linear phase. Demo: FIR Designer — kéo cutoff & số tap, thấy h[n] và đáp ứng tần số đổi trực tiếp.

10

Z-transform & mặt phẳng z

Hàm truyền H(z), pole/zero, ổn định ⟺ pole trong vòng tròn đơn vị. Ra mắt flagship: Pole–Zero Filter Lab — kéo pole/zero, nghe filter đổi tính cách tức thì.

11

Filter IIR & Biquad

Biquad Direct Form II Transposed, RBJ cookbook 7 loại filter, cascade & pitfall lượng tử hệ số. Demo: Biquad Cookbook Playground — kéo f0/Q/gain, pole/zero di chuyển live, nghe lọc nhiễu trắng.

12

Resampling & xử lý đa tốc độ

Decimation/interpolation lọc đúng cách, tỉ lệ hữu tỉ 44,1↔48kHz=160/147, ý tưởng polyphase. Demo: Resampler A/B — nghe và soi phổ đường "ngây thơ" (aliasing) vs "chuẩn" song song.

Chặng 4 — Thực chiến & capstone
13

Phát hiện cao độ: autocorrelation & tuner

Vì sao đỉnh FFT to nhất không phải pitch, autocorrelation qua FFT, YIN né octave error, nội suy parabol. Demo: Guitar/Voice Tuner chạy bằng mic thật, kim chỉ nốt + cent realtime.

14

DSP thời gian thực & trên phần cứng nhúng

Ngân sách thời gian thực, pitfall reset state gây click, fixed-point Q15 (mul/sat). Demo: A/B Float vs Q15 nghe + đo SNR thật, kéo block size xem latency đổi.

15

Capstone: Trạm Âm Thanh DSP hoàn chỉnh

Ghép noise gate → EQ 5 băng → soft-limiter thành 1 dây chuyền hoàn chỉnh — dự án tổng kết cả series. Demo: DSP Station — bật/tắt từng khối, chọn preset, nghe qua tín hiệu test hoặc mic thật.

Bình luận