Phân tích phổ tần số

Một phần của tài liệu Nhận dạng bản nhạc dựa trên việc phân tích ký âm (Trang 66 - 69)

4. Phạm vi luận án Error! Bookmark not defined.

8.4. Phân tích phổ tần số

Chính vì bất cứ âm thanh nào cũng có thể làm vỡ thành các sóng hình sin nên ta có thể miêu tả dạng phổ tần số của âm thanh. Phổ tần số của âm thanh là một đồ thị với hai trục biên độ và tần số. Từ đồ thị này, ta có thể xác định được các tần số của âm thanh. Thông thường, tần số cơ bản cũng là tần số mạnh nhất mà nó xuất hiện trong âm thanh. Từ tần số cơ bản, ta có thể cảm nhận được cường độ âm thanh tổng thể. Hơn nữa, tần số của một âm phức tạp chính là tần số của một sóng hình sin với cùng một cường độ cảm nhận được. Tần số cơ bản này cũng là tần số của sóng hình sin mạnh nhất trong âm thanh. Vì vậy, ta có thể dự đoán được cường độ của âm thanh bằng cách đo phổ tần số và nhặt ra thành phần lớn nhất. Tuy nhiên, trong một số trường hợp, tần số cơ bản là rất trầm hay thậm chí là hoàn toàn biến mất, và chúng ta vẫn nghe thấy cùng một cường độ. Hơn nữa, nếu âm thanh chứa nhiễu thì tuỳ mức độ, ta rất khó xác định được các tần số âm thanh.

Trước hết, ta xét một tín hiệu được biểu diễn dưới dạng thời gian ( Tín hiệu thu âm của nốt La ). Đây là tín hiệu gốc chưa được xử lý:

Hình 8.1: Tín hiệu nốt La được thu âm trong miền thời gian.

Phổ tần số (hay còn gọi là phổ biên độ) của nó sau khi cho qua hàm cửa sổ kích thước 0.02*SamplingRate, đặt tại vị trí bao gồm các mẫu trong khoảng thời gian [0.1 , 0.12] (s) như sau:

Hình 8.2: Phổ tần số của tín hiệu gốc trong khoảng thời gian 0.1(s) đến 0.12 (s) Khi phân tích phổ tần số ở trên ta tìm được tần số có biên độ max là 430Hz, trong khi tần số cơ sở là 445Hz (tương ứng với nốt nhạc La), lý do có sự chênh lệch khi phân tích phổ là do hiện tượng bị méo bị tạo ra do các tần số có một số không nguyên các chu kỳ trong tín hiệu được phân tích. Nên hầu như các phép biến đổi, phân tích là sẽ không thể nhận được một phổ hoàn chỉnh. Thông thường, chúng ta quan tâm tới 2 khía cạnh:

- Biên độ chính xác tương ứng với tần số chỉ định. - Tần số của đỉnh hiện thời hiển thị trong phổ.

Ở đây ta chỉ đề cập đến việc tìm biên độ ứng với tần số cơ sở đã được tìm thấy, và cách tính được thực hiện như sau:

//---

//-PublicVar.spectrogram là kết quả đầu ra của phép biến đổi FFT //-PublicVar.sampleRate: Tần số lấy mẫu của file thu âm

double vtri = (f * PublicVar.spectrogram.Length) / PublicVar.sampleRate;

int vitri; //-Chỉ đến vị trí trong mảng spectrogram

if (vtri < ((int)vtri + 0.5)) vitri = (int)vtri;

else

vitri = (int)vtri + 1;

//-lấy thành phần biên độ tương ứng

double biendo = PublicVar.spectrogram[vitri]; //---

Như vậy việc phân tích phổ đã cho ra được một tần số cơ sở và biên độ tương ứng của nó.

Một phần của tài liệu Nhận dạng bản nhạc dựa trên việc phân tích ký âm (Trang 66 - 69)