Tải bản đầy đủ (.pdf) (80 trang)

Nhận dạng bản nhạc dựa trên việc phân tích ký âm

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (986.95 KB, 80 trang )

ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
1
LỜI CẢM ƠN


Đầu tiên em xin chân thành cảm ơn thầy Trần Minh Văn là giáo viên trực tiếp
hướng dẫn và tận tình giúp đỡ tạo mọi điều kiện để em hoàn thành tốt đồ án tốt
nghiệp này.
Xin chân thành cảm ơn đến tất cả quý thầy cô trong bộ môn, cũng như khoa
Khoa Nghệ Thông Tin và trường Đại học Nha Trang đã tận tình đào tạo trong những
năm qua.
Xin chân thành cảm ơn!
Nha trang, ngày 7 tháng 6 năm 2011
Sinh viên thực hiện
Trần Trung Triều.










ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
2

MỤC LỤC
Contents
PHẦN I : GIỚI THIỆU CHUNG 4



1. Giới thiệu chung 4

2. Đặt vấn đề 4

3. Chủ đề luận án 4

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

PHẦN II : CƠ SỞ LÝ THUYẾT 7

CHƯƠNG 1. LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ 7

1.1. Tín hiệu số 7

1.2. Xử lý tín hiệu số (DSP- Digital signal processing) 8

Chương 2. GIỚI THIỆU CHUNG VỀ ÂM THANH SỐ 18

2.1. Âm thanh và đặc tính của âm thanh 18

2.2. Âm thanh số 19

2.3. Định dạng dữ liệu 21

2.4. Khuôn dạng lưu trữ 23

Chương 3. KHUÔN DẠNG LƯU TRỮ TỆP ÂM THANH 29

3.1. File định dạng Wave (*.wav) 29


3.2. File định dạng MIDI (*.mid) 33

PHẦN III : GIẢI PHÁP XỬ LÝ 39

Chương 4. XÂY DỰNG CƠ SỞ DỮ LIỆU 39

4.1. Cơ sở lý thuyết 39

4.2. Cấu trúc file *.3t 40

4.3. Xây dựng cơ sở dữ liệu 41

Chương 5. BIẾN ĐỔI FFT VÀ PHÂN TÍCH PHỔ 44

5.1. Biến đổi FFT 44

ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
3
5.2. Phân tích phổ 46

Chương 6. RÚT TRÍCH KÍ ÂM VÀ NHẬN DẠNG TÊN BÀI HÁT 48

6.1. Rút trích kí âm 48

6.2. Nhận dạng tên bài hát 50

PHẦN IV: THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 56

Chương 7 . PHƯƠNG PHÁP THIẾT KẾ 56


7.1. Khái quát chức năng 56

7.2. Cơ chế thực hiện 56

Chương 8. CÀI ĐẶT CHƯƠNG TRÌNH 59

8.1. Truy cập file wave 59

8.2. Truy cập file midi 61

8.3. Cài đặt thuật toán FFT Cooley-Tookey 63

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

8.5. Nhận dạng bài hát 69

Chương 9. HƯỚNG DẪN SỬ DỤNG 71

9.1. Giao diện chương trình 71

9.2. Tùy chọn chức năng 74

ĐÁNH GIÁ CHƯƠNG TRÌNH 75

1. Đánh giá chương trình 75

2. Hướng phát triển 76

3. Kết luận 77


Phụ lục A. GIẢI THÍCH THUẬT NGỮ 79

Phụ lục B. TÀI LIỆU THAM KHẢO 80


ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
4

PHẦN I : GIỚI THIỆU CHUNG
1. Giới thiệu chung
Cùng với sự phát triển của cuộc cách mạng khoa học và công nghệ đang diễn ra một
cách sôi động, chúng ta đang tiến dần tới thế giới của sự số hoá. Với các ưu điểm của xử lý
số, nhanh gọn, chính xác với chất lượng cao, mọi lĩnh vực hoạt động của xã hội loài người,
nhất là các ngành trong các lĩnh vực giải trí, thông tin liên lạc, phát thanh truyền hình đều
tiến tới việc áp dụng một cách đồng bộ và có hiệu quả các công cụ cũng như các phép xử lý
số. Trong đó, âm thanh là một lĩnh vực đặc biệt quan trọng, đây là một phương thức dùng để
trao đổi cũng như cảm nhận tin, không chỉ là tiếng nói, bản nhạc mà đó là tất cả các âm mà
ta cảm nhận được trong cuộc sống hàng ngày, do đó, lĩnh vực về âm thanh không thể nằm
ngoài xu hướng phát triển chung mà còn cần sự nghiên cứu sâu hơn nữa.
2. Đặt vấn đề
Với âm thanh số, bằng việc lưu trữ âm thanh dưới dạng các dãy số, chúng ta đạt được
yêu cầu về tốc độ truyền cũng như về khối lượng lưu trữ và độ trung thực khi nó được phát
lại. Do vậy, ngoài các phương tiện sử dụng kỹ thuật số, như camera số, thiết bị ghi số, điện
thoại số với chất lượng cao, thì những âm thanh tương tự được ghi từ micro với các nhạc
cụ truyền thống đều được chuyển đổi sang dạng số hoá.
Về xử lý tín hiệu số, ngày nay các kỹ thuật xử lý tín hiệu số gần như đã được hoàn
thiện, cả về lý thuyết và ứng dụng thực tiễn, xử lý tín hiệu số ứng dụng của nó là hầu như ở
rất nhiều lĩnh vực, trong âm nhạc, quốc phòng an ninh, địa chất dự đoán động đất, …
Trước những nền tảng đã có, thì việc xây dựng các ứng dụng áp dụng kỹ thuật xử lý

