Phân tích phổ âm

 01 Apr 2017

Bài viết này sẽ giới thiệu tổng quan về tiến trình xử lý tín hiệu số được gọi là Digital Signal Processing(DSP)

Tổng quan

Chuỗi thời gian (Time Series)
Với mục đích của bài viết thì ta có thể hiểu rằng chuỗi thời gian là tập của các giá trị mẫu được lấy từ hàm liên tục tăng đều theo thời gian trong một khoảng thời gian xác định. Ví dụ như bạn cứ cách mỗi phút đo nhiệt độ phòng một lần liên tục trong vòng 6 tiếng thì kết quả ta có được là một tập có 360 giá trị nhiệt độ phòng được đo và tập giá trị đó được xem như là một chuỗi giờ gian.

Tính toán
Trong DSP chúng ta thường nhân hai chuỗi thời gian lại với nhau. Khi ta lấy chuỗi thời gian nhân với chuỗi thời gian ta được một chuỗi thời gian mới cọi là .

Thường thì các công việc tính toán trong DSP không có gì phức tạp hơn việc lấy số trung bình trong chuỗi kết quả của tích hai chuỗi thời gian.

Cái gì, khi nào, tại sao
Vấn đề quan trọng trong DSP là bạn phải biết chúng ta cần nhân cái gì, khi nào thì nhân và tại sao phải nhân nó. Có một vài giải thuật DSP rất là phức tạp. Ví dụ như giải thuật Fast Fourier Transform (FFT) cực kỳ phức tạp với nhiều phép tính tổng tích (multiply-add operations).

Bây giờ chúng ta sẽ tập trung vào giải thuật Discrete Fourier Transform (DFT) ít phức tạp và dễ hiểu hơn(DFT và FFT cho ra kết quả giống nhau nhưng DFT chạy chậm hơn FFT).

Tốc độ của các phép toán tổng tích
Một vài DSP cần thực hiện một lượng cực kỳ lớn các phép toán tổng tích. Và để thực hiện DSP trong thời gian thực thì các thiết bị để thực hiện các phép toán đó phải cực kỳ nhanh.

Biểu đồ đường cong
Nếu bạn phát thảo chuỗi thời gian bằng đường cong trên đồ thị, chúng ta sẽ thấy rằng tổng giá trị chuỗi thời gian nằm phía trên đường nằm ngang bằng với tổng giá trị chuỗi thời gian nằm phía dưới.

alt text
Hình 1

Chu kỳ
Chu kỳ của chuỗi thời gian là một trong những cái mà tập các giá trị lặp lại theo thời gian. Bạn có thể thấy trong Hình 2 một tập giá trị được lặp lại khi di chuyển từ trái sang phải.

alt text
Hình 2

Nhìn lên Hình 2 ở trên ta thấy diện tích dưới đường cong gần như bằng 0 (giả sử lấy đường ngang làm 0, phía trên đường ngang có giá trị dương, phía dưới có giá trị âm).

Fourier Transform

Bất kỳ hàm có chu kỳ nào có thể được viết lại như tổng có thêm trọng số của hàm sin và cos của các tần số khác nhau.
Jean Baptiste Fourier

Có một quy trình toán học được biết với cái tên chuyển đổi Fourier, nó được dùng để chuyển đổi tuyến tính thông tin qua lại giữa hai miền khác nhau. Thông tin có thể hiểu như là tập các số phức trong một hoặc cả hai miền.

Các miền ở đây có thể đại diện cho nhiều thứ khác nhau. Ví dụ như ta có một miền đại diện cho các điểm ảnh(pixel) trong một tấm ảnh và có một miền khác đại diện cho các thao tác liên quan đến bức ảnh. Còn trong DSP, các miền thường được gọi là miền thời gian (time domain) và miền tần số (frequency domain).

Bình thường khi tính toán với miền thời gian và miền tần số, các giá trị trong miền thời gian là số thực trong khi đó giá trị trong miền tần số lại là số phức.

Miền thời gian và miền tần số
Vì mục đích nào đó mà bạn muốn biết thông tin trong miền thời gian, nhưng vì một mục đích khác bạn cũng cần thông tin trong miền tần số. Chuyển đổi Fourier cho phép bạn chuyển đổi thông tin qua lại giữa hai miền này theo ý muốn.

Ví dụ như bạn hoàn toàn có thể chuyển đổi thông tin từ miền thời gian sang miền tần số, sau đó thay đổi thông tin trong miền tần số và rồi chuyển đổi thông tin đã chỉnh sửa ngược lại sang miền thời gian.

Nếu bạn vẽ một đồ thị biểu hiện đượng điện áp ảnh hưởng đến cuộn dây loa theo thời gian trong một hệ thống âm thanh thì nó là một chuỗi thòi gian, là một thành phần trong miền thời gian.

alt text

