Xây dựng chương trình xử lý âm thanh số - Pdf 33

Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
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
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 trong các phép xử lý như khử nhiễu, soạn thảo hay các hiệu quả
tạo độ vang, trễ ... 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á.
Hơn nữa, với âm thanh, chúng ta không chỉ quan tâm tới khả năng cảm
nhận một cách trung thực nhất âm thanh tự nhiên, mà ta còn hướng tới việc tạo
ra (hay tổng hợp) được những âm thanh mà ta mong muốn. Do đó, khi nói đến
âm thanh số thì cần thiết phải xét tới 3 khía cạnh:
 Các khuôn dạng lưu trữ âm thanh với các đặc tính riêng biệt. Đây là yêu
cầu trước tiên của bất kỳ quá trình thu thanh hay khi cần đọc dữ liệu để
phân tích. Cần phải hiểu rõ các đặc tính cả từng khuôn dạng thì mới có
thể lưu trữ một cách hiệu quả nhất.
 Thao tác với các tệp âm thanh qua một trình soạn thảo âm thanh với các

1
-2
-3
Hình 2.1: Tín hiệu số
Theo định nghĩa trên, tín hiệu có vai trò là vật mang thông tin. Nên tín
hiệu cần phải được xử lý sao cho có thể dễ dàng rút ra các thông tin mong muốn
hay lưu trữ thông tin một cách tối ưu. Cho nên việc phát triển các kỹ thuật cũng
như các hệ thống xử lý tín hiệu đóng vai trò hết sức quan trọng. Thông thường
các phép xử lý tín hiệu là các phép biến đổi tín hiệu thành dạng khác mong
muốn, tuỳ theo yêu cầu thu nhận thông tin từ tín hiệu đó. Ví dụ như việc lọc bỏ
nhiễu ra khỏi tín hiệu có ích, hay xác định thông số mang tin nào đó.
2. Xử lý tín hiệu số (DSP - Digital Signal Processing)
Xử lý tín hiệu được sử dụng trong rất nhiều lĩnh vực khoa học khác
nhau, và xử lý âm thanh là một trong số đó. Trong quá trình xử lý, các phép xử
lý DSP chuẩn cơ bản là: FFT, lọc, thiết kế các bộ lọc thời gian, decimation,
interpolation (nội suy), tích chập (convolution), ...
Các chức năng DSP (Digital Signal Processing) được thực hiện bởi
soundcard tương đương với một tập các khả năng của phần cứng tổng hợp âm
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
nhạc điện tử analog: trộn, lọc, điều chế tần số, biên độ... và nén. Tất cả các hiệu
quả được tạo ra bằng cách dùng bộ trễ tín hiệu như: vang, lặp.... đều có thể sử lý
bằng DSP. Sự khác nhau là DSP (cả phần cứng và phần mềm) có thể thực hiện
các chức năng trên dạng sóng số hóa. Nhiều soundcard có tích hợp DSP để tăng
tốc độ xử lý.
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 hoá 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 và biến đổi Z đó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.
2.1. Phép biến đổi Z
Nói chung, phép biến đổi Fourier là một công cụ mạnh để nghiên cứu tín

Côsi (Cauchy) về tích phân trên đường cong khép kín trên mặt phẳng phức:
I =
dzz
j
l

Γ
−1
2
1
π
(1.3)
trong đó Γ là đường cong khép kín bao quanh gốc toạ độ trên mặt phẳng z.
Kết quả là: I =
00
01

=
lv
lv
íi
íi
Bằng cách nhân hai vế của biến đổi z với z
l-1
/2πj, lấy tích phân quanh
gốc toạ độ và nằm trong vùng hội tụ, và sau đó can thiệp tích phân và tổng, ta
có biểu thức biến đổi z ngược như sau:
x(l) =
dzzzX
j

π
fn

Qua công thức trên, ta thấy phép biến đổi z là phép biến đổi Fourier của
tích tín hiệu này với một tín hiệu hàm số mũ r
-n
. Hơn nữa, phép biến đổi Fourier
của tín hiệu rời rạc là phép biến đổi z tính trên đường tròn đơn vị (|z| = 1 hay r =
1), với điều kiện miền hội tụ của phép biến đổi z phải chứa đường tròn đơn vị.
Hay nói cách khác, trên đường tròn đơn vị phép biến đổi z và Fourier là đồng
nhất.
X(f) = X(z) =