tín hiệu số tác động lên file âm thanh số không phải là hiếm, nó đã được nhiều tổ chức, cá
nhân nghiên cứu và cũng đã cho ra trên thị trường nhiều phần mềm hữu ích phục vụ cho
một số công việc, chức năng cụ thể.
3. Chủ đề luận văn
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
5
Trên cơ sở lý thuyết đã có, nhận xét rằng nội dung một bản nhạc là bao gồm tập các
nốt nhạc (ký âm) được bố trí theo trật tự trong khuôn nhạc, kèm theo là những ký hiệu mô tả
cho giai điệu, nhịp, phách, của bản nhạc đó.


Hình minh họa: một bản nhạc gồm tập các nốt nhạc.
Dựa trên tập nốt nhạc trong bản nhạc, các nhạc cụ được dùng khi phát một bản nhạc
sẽ tạo thành một sóng âm thanh trong không khí mà tai người cảm nhận được, các thiết bị
điện tử dùng kỹ thuật lấy mẫu và lượng tử hóa lưu sóng âm đó vào trong máy tính.

Hình minh họa: file nhạc mô tả sóng âm của bản nhạc được phát.
Âm thanh đã được số hóa, bằng cách áp dụng các kỹ thuật xử lý tín hiệu số trên file
âm thanh này, phân tích ngược tìm lại các nốt nhạc của bản nhạc gốc ban đầu. Kết quả được
đem so sánh với cơ sở dữ liệu gồm các bản nhạc để tìm ra tên bài hát. Đây chính là nội dung
mà luận văn sẽ trình bày.
Vậy với đề tài: “Nhận dạng bản nhạc dựa trên việc phân tích ký âm” thì nhiệm vụ
chính là đi tìm hiểu lại các kỹ thuật xử lý tín hiệu số, và cấu trúc định dạng của một vài định
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
6
dạng âm thanh số được lưu trữ trong máy tính, ưu nhược điểm của chúng. Sau đó sẽ xây
dựng một chương trình sử dụng ngôn ngữ lập trình C#) nhận dạng một bản nhạc cụ thể.
Nội dung chính sẽ đề cập đến những phần sau:
- Xây dựng cơ sở dữ liệu bao gồm các file 3t từ file midi.
- Áp dụng kỹ thuật xử lý tín hiệu số (DFT), cụ thể dùng thuật toán biến đổi nhanh FFT,

tác động lên dữ liệu đầu vào là file thu âm, phân tích phổ đầu ra tìm tần số cơ bản.
- Nhận dạng tìm tên bài hát dựa trên cơ sở dữ liệu và mảng các tần số cơ bản thu được.











ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
7

PHẦN II : CƠ SỞ LÝ THUYẾT
CHƯƠNG 1. LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ
1.1. Tín hiệu số
1.1.1. Định nghĩa tín hiệu
Tín hiệu là biểu hiện vật lý của thông tin.Về mặt toán học tín hiệu được coi là hàm
của một hay nhiều biến độc lập.
Ví dụ: Tín hiệu âm thanh là sự biến thiên của áp suất theo thời gian P(t) hoặc cũng
có thể coi tín hiệu âm thanh là sự biến thiên áp suất theo không gian P(x,y,z).
1.1.2. Phân loại tín hiệu
a. Phân loại theo biến độc lập:
- Tín hiệu liên tục theo thời gian: là tín hiệu có biến thời gian liên tục (nhận mọi
giá trị trong một khoảng giá trị nào đó).
- Tín hiệu rời rạc: là tín hiệu có biến độc lập thời gian chỉ nhận một số giá trị(Ví
dụ: Các chỉ số thị trường chứng khoán, các số liệu khí tượng…). Nghĩa là tín hiệu có

thể biểu diễn bằng một dãy số, hàm tín hiệu chỉ có giá trị xác định ở những thời điểm
nhất định. Tín hiệu rời rạc (còn được gọi là tín hiệu lấy mẫu) thu được bằng cách lấy
mẫu tín hiệu liên tục.
b. Phân loại theo biên độ:
- Tín hiệu liên tục theo biên độ: là tín hiệu mà hàm biên độ nhận bất kỳ giá trị
nào. Ví dụ: Hàm x(t) = sin(t) nhận mọi giá trị trong khoảng [-1,1].
- Tín hiệu rời rạc theo biên độ hay còn gọi là tín hiệu được lượng tử hoá: là tín
hiệu mà hàm biên độ chỉ nhận các giá trị nhất định. Ví dụ: x(t) = 0 với t < 0 và x(t)
= 1 với t ≥ 0.
1.1.3. Định nghĩa tín hiệu số
Từ đó ta có định nghĩa tín hiệu số: Tín hiệu số (Digital Signal) là tín hiệu có biên độ
và thời gian rời rạc
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
8

