Cách đọc phổ FFT: hướng dẫn thực dụng
Tác giả WuTools editorial team · Cập nhật
Đồ thị FFT (Fast Fourier Transform) thoạt nhìn rối mắt — một đường cong nảy lên xuống, có những đỉnh nhọn rồi tụt dần dọc theo trục đo bằng hertz. Nhưng khi bạn hiểu mỗi đặc điểm thị giác tương ứng với điều gì trong tín hiệu thời gian, đồ thị này còn dễ đọc hơn cả waveform. Bài này giải thích FFT thực sự tính cái gì, cách đọc bin tần số, khác biệt giữa biên độ và công suất, các tín hiệu thực tế (sin, giọng nói, nhiễu) trông ra sao, và những núm điều chỉnh nào trong Spectrum Analyzer ảnh hưởng đến đặc điểm nào.
FFT thực sự cho ta thấy gì
FFT phân tích một đoạn tín hiệu hữu hạn thành tổng các sóng sin. Trục ngang là tần số (Hz). Trục dọc là biên độ (hoặc công suất) của mỗi thành phần tần số có trong đoạn đó. Nếu đoạn chứa sóng sin 440 Hz, đồ thị có một đỉnh nhọn cao tại 440 Hz. Nếu đoạn chứa nhiễu phẳng trên dải tần nghe được, đồ thị là một đường gần như phẳng từ 20 Hz lên đến tần số Nyquist.
FFT không cho biết mỗi tần số xuất hiện vào lúc nào — nó trung bình hoá toàn đoạn. Để xem các tần số biến thiên theo thời gian, bạn cần spectrogram (một chuỗi FFT xếp liên tiếp), thứ mà Waveform Viewer chồng lên trên tín hiệu thời gian.
Bin tần số và độ phân giải
FFT N điểm cho ra N/2 bin tần số riêng biệt giữa 0 Hz và tần số Nyquist (một nửa tần số lấy mẫu). Mỗi bin rộng fs/N hertz, nên FFT 4096 điểm tại 48 kHz cho khoảng 11,7 Hz mỗi bin. Nghĩa là hai sóng đơn cách nhau dưới 11,7 Hz sẽ rơi vào cùng một bin — chúng trông như một đỉnh duy nhất. Muốn tách ra phải tăng N (FFT dài hơn) hoặc giảm tần số lấy mẫu.
Có sự đánh đổi: FFT càng dài thì càng trung bình trên thời gian dài, các sự kiện nhất thời (transient) bị nhoè đi. Phân tích giọng nói thường dùng 1024–4096 điểm (khoảng 20–90 ms tại 48 kHz). Phân tích nhạc dùng 8192 điểm trở lên cho độ phân giải cao độ tốt. Phân tích rung động máy quay dùng 65536 điểm để tách các harmonic gần nhau.
Biên độ, công suất, và dB
Có ba quy ước trục dọc phổ biến. Biên độ là giá trị tuyến tính của mỗi thành phần; đỉnh cao lấn át, chi tiết nhỏ biến mất. Công suất là biên độ bình phương, làm các đỉnh cao càng nổi bật hơn. Decibel (20·log10(biên độ) hoặc 10·log10(công suất)) nén dải động: tỷ số biên độ 1000:1 trở thành khoảng cách 60 dB trên đồ thị — chi tiết nhỏ trở nên rõ ràng.
Khi làm việc với âm thanh, luôn dùng thang dB trừ khi bạn chỉ muốn tìm một âm cụ thể. Tai người nghe theo dB; mắt cũng đọc đồ thị dB tốt hơn. Mọi thông số kỹ thuật âm thanh (THD, sàn nhiễu, SNR) đều báo bằng dB.
Các mẫu hình cần nhận biết
Sóng sin thuần: một đỉnh cao, hẹp tại tần số tone. Nếu đáy đỉnh xoè rộng — đó là tạo hiệu ứng cửa sổ (xem mục dưới).
Giọng nói: một fundamental tại cao độ của người nói (~100 Hz nam, ~200 Hz nữ) cộng với chuỗi harmonic ở 2×, 3×, 4× tần số fundamental, suy giảm dần lên cao. Khoảng cách giữa các đỉnh chính là fundamental — cách nhanh để ước tính cao độ giọng. Hãy thử với Key Detector.
Nhiễu trắng: đường phẳng dao động trong vài dB suốt dải.
Nhiễu hồng (pink): đường giảm 3 dB/octave (10 dB/decade). Tín hiệu kiểm tra phổ biến cho âm học phòng.
Nhiễu điện lưới: đỉnh rất hẹp tại 50 Hz (Việt Nam, châu Âu, châu Á) hoặc 60 Hz (Bắc Mỹ), thường kèm các đỉnh phụ tại 100 Hz, 150 Hz, 200 Hz. Dây dài, nguồn rẻ tiền, ground loop là thủ phạm thường gặp.
Tín hiệu bị clip: cả rừng harmonic kéo dài lên trên fundamental. Dễ xác nhận vì waveform thời gian có đỉnh phẳng nhìn thấy được.
Reverb / room mode: đỉnh tần số thấp tại các tần số sóng dừng của phòng, thường dưới 300 Hz. Cao hơn baseline 5–20 dB.
Cửa sổ FFT — vì sao đỉnh có đuôi xoè
FFT giả định đoạn nó phân tích lặp lại vô hạn. Với hầu hết tín hiệu thực thì không, vì vậy biên đột ngột tạo ra hiện tượng spectral leakage — năng lượng của một âm đơn lan ra các bin lân cận thay vì tập trung tại một bin. Cách khắc phục là nhân đoạn với một cửa sổ thuôn (Hann, Hamming, Blackman, Kaiser, Flat-top) trước khi FFT, để biên giảm dần về 0.
Mỗi cửa sổ có sự đánh đổi khác nhau: Hann là mặc định hằng ngày — main lobe hẹp, side-lobe ổn. Blackman đổi main lobe rộng hơn lấy side-lobe thấp hơn (tốt khi tìm âm nhỏ gần âm lớn). Flat-top có main lobe rộng nhất nhưng độ chính xác biên độ tốt nhất — dùng khi cần đo chính xác chiều cao đỉnh. Rectangular (không cửa sổ) có main lobe hẹp nhất nhưng leakage nhiều nhất — chỉ hữu dụng khi đoạn là bội số nguyên của chu kỳ tone.
Trục tần số: tuyến tính hay logarit
Trục tuyến tính cho 0–10 kHz cùng độ rộng với 10–20 kHz. Sai cho phân tích thính giác: tai nghe cao độ theo logarit, nên 100 Hz và 200 Hz cách nhau một octave, còn 10000 Hz và 10100 Hz là một phân số nhỏ của nửa cung. Trên trục tuyến tính, vùng bass (chỗ hầu hết hành động âm nhạc xảy ra) bị ép vào 5% bên trái đồ thị.
Dùng tần số logarit cho mọi tác vụ âm thanh: phân tích giọng, nhạc, âm học phòng, máy trợ thính. Dùng tuyến tính cho thiết bị khoa học, phân tích rung động máy quay (cần thấy harmonic trục cụ thể), và tác vụ siêu âm. Spectrum Analyzer mặc định logarit vì lý do này.
Đọc sàn nhiễu
Đường baseline phẳng hoặc hơi dốc dưới mọi đỉnh là sàn nhiễu — bị giới hạn bởi quantization của ADC, nhiễu điện tử trong chuỗi ghi, và nhiễu môi trường. Khoảng cách của nó so với đỉnh (tính bằng dB) là dynamic range hay SNR của bản ghi. Lý thuyết với 16-bit là quanh −96 dBFS; với 24-bit là −144 dBFS. Sàn thực tế tệ hơn 20–40 dB do chuỗi analog.
Nếu âm bạn cần đo chỉ cao hơn sàn 10 dB, hãy tăng độ dài FFT, tăng gain (cẩn thận — clip phá phổ), hoặc trung bình nhiều FFT. Trung bình N FFT giảm sàn nhiễu 10·log10(N) dB mà không làm nhoè âm cần đo.
Công cụ liên quan
- Spectrum Analyzer — FFT trực tiếp với cửa sổ, độ dài, trục log/linear tuỳ chọn
- Waveform Viewer — Hiển thị thời gian song song với spectrogram
- Tone Generator — Tạo tone test sạch để kiểm tra cài đặt analyzer
- Key Detector — Phát hiện cao độ và tone nhạc từ chroma FFT
- Audio Equalizer — Định hình lại phổ sau khi bạn hiểu nó
Câu hỏi thường gặp
Vì sao sóng sin thuần của tôi trông như tam giác trên FFT?
Spectral leakage do dùng cửa sổ rectangular (không cửa sổ). Tần số tone có lẽ không nằm đúng tâm bin, nên năng lượng lan ra. Đổi sang cửa sổ Hann hoặc Blackman thì hình tam giác sẽ co lại thành đỉnh nhọn.
Khác biệt giữa spectrum và spectrogram?
Spectrum là một FFT — ảnh chụp nội dung tần số trên một đoạn thời gian. Spectrogram là nhiều FFT xếp liên tiếp khi thời gian trôi, thường vẽ dạng heatmap với trục X là thời gian, Y là tần số, màu thể hiện biên độ.
Làm sao tăng độ phân giải tần số mà không giảm độ phân giải thời gian?
Không thể — chúng tỷ lệ nghịch với nhau (kiểu nguyên lý bất định Heisenberg). FFT dài hơn cho bin tần số tốt hơn nhưng định vị thời gian kém hơn. Thoả hiệp là Short-Time Fourier Transform với cửa sổ chồng nhau, thứ mà hầu hết spectrogram dùng.
Vì sao FFT chỉ hữu dụng đến nửa tần số lấy mẫu?
Định lý Nyquist: tín hiệu lấy mẫu fs Hz chỉ biểu diễn được tần số đến fs/2. Mọi thứ trên đó bị aliasing — gập về tần số thấp hơn. FFT tôn trọng điều này; các bin trên N/2 là ảnh phản chiếu và bị bỏ.
Đỉnh tại 50 Hz nghĩa là gì?
Nhiễu nguồn điện lưới Việt Nam (220V/50Hz) lọt vào chuỗi ghi âm. Thường gặp với pickup single-coil của guitar, ground loop, nguồn USB rẻ tiền, hoặc laptop chạy điện AC. Hay kèm các harmonic nhỏ hơn tại 100 Hz, 150 Hz, 200 Hz.
Vì sao đồ thị FFT dùng dB thay vì phần trăm?
Dải động âm thanh thường 80–100 dB (tỷ số 10000:1 đến 100000:1). Trên thang phần trăm, mọi thứ dưới 1% biến mất, nhưng đó lại thường là cái bạn quan tâm (reverb phòng, harmonic méo, sàn nhiễu).
FFT có phát hiện được tín hiệu không dừng như tiếng nói?
Một FFT đơn sẽ làm nhoè tiếng nói — nó trung bình tất cả phoneme. Hãy dùng spectrogram (chuỗi FFT ngắn 20–40 ms) hoặc Key Detector phân tích từng frame.
Cửa sổ flat-top dùng để làm gì?
Đo chính xác biên độ của một âm cô lập. Cửa sổ flat-top có main lobe rộng (kém phân giải âm gần nhau) nhưng đỉnh phẳng (chiều cao đỉnh đo được bằng biên độ tone bất kể tone nằm đâu giữa các bin). Kiểm tra biên độ trên bench thường dùng flat-top.