−∞=n
x(n).e
-2j
π
fn
với |z| = 1 (1.5)
So với phép biến đổi Laplace
Xét tín hiệu tương tự X
a
(t), phép biến đổi Laplace của tín hiệu này là:
X
a
(t) =


∞−

X
e
(s) =


−∞=

n
sTn
sa
s
eTnx
..
)..(

(1.6)
So sánh biểu thức này với biến đổi z của tín hiệu x(n) = x
a
(nT
s
), ta thấy
biến đổi Laplace của tín hiệu lấy mẫu là biến đổi z của tín hiệu số tương ứng và
được tính với z = exp(s.T
s
). Có nghĩa là: X(z) = X
e
(s) với z =
s
Ts
e

và N
2
là thời điểm mà trong đó tín hiệu tồn tại), thì hiện tượng trùm thời gian
giữa các phần của x
p
(n) sẽ không xảy ra, nghĩa là có thể dễ dàng lấy ra x(n) ban
đầu. Lúc này tín hiệu x(n) có độ dài là N với các mẫu từ M tới N-1 có giá trị
bằng 0.
Và ta quy ước: x
p
(n) = x((n))
N
.
Ta có các công thức biến đổi Fourier như sau:
X(k) =





−≤≤


=
l¹i cßn k víi0
10).(
1
0
N
n

p
(k) là các mẫu trên đường
tròn đơn vị của biến đổi z một chu kỳ của x
p
(n), hay biến đổi Fourier X(f) của
một chu kỳ của x
p
(n).
2.3. Lọc tín hiệu
Các bộ lọc được sử dụng để thay đổi giá trị tần số của âm thanh. Đây là
khâu xử lý cơ bản cho một chuỗi các bước xử lý âm thanh tiếp theo. Ví dụ như,
quá trình lọc có thể là gỡ bỏ nhiễu ra khỏi quá trình thu thanh hay tách biệt một
âm, giọng nào đó bằng cách chỉ cho các tần số xác định nào đó đi qua.
Chính vì vậy, lọc số là một ứng dụng quan trọng nhất của xử lý tín hiệu.
Các bộ lọc số đã dần dần thay thế các bộ lọc tương tự. Việc thiết kế các bộ lọc
số thực tế đều đi từ lý thuyết các bộ lọc số lý tưởng.
Các bộ lọc số tiêu biểu là:
 Bộ lọc số thông thấp (Low pass filter)
 Bộ lọc số thông cao (High pass filter)
 Bộ lọc số thông dải (Band pass filter)
 Bộ lọc số chắn dải (Band stop filter)
Trong đó, các bộ lọc được sử dụng để lọc tần số chính, nên tất cả các đặc trưng
của lọc tần số đều được cho theo đáp ứng biên độ.
2.4. 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

0
f
f
X(g)W(f-g)dg = X(f)*W(f) (1.11)
Trong đó X
N
(f), X(f), và W(f) là biến đổi Fourier tương ứng của x
N
(n), x(n), và
w(n).
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 và không để xảy ra hiện tượng trùm thời gian. Như
vậy, với những tín hiệu bất kỳ, do không có đủ thông tin để có thể chọn n
0
và N
một cách hợp lý thì sẽ không thể nhận được một kết quả phân tích tối ưu. Khi
đó tốt nhất ta nên xem xét ở khía cạnh tần số để xác định N.
2.5. 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ặt 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

0
N
k
X(k).W
N
-kn
với n = 0, 1, .., N-1
Cặp công thức trên là tương tự nhau, chỉ khác ở hệ số tỷ lệ
N
1
và dấu
của mũ của hệ số W. Như vậy, ta có thể dùng công thức tính FFT thuận để tính
FFT ngược bằng cách lấy liên hợp phức của cả hai vế công thức * và chuyển hệ
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
số tỷ lệ N sang trái:
N.x

(n) =


=
1
0
N
k
X

(k).W
kn
N

bước sau:
 Lấy liên hợp phức của X(k) bằng cách đổi dấu phần ảo của X(k).
 Tính FFT của dãy X(k) đã đổi dấu.
 Đổi dấu phần ảo của kết quả thu được, sau đó chia dãy cho hệ số tỷ lệ N
để có kết quả cuối cùng.
2.6. Cepstrum
Phép biến đổi tín hiệu sang dạng Cepstrum tương ứng là một phép biến
đổi homomorphic, phép giải các bài toán không tuyến tính bằng các công cụ
toán tuyến tính đã biết. Cepstrum là từ đảo của từ Spectrum (phổ) có nghĩa là
chúng ta đang tiếp tục thực hiện việc phân tích phổ nào đó trên một phổ tần số.
Khái niệm về Cepstrum là một phần cơ bản của lý thuyết trong các hệ thống
homomorphic cho quá trình xử lý tín hiệu.
Ngoài ra, ta có khái niệm: Cepstrum phức có nghĩa là biến đổi ngược
Fourier (hay Z) của logarit tự nhiên phức của phổ phức; và Cepstrum thực là
phép biến đổi của Fourier ngược của logarit thực của biến đổi Fourier của hàm
đó.
HÖ thèng
homomorphic
A F A
x(n) y(n)
x(n) y(n)
-1
Hình 2.2: Hệ thống xử lý Homomorphic
Ưu điểm của hệ thống xử lý này là thuật toán có thể được tách thành các
thuật toán mắc dây chuyền như trên. Trong đó, các khối A và A
-1
là các khối
nghịch đảo của nhau. Còn khối F là hệ thống tuyến tính, bất biến, hay nói chung
đó là một bộ lọc tuyến tính đơn giản.
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số

).
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 đó.
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.
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
Â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ố.
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