t
x
3
2
-1
0
1
-2
-3

Hình 1.1 –Tín hiệu số

1.1.4. Hệ xử lý tín hiệu
− Một hệ thống xử lý tín hiệu sẽ xác lập mối quan hệ giữa tín hiệu vào và tín hiệu ra:
y = T[x].


Hình 1.2 –Mô hình một hệ xử lý
− Phân loại hệ xử lý theo tín hiệu vào và tín hiệu ra:
+ Hệ rời rạc: là hệ xử lý tín hiệu rời rạc.
+ Hệ tương tự: là hệ xử lý tín hiệu tương tự.
1.2. Xử lý tín hiệu số (DSP- Digital signal processing)
Xử lý tín hiệu số là việc xử lý trên những tín hiệu đã được biểu diễn dưới dạng chuỗi
số. Các phép xử lý DSP chuẩn cơ bản là : FFT, lọc, decimation, interpolation (nội suy),
convolution (tích chập),…
Việc phân tích và thiết kế của các hệ thống tuyến tính đã được thực sự đơn giản hóa
bởi các phép biểu diễn trong miền tần số của cả tín hiệu và hệ thống. Trong đó biến đổi
Fourier đóng vai trò quan trọng trong việc biểu diễn các tín hiệu và hệ thống rời rạc theo
thời gian.
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
9
1.2.1. Phép biến đổi Fourier với tín hiệu liên tục
Một tín hiệu liên tục được xây dựng trên cơ sở là tập hợp của các sóng hình sin có
tần số, và chu kỳ khác nhau. Phép biến đổi Fourier với tín hiệu liên tục là đi phân tích tín
hiệu tổng hợp này thành các thành phần tín hiệu cơ bản cấu thành nên chúng. Vì vậy với tín
hiệu liên tục tuần hoàn theo thời gian thì kết quả của phép biến đổi Fourier sẽ cho ra một
sóng hình sin có tần số tương ứng với tần số của tín hiệu đầu vào. Với tín hiệu liên tục
không tuần hoàn thì ta có thể xếp chồng tín hiệu không tuần hoàn để tạo thành một tín hiệu
liên tục tuần hoàn với chu kỳ là vô cùng lớn, vì thế kết quả của phép biến đổi Fourier bao
gồm nhiều các thành phần con, mỗi thành phần mang một tần số cơ sở, và khi ta kết hợp tập
các tần số cơ sở này sẽ cho ra lại tín liệu liên tục như ban đầu.

Hình 1.1: Kết quả phép biến đổi Fourier với tín liệu liên tục được biểu diễn sang miền tần số
Như vậy một tín hiệu liên tục bất kì có thể được phân tích thành những thành phần
tần số cơ bản cấu thành nên chúng, với tín hiệu số được lấy mẫu và lượng tử hóa từ tín hiệu
liên tục đó, thì cũng với phương pháp biến đổi Fourier trên tín hiệu số này ta cũng tìm được

những thành phàn cơ sở, sau đây sẽ nói cụ thể hơn về phép biến đổi Fourier tác động lên tín
liệu rời rạc
1.2.2. Biến đổi Fourier rời rạc (DFT - Discrete Fourier Transform)
Như ta đã biết thì DFT được sử dụng rộng rãi trong quá trình tính toán sự đánh giá
phổ, các hàm tự tương quan và việc cài đặt các bộ lọc số, . Đây là phép biến đổi Fourier
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
10
rời rạc của tín hiệu x(n) có độ dài hữu hạn và có trục tần số cũng được rời rạc hóa. Trong đó
tín hiệu x(n) có độ dài hữu hạn là tín hiệu có giá trị khác 0 trong một khoảng thời gian nào
đó và chúng bằng 0 trong khoảng còn lại.
Với x(n) được dùng như là một chu trình của tín hiệu, ta có thể xây dựng tín hiệu
x
p
(n) tuần hoàn với chu kỳ N bằng cách xếp chồng tuần hoàn x(n):
X
p
(n) =