Nếu bạn quan sát ánh đèn lên xuống trên bộ lọc tần số (Equalizer) khi đang chơi nhạc có nghĩa là bạn đang quan sát cùng một thông tin trong miền tần số. Thông thường ánh đèn phía beentrais đại diện cho tần số thấp hoặc bass trong khi đó ánh đền bên phải tượng trưng cho tần số cao hay treble. Thường thì nó có một thanh trượt tương ứng với mỗi nhóm cột sáng cho phép bạn áp dụng bộ lọc để nhấn mạnh một số phần của phổ tần số và làm giảm các phần các của phổ tần số.

Chuyển đổi thuận nghịch
Có hai dạng giống nhau của chuyển đổi Fourier, chuyển đổi thuận dùng để chuyển thông tin từ miền thời gian sang miền tần số còn chuyển đổi nghịch dùng để thông tin từ miền tần số về lại miền thời gian.

Chuỗi thời gian mẫu (Sample Time Series)
Lý thuyết của chuyển đổi Fourier được định nghĩa bằng cách áp dụng tích phân cho hàm liên tục. Trong thực tế, trong thế giới số, chúng ta hầu như không bao giờ xử lý các hàm liên tục. Thay vào đó chúng ta sẽ tính toán trên các chuỗi số rời rạc là kết quả của của một hệ thống đo lường rời rạc.
(Chúng ta từng có ví dụ ghi chép nhiệt độ căn phòng mỗi phút một lần trong 6 tiếng sẽ tạo ra một chuỗi số rời rạc)

Trong nhiều trường hợp, phép toán tích hợp trong tích phân có thể xấp xỉ bằng phép toán tổng hợp sử dụng dữ liệu rời rạc trong thế giới số. Đó là một trường hợp trong chuyển đổi Fourier. Như vậy, dạng tổng kết của phép chuyển đổi Fourier cho chuỗi thời gian ròi rạc được gọi là Discrete Fourier Transform (DFT)

FFT
DFT là hoạt động tính toán lớn. Dù với những hạn chế nhất định về số lượng giá trị trong chuỗi thời gian và số lượng tần số mà nó phân tích nhưng có lại đặc biệt có hiệu quả hơn về mặt kinh tế giải thuật chuyển đổi nhanh Fourier (Fast Fourier Transform , hoặc FFT) là một lựa chọn thay thế phù hợp.

DFT vs FFT Mặc dù DFT tổng quát hơn FFT nhưng FFT lại nhanh hơn DFT. Có một điều quan trọng phải hiểu rằng hai giải thuật này đơn giản là làm công việc như nhau, cùng tính ra một kết quả(nhưng FFT có hạn chế về mặt số lượng mẫu của miền thời gian và miền tần số).

Vì giải thuật DFT dễ hiểu hơn FFT nên chúng ta sẽ tập trung giải thích thuật toán DFT.

DFT
Sau đây là các biểu thức cần phải đánh giá để xác định nội dung phổ tần số của chuỗi thời gian tại tần số




Trước hết bạn cần nắm một vài thứ, Đầu tiên bạn có một chuỗi thời gian , bạn có thể xác định chuỗi thời gian có bao gồm thành phần hoặc tại tần số cách các bước sau:

  • Tạo một chuỗi thời gian mới , đây là một hàm với tần số .
  • ạo một chuỗi thời gian mới khác là một hàm với tần số .
  • Nhân với sau đó tính tổng của các kết quả và gọi nó là . Đây là ước tính của biên độ(nếu có) của thành phần với tần số phù hợp trong chuỗi thời gian .
  • Nhân với sau đó tính tổng của các kết quả và gọi nó là . Đây là ước tính của biên độ(nếu có) của thành phần với tần số phù hợp trong chuỗi thời gian .
  • Ta xem các giá trị là các phần thực và phần ảo của số phức.
  • Ta xem tổng của bình phương phần thực và phần ảo đại diện cho lũy thừa tại tần số trong chuỗi thời gian.

Về cơ bản thì chỉ có thế. Với mỗi tần số mà bạn quan tâm, bạn sẽ áp dụng quá trình trên để tính ra được một số phức đại diện cho thành phần của tần số trong chuỗi thời gian.

Tương tự, bạn cũng có thể tính được tổng bình phương của phần thực và phần ảo và coi đó là thước đo lũy thừa tại tần số đó trong chuỗi thời gian.
(Đây là giá trị được hiển thị bởi một trong những thanh sáng trên thiết bị lọc tần số.)

Thông thường chúng ta quan tâm nhầu tần số nên sẽ lặp lại các bước trên với mỗi tần số chúng ta quan tâm. (Điều này sẽ tạo ra các tập giá trị được hiển thị trên tất cả các cột sáng của bộ lọc tần số.)

Ta có một vài hệ thức lượng giác sau:



Mặc dù các hệ thức trên áp dụng cho tích của với góc , đây là hệ thức đơn gian để mở rộng và áp dụng cho tính toán với chuỗi thời gian gồm có hàm .

Tích của hàm
Với từng trường hợp ở dưới đây thì hàm là một chuỗi thời gian được tính bởi tích hai chuỗi thời gian khác là hàm và hàm



Sau đây chúng ta sẽ viết lại và đơn giản háo ba hàm bên trên trong trường hợp đặc biết là