liệu cho các kênh trái và phải luân phiên 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.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.
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
TÝn hiÖu t­¬ng tù TÝn hiÖu sè
Hình 2.3: 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. 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 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à

TÝn hiÖu t­¬ng tù
Xung PWM
Hình 2.5: PWM
3.3. PCM (Pulse Code Modulation)
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
Đâ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.
TÝn hiÖu t­¬ng tù Xung PCM
Hình 2.6: PCM
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).
Khi xét tới âm thanh số, ta phải xét tới hiệu ứng “aliasing” bởi có thể có
nhiều sóng hình sin có thể phát sinh ra các mẫu như nhau nên có khả năng chọn
nhầm tín hiệu. Đối với quá trình thu thanh thì điều đó không quan trọng bởi một
bộ lọc thông thấp được kèm vào quá trình chuyển đổi số-tương tự sẽ gỡ bỏ các
thành phần tần số cao. Tuy nhiên, đó thực sự là một vấn đề trong quá trình tổng
hợp âm thanh số.
Thông thường, nên làm việc trên các tệp âm thanh với dạng dữ liệu

tin (header).
MID: là các tệp có đuôi .mid (Musical Instrument Data Interchange). Hỗ
trợ dữ liệu Standar MIDI File (SMF) trên hệ thống trang bị MIDI playback (với
một số khuôn dạng âm thanh tổng hợp).
Không có yêu cầu thiết lập đặc biệt nào đối với các bộ duyệt (browser)
các tệp âm thanh được lưu trữ trong một khuôn dạng đặc biệt với tần số lấy mẫu
và độ phân giải riêng biệt. Phần đuôi (phần mở rộng của tệp) và header của tệp
được chèn vào một cách tự động khi thực hiện lưu tệp, ngoài ra còn có các
thông tin bộ duyệt cần thiết để khởi đầu khi phát lại.
4.2. Chuyển đổi khuôn dạng
Có nhiều trình ứng dụng có thể chuyển đổi các tệp âm thanh số từ kiểu
này sang kiểu khác. Hầu hết các chương trình xác định khuôn dạng tệp âm
thanh qua phần mở rộng của tệp. Tuy nhiên, nên xác định qua các khuôn dạng
tệp. Các công cụ chuyển đổi có AWave và SoX.
AWave
Với một máy PC chạy Windows 95, AWave là một bộ chuyển đổi tệp
âm thanh. Nó không chạy trên Win 3.1 thậm chí với mã mở rộng win32. Nếu
chỉ có một máy tính cũ và bộ soạn thảo dạng sóng âm thanh không cho phép lưu
tệp âm thanh trong một khuôn dạng đặc biệt, tốt nhất nên dùng SoX.
SoX
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
SoX là viết tắt của Sound Exchange, bộ dịch tệp tổng hợp chấp nhận
nhiều khuôn dạng tệp khác nhau, bao gồm .au, .hcom, .raw, .st, .voc, .auto,
.cdr, .dat, .wav, .aif, .snd và các dạng khác. Các phiên bản của SoX tương thích
trên Unix và Dos. Nó xác định khuôn dạng tệp từ đuôi tệp song nó cũng tự động
xác định các đặc điểm. SoX cũng có thể chuyển đổi tần số lấy mẫu và các phép
xử lý hiệu ứng âm thanh. Ví dụ như chuyển tệp .au thành .wav với dòng lệnh
sau:
sox filename.au filename.wav
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số