−∞=
+
i
iNnx )(

Ta có các công thức biến đổi Fourier như sau:
 DFT: X(k) =






−≤≤


=
l¹i cßn k víi0
10).(
1
0
N
n
nk
N
NkWnx
(1.1)
 IDFT: x(n) =





−≤≤


=

l¹i cßn nvíi0
10).(
1
1

0
N
k
nk
N
NnWkX
N
(1.2)
Trong đó:
Ví dụ minh họa phép biến đổi Fourier rời rạc:
- Đầu vào phép biến đổi là tín hiệu rời rạc:

- Kết quả sau khi biến đổi Fourier được mô tả dưới dạng tập các sóng sin và cosin,
mỗi sóng sin, cosin đều có một tần số cụ thể:
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
11

Tóm lại, Phép biến đổi Fourier đã biến đổi một tín hiệu trong miền thời gian sang
miền tần số, dựa vào kết quả này mà tùy ứng dụng sẽ xử lý trên kết quả đầu ra theo mục
đích riêng nào đó. Ở đây chúng ta sẽ lấy ra tần số cơ bản của mỗi lần biến đổi Fourier.
1.2.3. Hàm cửa sổ
Như ta đã biết, phép biến đổi Fourier rời rạc DFT tác động trên tín hiệu có độ dài
hữu hạn, nên cần thiết phải hạn chế độ dài đối với các tín hiệu có độ dài vô cùng hoặc quá
lớn để có thể nghiên cứu phổ của chúng. Để làm điều này ta thường dùng hàm cửa sổ, tức là
nhân tín hiệu x(n) với cửa sổ w(n-n
0
) để nhận được một đoạn x
N
(n) trong khoảng n
0

tới
n
0
+N-1 để phân tích.
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
12
x
N
(n) = x(n). w(n- n
0
) =



−+≤≤
l¹i cßn nvíi0
1)(
00
Nnnnnx
(1.3)
Việc nhân tín hiệu với hàm cửa sổ theo thời gian tương đương với việc nhân chập
phổ của tín hiệu x(n) với phổ của cửa sổ:
X
N
(f) =

+1
0
0
f

f
X(g)W(f-g)dg = X(f)*W(f) (1.4)
Trong đó XN(f), X(f), và W(f) là biến đổi Fourier tương ứng của xN(n), x(n), và
w(n).
Một số hàm cửa sổ thường được sử dụng: cửa sổ Hamming, Blackman,…
Kết quả nhận được từ tín hiệu sau khi đã cho qua cửa sổ không những phụ thuộc vào
dạng cửa sổ mà còn phụ thuộc vào số điểm tín hiệu phân tích N, cũng như vị trí cửa sổ được
đặt ở đâu, tức là tìm n
0
phù hợp. Ta phải chọn vị trí cửa sổ sao cho cửa sổ bao trùm lên phần
quan trọng của tín hiệu và bỏ qua những chổ có biên độ nhỏ, và phải chọn N sao cho một
chu kỳ x
p
(n) là xấp xỉ của x(n) với sai số cho phép.
1.2.4. Phép biến đổi nhanh Fourier (FFT - Fast Fourier Transform)
Đây thực chất là DFT nhưng với một thuật toán nhanh, gọn và hiệu quả. FFT đã tạo
ra một bước ngoặc mới và thực sự đóng vai trò hết sức quan trọng trong việc phân tích, thiết
kế và thực hiện các thuật toán xử lý tín hiệu số cũng như tín hiệu tương tự. Tuy có nhiều
thuật toán tính FFT khác nhau, nhưng nguyên tắc chung của tất cả các thuật toán này là dựa
trên việc phân tích cách tính DFT của một dãy N số (gọi tắt là DFT N điểm) thành các phép
tính DFT của các dãy nhỏ hơn, trong đó số phép tính tỷ lệ với N.log(N).
Để đánh giá hiệu quả của thuật toán, ta sử dụng số phép tính nhân và cộng phức. Số
phép nhân và cộng phức liên quan trực tiếp đến tốc độ tính toán khi thuật toán được thực
hiện trên các máy tính hay là các bộ xử lý chuyên dụng.
1.2.4.1. Hiệu quả tính toán của FFT
Công thức tính DFT của dãy dài N:

ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
13
Qua đây ta thấy để tính mỗi giá trị DFT ta cần N phép nhân và cộng phức. Để tính

toàn bộ DFT ta cần phép nhân và cộng phức, hay nói cách khác công thức có độ phức
tạp O( ) do đó với các giá trị N lớn phương pháp tính trực tiếp sẽ tốn khá nhiều thời gian,
sau đây ta sẽ xem xét giải thuật để tính biến đổi Fourier rời rạc của tín hiệu rời rạc có chiều
dài N x(n) với độ phức tạp nhỏ hơn.

Đến đây nhận xét rằng ta gặp lại 2 bài toán tính biến đổi Fourier rời rạc của 2 dãy
con x(2r) và x(2l+1) với chiều dài N/2. Sử dụng các kỹ thuật đệ quy bài toán biến đổi
Fourier rời rạc sẽ được giải quyết với độ phức tạp O(NlogN) nhỏ hơn rất nhiều so với việc
ta tính toán trực tiếp công thức ban đầu độ phức tạp lên tới O( ).
1.2.4.2. Nguyên tắc của FFT
Nguyên tắc cơ bản mà các thuật toán FFT đều dựa vào là phân chia DFT N mẫu
thành các DFT nhỏ hơn một cách liên tục:
Với , đầu tiên ta phân chia DFT N mẫu thành các DFT mẫu, sau đó phân chia
DFT mẫu thành DFT mẫu và cứ tiếp tục như thế cho đến khi được các DFT dài N = 2.
Việc tính DFT nhỏ hơn rõ ràng sẽ cần ít phép tính nhân và cộng phức hơn.
1.2.4.3. Thuật toán Cooley–Tukey
Năm 1965, Cooley và Tukey đã tìm ra thuật toán tính DFT một cách hiệu quả gọi là
thuật toán FFT. Thuật toán Cooley-Tukey được sử dụng phổ biến. Nó đưa việc tính DFT
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
14
của dãy N=N1*N2 điểm về việc tính toán DFTs với kích thước nhỏ hơn là N1,N2, công
việc này được thực hiện một cách đệ quy.
Xuất phát từ công thức DFT ban đầu cho đầu vào là dãy N mẫu:


Chuyển việc tính toán DFT N điểm về 2 lần DFTs trên N/2 bằng cách chia dãy N
thành 2 dãy con có độ dài N/2, và một dãy sẽ chứa các mẫu có chỉ số chẵn n=2m, và mảng
còn lại chứa các mẫu ở vị trí chỉ số lẻ n=2m+1:

Với là những phần được xem như phần thực và phần ảo của đầu ra FFT tại mỗi mẫu

( ).
Tuy nhiên, do tính chất đối xứng của phép DFT ở đầu ra:

Cùng với tính chất ngược pha :
Nên suy ra công thức FFT mới:
(1.5)
Công thức (1.5) là phương pháp tính DFT một dãy N mẫu đầu vào, đây chính là công
thức tính nhanh FFT.
*Một ví dụ được biểu diễn dưới dạng sơ đồ hình bướm cho thấy rõ cách tính DFT theo công
thức (1.5), ví dụ tính DFT cho dãy 8 mẫu đầu vào:
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
15

Ví dụ 1.1 : FFT một dãy 8 mẫu
Thay vào việc tính DFT cho 8 mẫu đầu vào ta thay bằng cách tính nhanh FFT với 2 lần tính
DFT cho 8/2=4 mẫu. Lần DFT đầu tiên sẽ cho các mẫu chẵn như hình vẽ, kết quả đầu ra
được đặt tên là E[i], với i chạy từ 0 8/2-1=3, Lần DFT tiếp theo với đầu vào là các mẫu ở vị
trí lẽ, kết quả đầu ra là mảng O[i], với i: 0 3. Sau đó áp dụng công thức (1.5), tính kết quả
đầu ra của phép DFT cho mảng 8 mẫu đầu vào, thể hiện qua X[i], i:0 7
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
16

Mã giả của thuật toán được mô tả như sau:
Y
0, ,N−1
← ditfft2(X, N, s): DFT of (X
0
, X
s
, X

2s
, , X
(N-1)s
):
{
if N = 1 then
Y
0
← X
0
trivial size-1 DFT base case
else
Y
0, ,N/2−1
← ditfft2(X, N/2, 2s);
//DFT of (X
0
, X
2s
, X
4s
, )

Y
N/2, ,N−1
← ditfft2(X+s, N/2, 2s);
//DFT of (X
s
, X
s+2s

, X
s+4s
, )