Kết quả của tích hai hàm tại cùng một tần số
Giờ chúng ta hãy áp dụng các hàm trên, ví dụ như ta có một chuỗi thời gian cho hàm đầu tiên trong ba hàm trên. Trường hợp này là kết quả của hao hàm có cùng tần số, kết quả được hiển thị trong Hình 4.

alt text
Hình 4

Đường màu đỏ thể hiện hàm còn đường màu xanh là kết quả của phép nhân giữa .

Bây giờ nếu tính tổng giá trị của đường màu xanh với số chẵn chu kỳ thì tổng của nó sẽ khác 0 hay cũng có thể nói nó là một số dương.

Trở lại với biểu thức (phần ảo được tính bởi tích chuỗi thời gian với hàm và tổng của chúng). Nếu chuỗi thời gian có chứa thành phần có cùng một tần số với hàm thì thành phần đó sẽ đóng góp một giá trị khác không vào kết quả tổng. Vì vậy phần ảo của sự chuyển đổi tại tần số đó sẽ khác 0.

Kết quả của tích hai hàm tại cùng một tần số
Cũng như trên, bây giờ ta sẽ tính theo hàm thứ hai. Trường hợp này là kết quả của hao hàm có cùng tần số, kết quả được hiển thị trong Hình 5.

alt text
Hình 5

Đường màu đỏ thể hiện hàm còn đường màu xanh là kết quả của phép nhân giữa .

Bây giờ nếu tính tổng giá trị của đường màu xanh với số chẵn chu kỳ thì tổng của nó sẽ khác 0 hay cũng có thể nói nó là một số dương.

Trở lại với biểu thức (phần thực được tính bởi tích chuỗi thời gian với hàm và tổng của chúng). Nếu chuỗi thời gian có chứa thành phần có cùng một tần số với hàm thì thành phần đó sẽ đóng góp một giá trị khác không vào kết quả tổng. Vì vậy phần thực của sự chuyển đổi tại tần số đó sẽ khác 0.

Kết quả của tích hàm và hàm
Bây giờ sẽ tính tiếp hàm thứ ba là tích giữa hàm và hàm tại cùng một tần số. Kết quả đạt được như Hình 6.

alt text
Hình 6

Đường màu đỏ là hàm , đường màu xanh lá cây là hàm còn đường màu xanh dương là hàm tích giữa .

Nếu tính tổng giá trị của đường màu xanh dương với số chẵn chu kỳ thì nó sẽ bằng 0.

Vì vậy với chỉ đo thành phần trong chuỗi thời gian ở một tần số cụ thể và với chỉ đo thành phần trong chuỗi thời gian có cùng tần số.

Biểu thức không cho ra kết quả khác 0 do thành phần trong chuỗi thời gian có cùng tần số. Biểu thức cũng không cho ra kết quả khác 0 do thành phần .

Do đó, ở một tần số cụ thể thì sự tồn tại của thành phần trong chuỗi thời gian tạo ra kết quả thực, còn thành phần tạo ra kết quả ảo.

Thực tế thì thành phần tạo bởi chuỗi thời gian sẽ không phải là hàm hay . Nó chỉ có hình dạng giống nhau nhưng tại một điểm xác định thì sẽ có giá trị khác nhau. Tuy nhiên nó chỉ ra rằng các hàm dạng hình có thể được đại diện bằng tổng của hàm có biên độ khác nhau.

Ở trên ta đang xét trên điều kiện là tần số của , khớp với tần số của , trong chuỗi thời gian. Vậy nếu như tần số không khớp nhau thì sao ?

Ta xem lại các biểu thức ở trên:



Chúng ta thấy khi a khác b thì kết quả của tích hai hoặc sẽ là tổng của hai hoặc khác. Tổng giá trị qua số chẵn chu kỳ luôn luôn bằng 0.

Với mỗi cặp giá trị , thì tần số của hàm dạng sin trong hàm kết quả sẽ là .
(Chúng ta thường gọi là tần tổng và tần số khác nhau)

Thực tế thì nếu tần số tổng và tần số khác nhau không phải là bội của nhau thì ta sẽ không thể phân tích trên số chẵn chu kỳ của đường hình sin. Do đó một hoặc cả hai sẽ góp một lượng nhỏ giá trị cho tổng của kết quả trong một chu kỳ, ta gọi đây là một dạng lỗi đo lường xảy ra khi thực hiện phân tích phổ tần số dùng phương pháp chuyển đổi Fourier.

Bây giờ chúng ta xem kết quả của việc nhân hai hàm có tần số khác nhau là vả .

alt text
Hình 7

Xét từ Hình 7, phân tích kết quả từ -7 đến 7 với chính xác là 9 chu kỳ của thành phần tần số cao. Vì vậy các thành phần này đóng góp rất ít(hoặc không) đến kết quả. và nếu chúng ta nhìn tổng thể thì có ít nhất 1 chu kỳ hoàn chỉnh của tần số thấp, nó góp phần đưa ra kết quả bị lỗi đo lường

Nguồn
Fun with Java, How and Why Spectral Analysis Works
Phân tích Fourier

Tag:

DSP algorithm