Phần lớn các tệp Au chứa header như minh hoạ trên. Đặc biệt 4 bytes
đầu là “.snd”. Có nhiều tệp cũ hơn mà bản thân chúng định danh như dạng Au
(chúng sử dụng phần mở rộng .au), nhưng chúng không có phần header này.
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
Sau đây là một vài mã hoá dạng âm thanh được dùng cho các tệp Au.
Mã hoá Mô tả
1
8-bit µ-Law G.711
2 8-bit linear
3 16-bit linear
4 24-bit linear
5 32-bit linear
6 Floating-point sampled
7 Double-precision float sampled
8 Fragmented sampled data
10 DSP program
11 8-bit fixed-point samples
12 16-bit fixed-point samples
13 24-bit fixed-point samples
14 32-bit fixed-point samples
18 16-bit linear with emphasis
19 16-bit linear compressed
20 16-bit linear with emphasis and compression
21 Music kit DSP commands
23 ADPCM G.721
24 ADPCM G.722
25 ADPCM G.723.3
26 ADPCM G.723.5
27 8-bit A-Law G.711
Trong đó 3 dạng được sử dụng rộng rãi là: 8-bit µ-Law (thường được lấy

Độ dài Mô tả
19 Xâu ký tự định danh: Creative Voice File
1 Byte value 26 (MS-DOS end-of-file)
2 Kích thước tổng của header, thường là 26
2 Mã hoá phiên bản tệp: phần chính*256+phần phụ
2 Check value: 4,659 - phiên bản tệp
Khi cài đặt, do header có thể được mở rộng nên cần thiết bỏ qua bất cứ dữ liệu
nào mà nó có thể theo sau các thông tin chuẩn.
Các khối dữ liệu
Để xử lý một tệp Voc, cần phải đọc và xử lý các khối dữ liệu theo trình
tự mà chúng xuất hiện trong tệp. Có một vài trường hợp mà trong đó các khối
khác nhau có thể chỉ định cùng một dữ liệu; sự chỉ định đầu tiên thường gối lên
các phần tiếp theo.
Sau đây là khuôn dạng của một khối dữ liệu của tệp Voc:
Độ dài Mô tả
1 Dạng khối
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
3 Độ dài dữ liệu: n
n Dữ liệu
Các dạng khối quan trọng nhất là khối kết thúc (dạng 0), các khối mở
rộng (dạng 8 và 9), và khối dữ liệu âm thanh (dạng 1).
Khối kết thúc (dạng 0)
Khối kết thúc là một sự ngoại lệ cho khuôn dạng khối. Nó gồm một
byte 0 đơn, không gắn thêm trường độ dài. Khối này đánh dấu sự kết thúc của
tệp Voc.
Khối dữ liệu âm thanh (dạng 1)
Khối dữ liệu âm thanh bắt đầu với 2 bytes chỉ định tần số lấy mẫu và
phương thức nén. Tiếp theo đó là dữ liệu âm thanh thực sự. Mã hoá tần số lấy
mẫu được tính toán từ tần số lấy mẫu với công thức: 256 - (1,000,000/tần số lấy
mẫu).

thể được thay thế bởi các khối trầm (silence blocks), biểu thị một quãng trầm.
Dữ liệu của khối này chứa một số kích thước 2-byte biểu thị số các mẫu của
quãng trầm để sử dụng và 1 byte chứa mã tần số lấy mẫu. Theo lý thuyết, điều
này cho phép quãng trầm sử dụng một tần số lấy mẫu khác so với âm thanh.
Nhưng trong thực tế, tần số lấy mẫu được sử dụng ở đây nên đồng nhất với tần
số lấy mẫu của âm thanh trước đó.
Khối đánh dấu (dạng 4) (Marker Block)
Dữ liệu cho khối đánh dấu là một số kích thước 2-byte. Số này có thể
được sử dụng bởi các ứng dụng multimedia cho việc đồng bộ các sự kiện. Ví
dụ, một ứng dụng về sự trượt có thể thay đổi sự hiển thị mỗi lần nó thấy khối
đánh dấu để quá trình trượt ăn khớp với quá trình biểu diễn âm thanh. Các giá
trị trong khoảng 0 tới 65,536 được bảo lưu và không nên được sử dụng.
Khối văn bản (dạng 5) (Text Block)
Dữ liệu là một xâu ký tự dạng null-terminated của dữ liệu dạng ASCII.
Dạng này có thể được sử dụng để lưu trữ thông tin về quyền tác giả hay các dữ
liệu dạng văn bản khác.
Vòng lặp (dạng 6 và 7) (Repeat Loops)
Các khối dạng 6 và 7 được sử dụng để cài đặt vòng lặp trong một tệp
Voc. Khối dạng 6 được đặt tại phần đầu của phân đoạn được lặp, và khối dạng
7 đánh dấu sự kết thúc của vòng lặp. Dữ liệu cho dấu hiệu bắt đầu bao gồm một
số kích thước 2-byte chỉ định lượng thời gian thêm vào mà phân đoạn này nên
được lặp (một số đếm 0 có nghĩa là dữ liệu nên chỉ được phát một lần). Khối
kết thúc không có dữ liệu.
Khối mở rộng (dạng 8) (Extension Block)
Khối mở rộng dạng 8 không có trong các phiên bản trước đây của tệp
Voc. Nó đã được thêm vào để đáp ứng cho các tệp âm thanh dạng stereo. Khi
xuất hiện, nó luôn ở trước khối dữ liệu âm thanh dạng 1, và nó ghi đè lên tần số
lấy mẫu và thông tin nén trong khối dữ liệu âm thanh.
Sau đây là cấu trúc dữ liệu khối mở rộng dạng 8:
Độ dài Mô tả

các khối dạng 9. Tuy nhiên, do khối dạng 9 đưa vào một loạt các mã hoá
phương thức nén mới nên điều này không phải thường xuyên có thể thực hiện
được.
Sau đây là cấu trúc dữ liệu của khối mở rộng dạng 9:
Độ dài Mô tả
4 Tần số lấy mẫu
1 Số bits dùng cho mỗi mẫu
1 Số kênh truyền: 1- mono; 2 - stereo
2 Mã phương thức nén
4 Phần mở rộng
Đọc tệp Voc
Hiện nay, chỉ khối có giá trị trong khoảng từ 0 tới 9 là được định danh.
Đồ án tốt nghiệp Xây dựng chương trình xử lý âm thanh số
Do đó, nên bỏ qua bất cứ khối không được nhận dạng nào.
Khi đọc các khối, cần thiết phải quét qua các khối dữ liệu đầu tiên để
nhận được các tham số cần thiết về định dạng dữ liệu. Điều này chỉ có nghĩa là
quá trình đọc các khối kế tiếp cho tới khi tìm thấy một khối dữ liệu âm thanh
hay khối kết thúc. Và do có một chuỗi các dạng khối mà chúng có thể định rõ
các tham số về âm thanh, nên cần lưu lại các giá trị này để thiết lập.
Nói chung, việc đọc phần lớn các tệp Voc mà chúng chỉ chứa dữ liệu
PCM trở nên đơn giản hơn so với các tệp khác chèn thêm các khối trầm (silence
blocks), các khối không bị nén, và dữ liệu âm thanh thông thường cần được giải
mã. Để thực hiện việc đọc này, có thể quan sát dạng khối hiện thời và quyết
định, hoặc bỏ qua nó (nếu không chứa dữ liệu âm thanh), điền đầy vào bộ nhớ
đệm các mẫu 0 (đối với các khối trầm), hay yêu cầu dữ liệu từ bộ giải nén.
1.3. Wave/ Riff
Đây là dạng của Microsoft Windows. Các tệp Wave của Windows ứng
dụng cho cả 2 dạng tệp âm thanh nổi (stereo) và dạng đơn (mono) với một tập
các độ phân giải và tần số lấy mẫu. Kiểu tệp này cho phép sự định rõ RIFF
(Resource Information File Format), và cho phép thông tin phụ của người sử

RIFF Wave container, nên nó chỉ định khuôn dạng của dữ liệu âm thanh. Trong
một dạng container khác, nó có thể chứa các thông tin khác.
Cấu trúc tổng quát của một tệp Wave
Đây là khuôn dạng phổ biến nhất để lưu trữ âm thanh số trong thế giới
PC. Nó được thiết kế cho các ứng dụng multimedia chạy dưới Microsft
Windows. Tệp Wav lưu giữ các mẫu dạng sóng của một hoặc nhiều kênh theo
các tần số lấy mẫu. Tệp Wav tự mã hoá và mô tả dữ liệu của nó trong phần
mềm mà ta sử dụng. Nó không giới hạn độ dài tệp, có thể lên tới 4GB.
Một tệp Wave là một dạng đặc biệt của tệp Riff, và mọi tệp Riff đều bắt
đầu với các ký tự RIFF. Tiếp theo đó là 4-byte độ dài và mã định dạng. Tệp
Wav theo cấu trúc RIFF (Microsoft’s Resouce Interchange File Format), nên
cấu trúc gồm các phần nhỏ gọi là khúc (chunk). Có hai loại khúc được dùng
trong tệp .Wav: khúc dữ liệu (data chunk), như một định danh biểu diễn độ dài
và bản thân dữ liệu; và khúc định dạng (format chunk) chứa các dữ liệu mô tả
thông tin trong nó. Khuôn dạng chung tệp Wave như sau:
R I F F KÝch th­íc
W A V E Khóc fmt Khóc data
C¸c bytes kÝch th­íc
Hình 3.1: Khuôn dạng tệp Wave
Do có rất nhiều tệp Wave có cùng cấu trúc cơ sở này, nên nhiều chương
trình xử lý các tệp Wave giống như chúng có một header ấn định. Điều này tạo
thuận lợi cho việc viết các tệp Wave dài như khi chỉ viết các dữ liệu PCM và
thiết lập một cách thích đáng các trường kích thước. Sau đây là mô tả dạng tệp
Wave cơ bản:
Kích thước Mô tả
4 Dạng khúc: RIFF
4 Kích thước tệp tổng thể trừ 8
4 Dạng RIFF container: WAVE
4 Dạng khúc: fmt
4 Độ dài dữ liệu khúc định dạng: thông thường là 16

khúc yêu cầu ít nhất 8 bytes.
Khúc fmt
Khúc fmt chứa thông tin định dạng âm thanh hiện thời. Những nội dung
chính xác của sự thay đổi khúc fmt phụ thuộc vào phương thức nén. Bảng sau
chỉ ra khuôn dạng khúc fmt sử dụng cho dữ liệu PCM.

Kích thước Mô tả
2 Mã phương thức nén
2 Số kênh truyền
4 Số mẫu trong mỗi giây
4 Số bytes trung bình trong mỗi giây
2 Block alignement
2 Số bits cho mỗi mẫu
2 Số bytes của thông tin thêm vào
n Thông tin về bộ nén phụ

Trích đoạn Phỏt thanh 1 Thu thanh Phổ biờn độ Một vài trợ giỳp khỏc Đỏnh giỏ chương trỡnh Hướng phỏt triển
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status