// combine DFTs of two halves into full DFT:
for k = 0 to N/2−1
t ← Y
k

Y
k
← t + exp(−2πi k/N) Y
k+N/2

Y
k+N/2
← t − exp(−2πi k/N) Y
k+N/2

endfor
endif
}

1.2.5. Ứng dụng DFT phân tích phổ tín hiệu
 Khái niệm phổ tín hiệu:
Người ta chứng minh được rằng một tín hiệu bất kì có thể phân hủy hay tổng hợp từ
các sóng sin có biên độ và tần số khác nhau. Đặc trưng của các sóng sin được thể hiện bởi
tần số, biên độ và pha, vì vậy muốn thể hiện trên trục đồ thị tập hợp các sóng sin tương
đương với tín hiệu thì phải vẽ lên một trục tọa độ mà một cái là tần số còn cái kia là biên độ
hoặc pha, tín hiệu tương đương này người ta gọi là phổ biên độ (phổ) hoặc phổ pha. Trục f ở

đây thể hiện các tần số của sóng sin cần có để có thể tổng hợp ra một tín hiệu tương đương
với tín hiệu gốc theo phép biến đổi Fourier
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
17
Xét cho cùng phổ là một công cụ toán học như tích phân, đạo hàm đây là công cụ
dùng để giải quyết một số bài toán mà các công cụ truyền thống khó khăn trong việc sử
dụng. Chẳng hạn như trong bài toán phân tích phổ của tín hiệu âm thanh ta có thể rút trích
được biên độ, tần số cơ bản của một nốt nhạc được phát.
Như vậy dựa vào phổ của tín hiệu mà ta có thể rút trích một số thông tin cần thiết
phục vụ cho mục đích cụ thể nào đó.
 Ứng dụng DFT phân tích phổ của tín hiệu:
Để tìm phổ của tín hiệu (cả liên tục và rời rạc), ta cần phải biết giá trị của tín hiệu tại
tất cả các thời điểm. Tuy nhiên trong thực tế, do ta chỉ quan sát được tín hiệu trong một
khoảng thời gian hữu hạn nên phổ tính được chỉ là xấp xỉ của phổ chính xác. DFT được ứng
dụng rất hiệu quả trong việc tính toán phổ xấp xỉ này.
Trong thực tế, nếu tín hiệu cần phân tích là tín hiệu liên tục, trước hết ta cho tín hiệu
đó đi qua một bộ lọc chống chồng phổ rồi lấy mẫu với tần số Fs ≥2B , với B là băng thông
của tín hiệu sau khi lọc. Như vậy, tần số cao nhất chứa trong tín hiệu rời rạc là Fs/2. Sau đó,
ta phải giới hạn chiều dài của tín hiệu trong khoảng thời gian T0 = LT, với L là số mẫu và
T là khoảng cách giữa hai mẫu. Cuối cùng, ta tính DFT của tín hiệu rời rạc L mẫu. Muốn
tăng độ phân giải của phổ rời rạc, ta tăng chiều dài của DFT bằng cách bù thêm số 0 vào
cuối tín hiệu rời rạc trước khi tính DFT.











ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
18

Chương 2. GIỚI THIỆU CHUNG VỀ ÂM THANH SỐ

2.1. Âm thanh và đặc tính của âm thanh
2.1.1. Sóng âm và cảm giác âm
Khi một vật dao động về một phía nào đó, nó làm cho các lớp không khí liền trước bị
nén lại, và lớp không liền sau dãn ra. Sự nén và dãn không khí như vậy lặp đi lặp lại một
cách tuần hoàn nên đã tạo ra trong không khí một sóng đàn hồi. Sóng này truyền tới tai, nén
vào màng nhĩ khiến cho màng nhĩ cũng dao động với cùng tần số. Khi màng nhĩ dao động,
các vị trí phân biệt của màng nhĩ trên bề mặt giống như nó chuyển động về trước hay sau
đáp ứng với các sóng âm vào. Khi cùng một thời điểm, ta nghe thấy nhiều âm, thì mọi âm
thanh phân biệt này được trộn với nhau một cách tự nhiên trong tai giống như một hình mẫu
đơn của áp suất không khí thay đổi. Tai và óc làm việc cùng nhau để phân tích tín hiệu này
ngược lại thành những cảm giác về âm riêng biệt.
2.1.2. Độ cao của âm
Độ cao của âm là một đặc tính sinh lý của âm và nó phụ thuộc vào một đặc tính của
âm là tần số. Những âm có tần số khác nhau, tạo nên cảm giác về các âm khác nhau: âm có
tần số lớn gọi là âm cao hay âm thanh; âm có tần số nhỏ gọi là âm thấp hay âm trầm. Sự
cảm nhận về mức độ to nhỏ của âm thanh được gọi là cường độ (pitch). Và cường độ có liên
quan rất gần với một thuộc tính về mặt vật lý gọi là tần số (frequency).
2.1.3. Âm lượng của âm (độ to của âm)
 Năng lượng của âm
Giống như các sóng cơ học, sóng âm cũng mang năng lượng sóng tỷ lệ với bình
phương biên độ sóng.
Và cường độ âm chính là năng lượng được sóng âm truyền trong một đơn vị thời
gian qua một đơn vị diện tích đặt vuông góc với phương truyền (đơn vị W/m

2
).
Tuy nhiên, để cảm nhận một âm, ta không đánh giá qua giá trị tuyệt đối của cường
độ âm I, mà xét theo mức cường độ âm L.
Tức là: L(B) = lg(I/I
0
) , với I
0
là một giá trị chuẩn nào đó.
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
19
Thông thường, L lấy đơn vị là deciben (ký hiệu là dB). Với L=1dB (I lớn gấp 1,26
lần I
0
) là mức cường độ nhỏ nhất mà tai ta có thể phân biệt được.
 Âm lượng của âm
Để có thể tạo ra cảm giác âm, cường độ âm phải lớn hơn một ngưỡng nào đó. Với
các tần số trong khoảng 1000-5000Hz, ngưỡng nghe khoảng 10-12W/m
2
. Với tần số 50Hz
thì ngưỡng nghe lớn gấp 105 lần. Và mức âm lượng của âm phụ thuộc vào cả cường độ âm
và tần số.
2.1.4. Âm sắc của âm
Âm sắc là một đặc tính sinh lý của âm và nó được cấu thành trên cơ sở các đặc tính
vật lý của âm là tần số và biên độ. Đây là một đặc trưng riêng của từng nguồn phát âm. Khi
một nguồn phát ra một âm có tần số f
1
, thì đồng thời cũng phát ra các âm có tần số f
2
=2* f

1
,
f
3
=3* f
1

