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 (853.9 KB, 156 trang )
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
− Âm tiết tiếng Việt tương đối cách biệt : trong tiếng Việt các âm của các từ trong
một câu phát âm hầu như tách biệt nhau, nghĩa là các từ đó được phát âm hoàn toàn độc lập,
không có hiện tượng đọc nối nhau như trong tiếng Anh.
− Tiếng Việt tương đối nhất quán giữa cách phát âm và cách viết : nguyên tắc chính
của chữ viết tiếng Việt là ký âm, nghĩa là đọc sao viết vậy. Nhưng sau các cuộc nghiên cứu
trên tiếng Việt đã chỉ ra một số bất đồng trong hệ thống chữ viết, mặc dù vậy, nhìn chung
tiếng Việt vẫn nhất quán giữa đọc và viết.
− Hiện tượng môi hóa : trong tiếng Việt có một số âm môi như ô, u. Các phụ âm
đứng trước các âm này sẽ bị hiện tượng biến đổi sóng âm, gọi là hiện tượng môi hóa. Ví dụ :
trong các từ bu, tô thì phụ âm b, t sẽ phát âm khác đi so với đứng trong các từ khác.
2. Hệ Thống Ngữ Am Tiếng Việt :
2.1. Khái niệm :
Chuỗi lời nói con người được phân chia thành nhiều đoạn nhỏ như câu, cụm từ, từ,…
và cuối cùng là âm tiết. Âm tiết là đơn vị phát âm nhỏ nhất, không phân chia được nữa dù
nói chậm đến đâu (mà vẫn giữ đúng ý nghĩa âm tiết đó).
Mỗi âm tiết bao gồm nhiều yếu tố ngữ âm tạo thành và các yếu tố ngữ âm hầu như
phát âm cùng lúc để tạo nên đúng âm tiết đó. Bên cạnh đó, người ta còn xem âm tiết bao
gồm nhiều yếu tố đoạn tính – là các yếu tố có giới hạn phân đoạn trong âm tiết như phụ âm,
nguyên âm và âm đệm – và các yếu tố siêu đoạn tính – là các yếu tố không có giới hạn trong
âm tiết như ngữ điệu, thanh điệu.
Đặc điểm riêng của âm tiết tiếng Việt là đơn âm và mang thanh điệu.
2.2. Cấu trúc âm tiết tiếng Việt
Thanh Điệu
Phần vần
Am Đầu
Am đệm
Âm chính
Âm cuối
Một âm tiết tiếng Việt gồm 3 phần :
− Thanh điệu : là yếu tố luôn có mặt trong mọi âm tiết tiếng Việt.
− Âm đầu : yếu tố mở đầu âm tiết, thường độc lập với phần còn lại.
− Phần vần : gồm 3 phần :
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 59
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
− Âm đệm : là một bán nguyên âm chiếm vị trí trung gian giữa phụ âm đầu và phần
vần. Có thể có hay không trong âm tiết. Tiếng Việt có hai âm đệm là [o] và [u] được phát
âm tương đối giống nhau.
− Âm chính : là một nguyên âm (đơn hay đôi), luôn có mặt trong âm tiết, giữ vai trò là
đỉnh của âm.
− Âm cuối : là phụ âm hay bán nguyên âm để kết thúc âm tiết. Tiếng Việt có hai bán
nguyên âm cuối là [i] và [u].
a). Thanh điệu:
Có 6 thanh điệu : ngang, huyền, sắc, hỏi, ngã, nặng.
Trong âm tiết, hầu như thanh điệu không ảnh hưởng đến phụ âm đầu. Thanh điệu thể
hiện rõ nhất ở cuối âm tiết. Trong các âm tiết không có âm cuối hoặc kết thúc bằng phụ âm
cuối vang hay bán nguyên âm thì các đặc trưng của âm điệu được thể hiện rõ ràng (VD : la,
là, l, lã, lá, lạ). Còn các âm tiết kết thúc bằng phụ âm cuối tắc, vô thanh (p,t,c) các thanh
điệu rất khó thể hiện (VD : cáp, cạp nhưng không có , càp, cp, cãp).
b). Phụ âm :
Phụ âm đầu có thể không có trong âm tiết. Trong tiếng Việt có một số phụ âm viết
khác nhau như có cùng một cách đọc :
VD : − c,k,q : cùng phát âm là /k/.
− g, gh : cùng phát âm là /g/.
− ng, ngh : cùng phát âm là /ng/.
Phụ âm "q" không xuất hiện riêng lẻ mà kèm với âm đệm "u" để tạo phụ âm "qu"
đọc là /kw/.
Các phụ âm "g" và "gh", "ng" và "ngh" ở thế đối lập bổ sung tức là nguyên âm nào
không kết hợp được với phụ âm này thì kết hợp được với phụ âm kia.
Các phụ âm chỉ có một cách biểu diễn duy nhất và không thể tách rời ra được. VD :
"gi", "gh", "ng", . không thể ghép lại bằng các âm của từng ký tự riêng biệt mà phi phát âm
một cách duy nhất.
Phụ âm làm phụ âm cuối phát âm hoàn toàn với lúc làm phụ âm đầu. Có 8 phụ âm vừa
có thể làm phụ âm đầu vừa có thể làm phụ âm cuối là {c, ch, m, n, ng, nh, p, t} và được chia
ra làm 2 loại :
Loại vang (hữu thanh) : m, n, nh, . khi các phụ âm này làm âm cuối thì nguyên âm
đứng trước nó phát âm bình thường, không bị nén hay ngắt lại
Loại tắc (vô thanh) : p, t, c, . khi các phụ âm này làm âm cuối thì nguyên âm đứng
trước nó phát âm bị nén hay ngắt lại.
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 60
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
BẢNG PHỤ ÂM TIẾNG VIỆT
b
c
ch
d
đ
g
gi
gh
h
k
kh
l
m
m
nh
ng
ngh
p
ph
q
qu
r
s
t
th
tr
x
v
c). Nguyên âm :
Là thành phần không thể thiếu trong tiếng Việt. Nó được dùng làm âm chính. Khi
làm âm chính, nó kết hợp với các âm đệm và âm cuối (có thể không có) tạo nên phần vần và
làm đỉnh của âm tiết. Có hai loại là nguyên âm đơn và nguyên âm đôi.
BẢNG NGUYÊN ÂM
Nguyên âm đơn
Nguyên âm đôi
a
i
ư
ia
ă
o
y
iê
â
ô
ươ
e
ơ
ưa
ê
u
uô
III. CÁC PHƯƠNG PHÁP, TIÊU CHUẨN TỔNG HỢP TIẾNG NÓI TRONG HỆ
THỐNG TIẾNG VIỆT:
1. Nguyên Nhân Cần Phải Tổng Hợp Tiếng Nói
Xuất phát từ những nhu cầu trao đổi thông tin giữa người sử dụng với máy tính: thay
vì nhập yêu cầu bằng các inputbox và máy tính đáp ứng bằng cách hiển thị các message;
hoặc cho phép cả tiếng nói và giao tiếp dữ liệu diễn ra trong cùng một cuộc gọi telephone
thông qua sự điều khiển của máy tính. Để thỏa mãn nhu cầu trên, thông thường người ta
dùng phương pháp thu âm trước (prerecording) nghĩa là ta thu âm toàn bộ câu nói; khi cần
đọc câu nào, ta mở file âm thanh tương ứng với câu đó. Cách làm này có ưu điểm là đạt độ
tự nhiên cao nhưng có 2 nhược điểm lớn là không linh hoạt và tốn nhiều dung lượng nhớ để
lưu trữ các file âm thanh.
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 61
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
Để tăng tính linh hoạt cho hệ thống tự động và giảm dung lượng lưu trữ ta dùng kỹ
thuật tổng hợp tiếng nói
2. Các Tiêu Chuẩn Cần Thỏa Mãn Khi Tổng Hợp Tiếng Nói:
Tiếng nói tổng hợp dù sao cũng không phải là tiếng nói thực cho nên không thể
giống hoàn toàn tiếng nói tự nhiên. Tuy nhiên khi sử dụng kỹ thuật này, cần thỏa một số
tiêu chuẩn tối thiểu:
− Đạt độ trung thực tương đối : mọi người có thể hiểu được mà không cần học hỏi
hoặc tập trung nghe cao độ. Nếu không đạt được điều này thì tiếng nói tổng hợp sẽ không
thể sử dụng được trong thực tế vì sẽ làm người nghe khó chịu.
− Có thể thay thế con người để phục vụ trong các hệ thống điện thoại, hệ thống dịch
vụ công cộng, robot .
− Khối lượng lưu trữ không quá lớn để tiện sử dụng và có thể phổ biến nhiều nơi
3. Các Phương Pháp Tổng Hợp Âm Cho Tiếng Việt .
Có 2 hướng tổng hợp tiếng nói chính là tổng hợp dựa vào việc phân tích tần số và
tổng hợp dựa vào việc ghép âm.
Đối với hướng phân tích tần số, ta phân tích các đặc trưng tiếng nói để tìm ra tần số,
pha. Khi tổng hợp sẽ tái tạo tiếng nói từ các đặc tính này. Hướng này rất phức tạp và chất
lượng âm còn kém. Trong khi đó, hướng tổng hợp dựa vào việc ghép âm dễ dàng được hiện
thực trên máy tính hơn.
3.1. Ghép từng từ đơn:
Tính chất tiếng Việt là âm của từ đầu không ảnh hưởng âm các từ sau. Do đó ta có thể
ghép các từ thành một câu.
Phương pháp này đạt độ tự nhiên cao nhất và cách hiện thực đơn giản nhất.
Tiếng Việt phổ thông có khoảng 6000 từ. Nếu ta thu với tần số lấy mẫu 8KHz, 8
bit/mẫu, mono, nén PCM. Mỗi từ thu trong 0.8 giây (tốc độ đọc chậm nhất) thì khối lượng
âm thanh cần lưu trữ là:
6000 * 8000 * 1 * (1/2) * 0.8 = 19,200,000 bytes .
Khối lượng dữ liệu của phương pháp này là khá lớn. Mặt khác ta không thể thu âm hết
đủ các từ đã có trong tiếng Việt vì tiếng Việt có rất nhiều từ vay mượn từ các thứ tiếng khác.
Nhận xét:
− Với phương pháp này, khối lượng lưu trữ âm dùng cho ứng dụng khá lớn(khoảng
2000 từ) so với phương pháp ghép âm loại một. Nhưng với dung lượng đĩa cứng ngày nay
thì vấn đề lưu trữ không là vấn đề đáng lo ngại.
− Mức độ ảnh hưởng của từ đi trước với từ đi sau là không đáng kể và có thể chấp
nhận được.
3.2. Ghép âm theo các âm tiết cơ bản nhất:
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 62
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
Ví dụ: "bằng" được ghép từ [b]+[ằ]+[ng]
Phương pháp này có khối lượng lưu trữ nhỏ nhất vì chỉ có 28 phụ âm và 68 nguyên âm
cùng các biến thể thanh. Khối lượng lưu trữ:
(16+68) * 8000 * 1 * (1/2) *0.8 = 268,800 bytes
Tuy nhiên, phương pháp này rất khó hiện thực vì:
Khi phụ âm có vai trò làm phụ âm cuối, chúng được phát âm khác với khi chúng làm
phụ âm đầu. Phụ âm đầu mở ra để kết hợp với nguyên âm, phụ âm cuối khép lại không kết
hợp với nguyên âm nữa.
Cần chú ý khi phát âm nguyên âm trong trường hợp âm cuối là loại tắc (vô thanh) ví
dụ như p, t, c.Khi này thanh điệu không thể hiện trên phụ âm cuối mà thể hiện ở giai đoạn
chuyển tiếp từ nguyên âm sang âm cuối.
Do đó chất lượng âm của phương pháp này cũng còn hạn chế.
3.3. Ghép âm từ hai âm loại 1:
Ví du: "bằng" được ghép từ [b] + [ ằng] .
Một từ được tách ra làm hai phần là phụ âm đầu và vần. điều này căn cứ trên đặc điểm
tiếng Việt là phụ âm đầu ít phụ thuộc vào phần vần và thanh điệu. Trong phụ âm đầu được
cắt rất ngắn chỉ còn lại âm bật (thông thường vào khoảng 0.15 giây). Phần vần cũng được
cắt bỏ ở phần đầu một lượng tưng ứng.
Phương pháp này cho chất lượng âm thanh tương đương so với phương pháp ghép từ
đơn. Theo phương pháp này ta tách được 28 phụ âm đầu và 650 phần vần. Với cách thu âm
như trước thì khối lượng lưu trữ sẽ là:
650 * 8000 * 1 * (1/2) * (0.8 - 0.15) + 28 * 8000 * 1 * (1/2) * 0.15 =
1,706,800 ~ 1.7 Mbytes
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 63
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
HÌNH MÔ TẢ CÁCH GHÉP HAI ÂM THÀNH TỪ
Để dùng phương pháp ghép hai từ âm loại 1 ta có bảng thống kê các phần vần như sau:
BẢNG THỐNG KÊ VẦN TIẾNG VIỆT
a
e
ê
I
o
ô
ơ
u
ư
y
ác
ãi
ãm
ãn
ão
au
ảy
ằm
ằn
ấc
ẫm
ẫn
âu
ây
éc
á
é
ế
í
ó
ố
ớ
ú
ứ
ỳ
ạc
ại
ạm
ạn
ạo
áu
ãy
ẳm
ẳn
ậc
ậm
ận
ấu
ấy
em
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
à
è
ề
ì
ò
ồ
ờ
ù
ừ
ỳ
ai
am
an
ao
áp
àu
ắc
ẵm
ắp
âm
ân
ấp
ầu
ầy
ém
ạ
ẽ
ệ
ị
ọ
ộ
ợ
ụ
ự
ỵ
ài
ám
án
áo
ạp
ay
ặc
ặm
ặp
ấm
ấn
ập
ẩu
ẩy
èm
ả
ẻ
ể
ỉ
ỏ
ổ
ở
ủ
ử
ỷ
ái
àm
àn
ào
át
áy
ăm
ăn
ắt
ầm
ần
ất
ẫu
ẫy
ẻm
ã
ẽ
ễ
Ĩ
õ
ỗ
ỡ
ũ
ữ
ỹ
ải
ảm
ản
ảo
ạt
ày
ắm
ắn
ặt
ẩm
ẩn
ật
ậu
ậy
ẽm
Trang 64
Tự Động Hóa Đài 116
ẹm
ẹn
ẹo
ếm
ếp
ều
ỉa
ỉm
ịn
iu
óa
óe
ỏi
ỏm
ỏn
ọt
ội
ốm
ốn
ộp
ởi
ởm
ởn
ợt
ụa
uễ
ũi
ũm
ũn
uy
ưa
ức
ừu
ỵt
ảng
ảnh
ẳng
ẩng
ẻng
ếnh
iếc
iềm
iện
iếu
ính
oạc
oãi
oạn
GVHD:
en
eo
ép
ệm
ệp
ểu
ĩa
ịm
ip
íu
òa
òe
õi
õm
õn
ốc
ổi
ồm
ồn
ốt
ỡi
ỡm
ỡn
ua
úc
uệ
ụi
ụm
ụn
úy
ứa
ực
ứu
ách
ãng
ãnh
ẵng
ẫng
ẽng
ềnh
iệc
iên
iếp
iều
ình
oai
oàm
oản
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
én
éo
ẹp
ễm
ết
ệu
ịa
in
íp
ìu
ỏa
ỏe
ọi
ọm
ọn
ộc
ỗi
ổm
ổn
ột
ợi
ợm
ợn
úa
ục
ui
um
un
úp
ùy
ừa
ừm
ựu
ạch
ạng
ạnh
ặng
ậng
ẹng
ểnh
iểm
iến
iệp
iểu
ỉnh
oái
oạm
oãn
èn
èo
ét
ên
ệt
ia
im
ín
ịp
ỉu
õa
oi
om
on
óp
ôi
óc
ỗm
ỗn
ơi
ơm
ơn
ớp
ùa
uế
úi
úm
ún
ụp
ủy
ửa
ứt
ửu
ang
anh
ăng
âng
eng
ếch
ễnh
iễm
iền
iết
iễu
ĩnh
oại
oan
oáp
Phan Đình Mãi – Nguyễn Thanh Liêm
ẻn
ẻo
ẹt
ến
êu
ía
ím
ìn
ít
ĩu
ọa
ói
óm
ón
ọp
ối
ọc
ộm
ộn
ới
ớm
ớn
ợp
ủa
uề
ùi
ùm
ùn
út
ũy
ữa
ựt
ữu
áng
ánh
ắng
ấng
éng
ệch
ích
iệm
iển
iệt
iệu
ịnh
oài
oán
oát
ẽn
ẽo
êm
ển
ếu
ìa
ìm
ỉn
ịt
oa
oe
òi
òm
òn
ót
ồi
ôm
ôn
ốp
ời
ờm
ờn
ớt
ũa
uể
ủi
ủm
ủn
ụt
ụy
ựa
ưu
ýt
àng
ành
ằng
ầng
èng
ênh
ịch
iếm
iễn
iêu
inh
oác
oải
oàn
oạt
Trang 65
Tự Động Hóa Đài 116
GVHD:
oay
oăm
oằn
oèn
ong
oóc
ộng
uận
uậy
ũng
uối
uồm
uồn
uya
uỷu
ửng
ưởi
ượm
ượn
ướu
iêng
oang
oánh
oắng
uâng
uống
uỵch
uyện
ương
yêng
oáy
oắm
oẳn
oẻn
óng
ông
uân
uất
uẩy
ụng
uồi
uổm
uổn
uyn
uỵu
ững
ượi
ươn
ướp
ưộu
iếng
oáng
oành
oẳng
uếch
uồng
uyên
uyết
ướng
yểng
oạy
oằm
oẵn
oeo
òng
ống
uấn
uật
ung
uốc
uổi
uỗm
uỗn
uýp
ưng
ước
ưỡi
ướn
ượp
yếm
iềng
oàng
oảnh
oẵng
uệch
uổng
uyến
uyệt
ường
oảy
oặm
oắt
oèo
ỏng
ồng
uần
uây
úng
uộc
uỗi
uộm
uộn
uỵp
ừng
ược
ươm
ườn
ướt
yểm
iểng
oảng
oãnh
oong
uênh
uỗng
uyền
uynh
ưởng
Phan Đình Mãi – Nguyễn Thanh Liêm
oắc
oăn
oặt
oét
õng
ổng
uẩn
uấy
ùng
uôi
uôm
uôn
uốt
uýt
ứng
ươi
ướm
ưởn
ượt
yên
iễng
oãng
oạnh
oóng
uềnh
uộng
uyển
uýnh
ưỡng
oặc
oắn
oen
oẹt
ọng
ỗng
uẫn
uầy
ủng
uội
uốm
uốn
uột
uỵt
ựng
ưới
ườm
ưỡn
ươu
yến
iệng
oanh
oăng
oòng
uông
uých
uyễn
uỳnh
ượng
Nhận xét:
Một từ tiếng việt bao gồm 2 phần: phần âm đầu và phần vần. Âm đầu chủ yếu là các phụ âm
trong tiếng việt. Qua nghiên cứu và tìm hiểu thêm, chúng em thấy rằng:
-
ứng với một loại âm đầu ( ở đây chủ yếu là phụ âm ) phần vần ở phía sau sẽ thay
đổi theo một quy luật nào đó so với phần vần chuẩn khi chưa có âm đầu tuỳ theo
cách phát âm của phụ âm. Chẳng hạn :
/t/
/ch/
/am/ t
/am/ ch
nếu đem /ch/ ráp với /am/ t thì tiếng phát ra sẽ không trung thực tức là khi xây
dựng mô hình âm thanh phần vần độc lập với so với âm đầu sẽ không tận dụng được hết
tính phân biệt giữa các từ do sự biến đổi phổ tín hiệu phần vần so với tác động của các âm
đầu khác nhau.
Để tìm ra quy luật biến đổi phổ tín hiệu này đòi hỏi ta phải có máy phân tích phổ và đi vào
lĩnh vực xử lý tiếng nói, ta mới có thể quan sát và phân tích mẫu sóng âm tại từng thời điểm
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 66
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
nhằm tìm ra quy luật. Tuy nhiên, với phạm vi của đề tài, việc nghiên cứu này là chưa cần
thiết.
3.4. Ghép âm từ hai âm loại 2:
Ví dụ "bằng" được ghép từ [bà]+[ằng]
Phương pháp này gần giống phương pháp trên nhưng phần phụ âm đầu được cắt lấn
sang phần vần. Theo đó, ta sẽ có 28*650 phần phụ âm đầu tương ứng với 650 phần vần.
Trong thực tế, ta có khoảng 1400 phần đầu. Như vậy khối lượng lưu trữ tổng cộng sẽ là:
(1400+650)* 8000 *1 * (1/2) * 0.8 = 6,560,000 bytes
Phương pháp này mắc phải một số khuyết điểm:
− Vị trí cắt lấn sang phần vần khó xác định vì đây là vùng trộn lẫn giữa hai âm.
− Tuy khối lượng lưu trữ là nhỏ so với ghép từ (3 lần) nhưng lớn hơn nhiều so với
ghép âm loại 1 (4 lần).
Khi dùng phương pháp ghép âm thì việc chuẩn bị các âm mất thời gian rất lớn. Việc
chuẩn bị âm được thực hiện thủ công do không thể xác định chính xác vị trí cần cắt. Do đó
nếu phương pháp này có số lượng âm lớn gấp 4 lần thì thời gian và chi phí bỏ ra cũng lớn
gấp 4 lần so với phương pháp ghép âm loại một.
Ngoài ra chất lượng âm của phương pháp này cũng chưa được kiểm nghiệm để có thể
đánh giá ưu điểm về chất lượng so với phương pháp loại 1.
IV. Sơ lược về các dạng file âm thanh dùng trong Card Dialogic
Card Dialogic chơi được hai loại file âm thanh : file wav và file vox. Theo như tìm
hiểu qua tài liệu cung cấp theo card, card Dialogic chơi file vox tốt hơn file wav, nhưng nhà
cung cấp không cung cấp tài liệu về file vox nên chúng em dùng file wav thay thế. Do đó
chúng em phải có những tìm hiểu sơ lược về file wav.
∗ Tìm hiểu sơ lược về file wave:
1. Cấu Trúc Wave File:
∗ RIFF file.
Wave File là tập tin chứa các dữ liệu của mẫu âm thanh đã được số hoá. Phương
pháp số hoá âm thanh hiện nay là phương pháp PCM. Phương pháp này sẽ lấy mẫu âm
thanh với tần số khoảng 11.025 kHz cho đến 44.1 kHz. Mỗi lần lấy mẫu , số liệu này lại
được lượng tử hoá bằng 1 hoặc 2 byte cho một mẫu âm thanh . Như vậy tần số lấy mẫu càng
cao, số byte dùng lượng tử hóa càng nhiều thì âm thanh phát lại càng trung thực, nhưng lại
tăng số byte cần lưu trữ. Với một mẫu âm thanh phát ra trong 1 phút cần phải lưu trữ ít nhất
660 kB. Đó là lý do tại sao các Wave File luôn có kích thước khá lớn so với MIDI File.
Cấu trúc của Wave File thuộc vào lớp file được sử dụng bỡi các hàm Multimedia của
Windows : đó là RIFF file. RIFF là chữ viết tắt của Resource Interchange File Format
( Dạng file trao đổi tài nguyên). Một RIFF file gồm một hoặc nhiều loại chunks, trong mỗi
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 67
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
chunk lại chứa con trỏ để chỉ đến chunk kế tiếp. Mỗi chunk bao gồm loại chunk vàdữ liệu
theo sau loại chunk đó. Một ứng dụng muốn đọc RIFF file có thể đi qua lần lượt từng
chunk, đọc dữ liệu ở những chunk nó quan tâm và có thể bỏ qua các chunk mà nó không
quan tâm. Một chunk của RIFF file luôn bắt đầu bởi một header có cấu trúc như sau:
Typedef struct
{
FOURCC ckID;
DWORD ckSize;
} CK;
Trường FOURCC có 4 bytes chỉ ra loại chunk. Đối với Wave File, trường này có giá
trị là "WAVE". Nếu loại chunk ít hơn 4 ký tự thì các ký tự còn lại bên phải sẽ được đệm
thêm vào các khoảng trắng. Cần chú ý là các ký tự trong FOURCC có phân biệt chữ hoa và
chữ thuờng.
Trường ckSize chứa kích thước vùng dữ liệu của chunk, vùng dữ liệu này nằm ngay
sau header và có kích thước là ckSize bytes.
Chunk có thể chứa các subchunks. Subchunk cũng là một chunk.
Một RIFF file luôn bắt đầu bằng một chunk loại "RIFF"
∗ Cấu trúc Wave file
Wave file bắt đầu là chunk loại "RIFF"
Hai subchunk trong Wave chunk đặc tả thông tin về âm thanh của wave file và tiếp
đó là dữ liệu của từng subchunk. Đó là subchunk "fmt " và subchunk "data".
+ Subchunk "fmt"
Dữ liệu của "fmt " chunk là đối tượng WAVEFORMAT có cấu trúc như sau:
Typedef struct waveformat_tag
{
WORD wFormatTag;
WORD nChannels;
DWORD nSamplesPerSec;
DWORD nAvgBytesPerSec;
WORD nBlockAlign;
} WAVEFORMAT;
wFormatTag thường có giá trị là WAVE_FORMAT_PCM được định nghĩa trong
tập tin MMSYSTEM.H như sau:
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 68
Tự Động Hóa Đài 116
GVHD:
Phan Đình Mãi – Nguyễn Thanh Liêm
#define WAVE_FORMAT_PCM 1
Giá trị này báo cho phần mềm đang đọc Wave File biết kiểu mã hóa dữ liệu âm
thanh sang dữ liệu số là kiểu mã hóa PCM. Hiện nay đây là kiểu mã hóa duy nhất của Wave
File.
nChannels có hai giá trị: bằng 1 cho âm thanh mono và bằng 2 cho âm thanh steréo.
nSamplesPerSec cho biết tốc độ lấy mẫu. Giá trị thông thường của trường này là:
11025 -- 11.025 kHz •
22050 -- 22.05 kHz •
44100 -- 44.1 kHz
nAvgBytesPerSec cho biết số byte trung bình yêu cầu trong 1 giây để phát lại mẫu dữ
liệu của sóng âm.
nBlockAlign cho biết số byte dùng để chứa một mẫu âm thanh. Như vậy, mẫu 8 bit
hoặc ít hơn sẽ yêu cầu 1 byte, mẫu 9 đến 16 bit sẽ yêu cầu 2 bytes. Nếu âm thanh là steréo
thì yêu cầu gấp 2 lần số byte dùng trong âm thanh mono.
Ta thấy trong WAVEFORMAT chưa có thông tin về số bit dùng để lượng tử hóa
một mẫu dữ liệu của sóng âm. Thực tế, Wave File sẽ xác lập số bit dùng cho một mẫu dữ
liệu bằng một trường gắn vào cuối cấu trúc của WAVEFORMAT. Cấu trúc đó có thể được
định nghĩa như sau:
typedef struc pcmwaveformat_tag
{
WAVEFORMAT wf;
WORD wBitsPerSample;
} PCMWAVEFORMAT;
wBitsPerSample cho biết số bit trong một mẫu dữ liệu. Chú ý rằng các mẫu dữ liệu
vẫn phải lưu trữ ở dạng byte hoặc word. Do đó, nếu một Wave File dùng 12 bit để lượng tử
hóa một mẫu sóng âm thì sẽ phải lưu trữ cả 4 bit thừa không dùng đến.
+ Subchunk "data"
Dữ liệu của "data" subchunk của Wave File chứa các số liệu của âm thanh đã được
số hóa. Đối với mẫu âm thanh 8 bit, dữ liệu của "data" subchunk bao gồm các giá trị 1 byte
(có giá trị từ 0 – 255) của các mẫu âm thanh. Đối với mẫu âm thanh 16 bits, mỗi mẫu dữ
liệu gồm 2 bytes (có giá trị từ -32768 tới 32767). Điều này không có nghĩa là file wave 16
bits sẽ nghe to hơn 256 lần file wave 8 bits mà nó có nghĩa là âm thanh được lượng tử hóa
chính xác hơn, nghe trung thực hơn.
Trong mẫu Mono 8 bits, dữ liệu của subchunk "data" gồm chuỗi các giá trị 1 bytes.
Với Stereo 8 bits, mỗi mẫu gồm 2 bytes, dữ liệu sẽ được sắp xếp xen kẻ (interleave), với
SVTH: Nguyễn Hữu Phú – Trần Lê Trung
Trang 69