Fourier transform, hay là sự giống nhau giữa music sheet và spectrogram

(Short time) Fourier Transform and Wavelet

(Short time) Fourier Transform and Wavelet

Đây có lẽ là hình minh hoạ rõ ràng nhất ý tưởng của Fourier transform và các khái niệm liên quan.

Đầu tiên, ta có tín hiệu nguồn trong miền thời gian là f\left(t\right). Với tín hiệu này, ta có thông tin đầy đủ về mặt thời gian (tại thời điểm t thì mức năng lượng tương ứng là f\left(t\right)).

Biến đổi Fourier của tín hiệu này là F\left(\omega\right) cho ta đầy đủ thông tin trong miền tần số, nhưng hoàn toàn không có thông tin gì về miền thời gian (với tần số \omega thì độ lớn của nó trong tín hiệu là F\left(\omega\right), nhưng ta không biết là tần số này xuất hiện vào thời điểm nào trong miền thời gian). Như vậy sau biến đổi Fourier, ta có thông tin trong miền tần số nhưng mất hoàn toàn thông tin về miền thời gian.

Đây chính là lúc mà Short-time Fourier transform (STFT) xuất hiện. Ý tưởng chính của STFT là “hi sinh” một ít thông tin về các tần số thấp trong miền tần số để có thêm thông tin về miền thời gian. STFT được biểu diễn bằng 1 hàm G\left(\omega,t\right) theo 2 biến là tần số \omega và thời gian t. Như vậy nhìn vào kết quả của STFT, ta có thể biết là tần số \omega xuất hiện vào thời điểm nào trong miền thời gian.

STFT phổ biến nhất là Gabor transform. Trong Gabor transform, ta chọn 1 hàm kernel (thông dụng nhất có lẽ là hàm Gaussian, trong xử lí tín hiệu số người ta gọi là filter), rồi trượt hàm kernel này trong miền thời gian, thực hiện phép convolution, rồi biến đổi Fourier. Như vậy mỗi filter được đặc trưng bằng 2 tham số là vị trí và độ rộng của filter đó trong miền thời gian (tương ứng với mean và variance nếu dùng Gaussian filter).

Như vậy sẽ dẫn đến câu hỏi là chọn vị trí và độ rộng của filter như thế nào cho hợp lí. Ta chọn tham số này dựa trên trade-off sau:

  • Độ rộng của filter càng lớn thì càng có thêm thông tin về tần số (thấp) nhưng mất thông tin trong miền thời gian (Hình STFT(b))
  • Độ rộng của filter càng nhỏ thì mất thông tin về tần số (thấp) nhưng có thêm thông tin trong miền thời gian (Hình STFT(c))

Trong xử lí tín hiệu số, có đến hàng trăm loại filter khác nhau đã được đề xuất, nhưng nói chung là không có rule of thumb. Tất cả đều phải được xác định thủ công dựa vào dữ liệu thực tế.

Để khắc phục trade-off này, người ta nghĩ ra wavelet. Ý tưởng chính của wavelet là chia miền tần số ra thành nhiều vùng và sử dụng nhiều filter với độ rộng khác nhau. Filter có độ rộng nhỏ thì chỉ bắt được các tần số cao, nhưng lại cung cấp thông tin đầy đủ trong miền thời gian. Filter có độ rộng lớn thì bắt được tần số thấp nhưng lại mất thông tin về miền thời gian. Vậy nên một cách nôm na, Wavelet transform chia miền tần số ra thành nhiều vùng. Trong vùng tần số cao (do dùng filter hẹp) ta có đầy đủ thông tin hơn về miền thời gian, ngược lại trong miền tần số thấp (filter rộng), ta mất thông tin về miền thời gian nhưng lại có thêm thông tin về các tần số thấp.

Những phép biến đổi trên dây đều hết sức kinh điển. Ngay từ đầu thế kỉ 20 chúng đã có những nghiên cứu và ứng dụng rộng rãi, đặc biệt là trong công nghệ radar phục vụ chiến tranh. Đến thời của khoa học máy tính thì các phép biến đổi này tiếp tục được ứng dụng trong xử lí ảnh và xử lí âm thanh. Về mặt bản chất thì rõ ràng ảnh và âm thanh đều là tín hiệu số, nên không có gì đáng ngạc nhiên khi các phép biến đổi trên được “tái sử dụng”. Chẳng hạn những người đã học xử lí ảnh chắc sẽ biết Haar-like features, từng được dùng rất thành công cho bài toán face recognition (trước thời của deep learning, of course). Nguồn gốc của Haar-like features thực chất là từ Haar filter dùng trong STFT, chỉ khác là khi dùng cho xử lí ảnh, Haar filter được phát triển lên thành toán tử 2 chiều.

Cũng tương tự như vậy, trong speech recognition, phương pháp rút trích đặc trưng được dùng cho đến tận ngày nay vẫn là STFT, nhưng với filter đơn giản hơn rất nhiều. Chẳng hạn trong MFCC features (đã thành chuẩn mực trong speech recognition), filter được chọn có độ dài cố định 25ms và được dịch mỗi bước có độ dài 10ms trong miền thời gian. Khi nào có thời gian ta sẽ điểm qua pipeline này.

Vậy spectrogram là gì? Spectrogram là kết quả của STFT. Theo đó nhìn vào spectrogram ta có thông tin cả về tần số và thời gian. Đây là dạng biểu diễn phổ biến nhất được các kĩ sư âm thanh (sound engineer) sử dụng. Các nhạc sĩ sử dụng máy tính ngày nay chắc hẳn đều rất quen thuộc với spectrogram.

Vậy spectrogram thì liên quan gì đến music sheet? Thực ra thì cả 2 đều thể hiện chung một lượng thông tin. Nhìn vào các nốt nhạc trong music sheet, ta biết là tại thời điểm t phải chơi nhạc với tần số \omega tương ứng với cao độ của nốt nhạc đó. Spectrogram cũng cung cấp thông tin y hệt như vậy, chỉ có điều music sheet được dùng để tạo ra âm thanh, còn spectrogram hay dùng để xử lí âm thanh đã tạo ra trước đó.

Khi nào có dịp, ta sẽ trở lại với định nghĩa hình thức và các công thức liên quan của Fourier transform, STFT, wavelet v.v…

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s