Âm có tần số f
1
gọi là âm cơ bản hay hoạ âm thứ nhất. Các âm có tần số f
2
, f
3
, gọi
là các hoạ âm thứ hai, thứ ba Tuỳ theo đặc tính của từng nguồn phát âm mà tạo ra các hoạ
âm khác nhau với biên độ hay khoảng kéo dài khác nhau. Do đó âm do một nguồn âm phát
ra là sự tổng hợp âm cơ bản và các hoạ âm. Nên, mặc dù có cùng tần số f
1
của âm cơ bản
nhưng đường biểu diễn không còn là một đường hình sin đơn thuần mà là một đường phức
tạp có chu kỳ.
2.2. Âm thanh số
Dạng chung nhất của các quá trình thu âm thanh số là dạng điều biến mã xung (PCM
- Pulse Code Modulation). Đây là dạng mà phần lớn các đĩa compact và các file Wave sử
dụng. Trong phần cứng thu thanh dạng PCM, một microphone chuyển dạng biến đổi áp suất
không khí (các sóng âm thanh) thành dạng biến đổi điện áp. Sau đó một bộ chuyển đổi
tương tự-số đo (mẫu hoá) dòng điện áp tại các quãng thời gian đều nhau. Ví dụ như, trong
một đĩa compact có tới 44,100 mẫu được lấy mỗi giây. Mỗi điện áp mẫu hoá nhận được sẽ
được chuyển đổi sang dạng số nguyên 16-bit. Một đĩa CD chứa 2 kênh dữ liệu: một cho tai
trái, và một cho tai phải (đối với âm thanh dạng stereo). Hai kênh được thu thanh độc lập,

được đặt theo cạnh (side) trên đĩa compact (dữ liệu cho các kênh trái và phải luân phiên
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
20
nhau trái, phải, trái, phải, ). Dữ liệu nhận được từ quá trình thu thanh PCM là một hàm
theo thời gian.
2.2.1. Nguyên lý
Về cơ bản, âm thanh tương tự và số là khác nhau, nên ta luôn bị mất thông tin khi
làm phép chuyển đổi giữa chúng. Khi được số hoá, sóng âm thanh được biểu diễn như là
một chuỗi các số (được gọi là các mẫu), mà chúng biểu diễn áp suất không khí hay tín hiệu
điện tại các thời điểm kế tiếp nhau theo thời gian. Khi mẫu hoá một tín hiệu tương tự, ta
luôn gặp phải 2 vấn đề: thứ nhất, mỗi giá trị kế tiếp trong dạng biểu diễn dạng số là một
quãng xác định nào đó của thời gian, và mỗi khối có một độ rộng xác định; thứ hai là các số
số hoá là rời rạc. Chỉ có một số xác định các độ cao có thể cho mỗi khối. Theo hình vẽ, ta
thấy độ cao các khối không ăn khớp với đường tín hiệu gốc.

TÝn hiÖu t−¬ng tù TÝn hiÖu sè

Hình 2.1 : Chuyển đổi tín hiệu sang dạng các mẫu số
Đây là hai lỗi cơ bản trong tín hiệu âm thanh số. Lỗi này có thể được kiểm soát bằng
cách thay đổi khuôn dạng chi tiết của dạng biểu diễn âm thanh, nhưng không thể loại bỏ
được hoàn toàn. Chính vì vậy, tuỳ theo ứng dụng ta sẽ phải chấp nhận một số lỗi nhất định.
Và các hệ số khác như kích thước dữ liệu hay tần số xử lý yêu cầu ta phải chấp nhận một sai
số lớn hơn từ một số nguồn để có thể giảm hơn nữa các sai số khác.
2.2.2. Tần số và cường độ
Tần số của một sóng hình sin là khoảng thời gian mà nó dùng cho một chu kỳ hoàn
chỉnh. Tần số được tính theo hertz (Hz), là số các chu kỳ hoàn chỉnh mà chúng xuất hiện
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
21
trong một giây. Tai người có thể nghe thấy các sóng hình sin có tần số dao động trong
khoảng 30 Hz tới 20.000 Hz. Những dao động trong miền tần số này gọi là dao động âm

hay âm thanh.
Chu kỳ (periodic) là nghịch đảo của tần số, là khoảng thời gian mà tín hiệu lặp lại
một cách chính xác. Mặc dù rất nhiều hàm toán học được sử dụng để làm việc với âm thanh
dựa trên các tín hiệu lặp một cách lý tưởng, đặc biệt là phép biến đổi Fourier, nhưng lại có
rất ít các âm thanh thực là thực sự tuần hoàn. Trong thực tế, tần số chỉ có ý nghĩa trực tiếp
cho các sóng hình sin.
Tuy nhiên, mọi âm thanh đều có thể làm vỡ thành một tập các sóng hình sin. Ta có
thể tạo bất cứ âm thanh nào bằng cách thêm vào một tập các sóng hình sin phù hợp, cũng
như có thể chia các âm thanh phức tạp thành các sóng hình sin riêng biệt, đơn giản.
Ngoài ra, trong quá trình thu thanh số hoá, cần chú ý tới biên độ đỉnh để có thể tránh
sự méo cắt (mà nó xuất hiện khi biên độ đỉnh vượt quá khuôn dạng lưu trữ) trong khi giữ tỷ
lệ tín hiệu/nhiễu ở mức cao nhất có thể.
2.3. Định dạng dữ liệu
Quá trình chuyển đổi âm thanh tương tự sang dạng âm thanh số cũng như việc lưu trữ
âm thanh số liên quan tới 2 vấn đề:
 Lấy mẫu (sampling): Quá trình lấy mẫu liên quan tới việc tính toán một cách tuần hoàn
tín hiệu tương tự, và sử dụng các mẫu này thay cho tín hiệu gốc trong quá trình xử lý.
 Lượng tử hoá (quantization): Quá trình xử lý các mẫu tương tự với độ chính xác không
xác định và làm tròn chúng.
2.3.1. PAM (Pulse Amplitude Modulation)
Trong thực tế, các bộ chuyển đổi DAC và ADC thường xuyên sử dụng dạng PAM
(Pulse Amplitude Modulation) như một khuôn dạng trung gian, trong đó âm thanh được coi
như một chuỗi các xung, và biên độ của mỗi xung (độ cao) biểu diễn độ mạnh của âm thanh
tại điểm đó.

ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
22
TÝn hiÖu t−¬ng tù Xung PAM

Hình 2.2: PAM

2.3.2. PWM (Pulse Width Modulation)
Ngoài ra, ta còn dạng biểu diễn khác là PWM (Pulse Width Modulation), cũng giống
như PAM, đây là dạng biểu diễn mỗi mẫu như một xung, nhưng nó sử dụng độ rộng hay
khoảng kéo dài của xung (thay cho biên độ) để biểu diễn độ mạnh của âm thanh.

TÝn hiÖu t−¬ng tù
Xung PWM

Hình 2.3: PWM
2.3.3. PCM (Pulse Code Modulation)
Đây là dạng biểu diễn mỗi mẫu như một chuỗi các xung, mà các xung đó biểu diễn
mã nhị phân (code binary) của nó. Nhưng biểu diễn dạng này rất khó xác định đâu là điểm
bắt đầu và kết thúc của mỗi mã. Tuy nhiên, không khó khăn để có thể khắc phục điều này,
ví dụ như ta có thể xây dựng các mã theo một dạng riêng để không có mã nào chứa 3 số 1
liên tiếp (111) và sau đó chèn 111 vào tín hiệu tại điểm bắt đầu của mỗi mã. Trong bộ nhớ
máy tính, các mã nhị phân liên tiếp được lưu trữ như các số. Thông thường, dữ liệu âm
thanh dạng PCM được lưu trữ với 8 hay 16 bits (1 hay 2 bytes) mỗi mẫu.
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
23
TÝn hiÖu t−¬ng tù Xung PCM

Hình 2.4: PCM
2.3.4. Tần số lấy mẫu
Nói chung, các hệ thống lấy mẫu âm thanh đều được đặc trưng bởi tần số lấy mẫu
(đơn vị: mẫu/giây hay Hz) (sampling rate), đây là số các mẫu được sử dụng để biểu diễn
một giây của âm thanh. Và Harry Nyquist (1889-1976) đã khám phá ra rằng, một tín hiệu
âm thanh đã được lấy mẫu có thể tạo lại một cách chính xác bất cứ âm thanh nào mà tần số
của nó nhỏ hơn một nửa tần số lấy mẫu. Do đó, một nửa tần số lấy mẫu thường xuyên được
tham chiếu như một giới hạn Nyquist (Nyquist limit).
Thông thường, nên làm việc trên các file âm thanh với dạng dữ liệu không nén. Một

khi đã nén, chương trình xử lý sẽ phải giải nén mỗi khi sử dụng, và với bất cứ lưu đồ (giải
thuật) nén nào cũng đều gây nguy hiểm tới chất lượng âm thanh, không kể đến thời gian
dùng để giải nén. Và phạm vi đề tài chỉ xử lý trên những file âm thanh dạng không nén.
2.4. Nhạc số
Nhạc số là một phần nhỏ nằm trong phạm vi định nghĩa của âm thanh số, nói đến âm
thanh số là đề cập đến tất cả các loại âm thanh trong tự nhiên mà đã được lưu trữ thành một
dãy số trong máy tính, còn nhạc số chỉ đề cập đến một loại âm thanh đó là âm nhạc, vì thế
âm thanh số có những tính chất thuộc tính gì thì nhạc số cũng được thừa hưởng những tính
chất thuộc tính ấy, như đã đề cập ở phần trên.
Một bản nhạc có thể được chơi bởi nhiều nhạc cụ tại cùng một thời điểm, tùy mỗi
nhạc cụ sẽ cho ra những âm thanh khác nhau, và các sóng âm thanh này xuất hiện tại cùng
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
24
một thời điểm trong một không gian giống nhau nên được tổng hợp lại với nhau tạo thành
sóng âm của bản nhạc hoàn chỉnh.
Ví dụ một bản nhạc chỉ gồm một nốt nhạc La kéo dài trong thời gian 2 (s) được chơi bởi hai
loại nhạc cụ: đàn ghi ta và kèn Harmonica, mỗi nhạc cụ chơi riêng rẽ tạo ra những sóng âm
như sau:
- Sóng âm được tạo ra bởi đàn ghi ta:

Phổ tần số tương ứng:

- Sóng âm được tạo bởi kèn Hermonica:
ĐỒ ÁN TỐT NGHIỆP NHẬN DẠNG BẢN NHẠC DỰA TRÊN PHÂN TÍCH KÝ ÂM
25

Phổ tần số tương ứng:

-Sóng tổng hợp khi cả hai thiết bị đàn ghi ta và kèn Hermonica phát nốt La như sau:


Và phổ tần số tương ứng:

×