Chuẩn MPEG cho phép ta chọn lựa các thơng số cho việc nén âm thanh tốt nhất phù hợp với ứng dụng mà ta sử dụng. Lược đồ mã hĩa cho các loại là tổng quát. Các thơng số cĩ thể chọn lựa trong bộ mã hĩa MPEG bao gồm: Mode, Sampling frequency, bitrate, và Layer.
a. Mode.
Chuẩn MPEG cĩ 4 chế độ: • Mono.
• Dual channel. • Stereo.
• Intensity Stereo (cịn gọi là Joint Stereo).
Chế độ Mono rõ ràng được dùng cho âm thanh 1 kênh.
Để chọn chế độ cho các ứng dụng 2 kênh, đầu tiên ta phải xác định đâu là tín hiệu trái và đâu là tín hiệu phải để chia chúng ra thành 2 files
SVTH: Đỗ Văn Tuấn Trang khác nhau, nhằm sau này ta cĩ thể làm việc độc lập trên kênh trái hoặc phải. Lúc đĩ ta sẽ chọn chế độ Mono. Nếu 2 kênh khơng cần hoạt động độc lập, ta chọn Stereo, Dual hay Intensity Stereo để tạo một file duy nhất.
Chế độ Stereo hay kênh Dual là hồn tồn đồng nhất khi chúng cùng sinh ra một file duy nhất cho tín hiệu stereo. Tuy nhiên một bit chỉ thị sẽ nhận dạng xem một file là ở chế độ nào và cĩ thể được dùng cho những áp dụng nào...
Chế độ Intensity Stereo xem xét sự dư thừa giữa các kênh trái và phải nhằm tối ưu mã. Chất lượng chủ quan của Intensity Stereo thay đổi theo hình ảnh stereo của tín hiệu đã mã hĩa. Tuy nhiên nĩ đặc biệt thích hợp cho tốc độ truyền bit thấp.
b. Sampling Frequency (tốc độ lấy mẫu). Một số tốc độ lấy mẫu:
32kHz, 44.1kHzvà 48kHz đối với MPEG1 (Tiêu chuẩn ISO/IEC 11172- 3).
16kHz, 22.05kHzvà24kHz đối với MPEG2 (Tiêu chuẩn ISO/IEC13818-3). Khi chọn lựa tốc độ lấy mẫu cần xem xét các vấn đề:
• Tần số lấy mẫu càng lớn thì chất lượng âm thanh càng cao(độ dài frame nhỏ hơn).
• Băng thơng tín hiệu giới hạn ở mức 15 kHz khi lấy mẫu ở tốc độ 32 kHz và 8 kHz ở tốc độ 16 kHz.
• Tần số lấy mẫu (kHz) và tốc độ của âm thanh mã hĩa (kbps) cĩ thể chọn độc lập.
• Tần số lấy mẫu 44.1 kHz hay 22.05 kHz là khơng thiết thực cho việc chọn lọc vì độ dài frame (byte) là thay đổi.
• Những file được lấy mẫu ở những tần số khác nhau thì rất khĩ khăn khi hịa trộn.
• Khi dùng đường nhập số AES/EBU, tần số lấy mẫu bị cố định bởi tín hiệu nhập.
Nếu khơng bắt buộc, Digigram yêu cầu lấy mẫu ở 48 kHz hoặc 44.1 kHz cho phát thanh hay ứng dụng multimedia. Nếu ta phải sử dụng tốc độ bit thấp cho sự truyền cĩ hiệu qủa, tốc độ 24 kHz là thích hợp. c. Bit Rate.
Mỗi Layer và chế độ cĩ nhiều cách chọn lựa tốc độ bit (bit rate). Việc chọn tốc độ bit tùy thuộc trước tiên vào chất lượng âm yêu cầu. Băng thơng tín hiệu là hẹp hơn nếu tốc độ bit thấp, khiến cho nĩ khơng thực tế đối với một số ứng dụng. Tốc độ bit được đo theo kilobits/sec(kbps). Khi chọn lựa tốc độ bit cần xem xét các vấn đề:
• Tại 128 kbps trên mỗi kênh (hay 256 kbps stereo), chất lượng âm thanh CD sẽ đạt được với Layer I hay Layer II.
• Tại 192 kbps trên mỗi kênh, chất lượng âm thanh là hồn tồn trong suốt.
Tốc độ 128 kbps/kênh được dùng phổ biến nhất trong phát thanh. Nĩ tương ứng với tỉ số nén 1:6 ở tốc độ lấy mẫu 48 kHz. Tốc độ thấp hơn 128 kbps/kênh được dùng trong các ứng dụng yêu cầu tỉ số nén lớn hơn do giới hạn của băng thơng truyền hay thiết bị lưu trữ.
Một số tốc độ bit cung cấp bởi chuẩn âm thanh MPEG : • MPEG 1: 32 kHz, 44.1 kHz và 48 kHz
- Layer I :
32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 kbps. Những tốc độ này là cĩ thể ở chế độ Mono hay stereo..
- Layer II :
SVTH: Đỗ Văn Tuấn Trang 32, 48, 56, 80 kbps chỉ cĩ thể ở chế độ Mono; •64, 96, 112, 128, 160, 192 kbps cĩ thể ở cả hai chế độ Mono và Stereo;•224, 256, 320, 384 kbps chỉ cĩ thể ở chế độ Stereo.
• MPEG 2 : 16 kHz, 22.05 kHz và 24 kHz - Layer I :
32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256 kbps Những tốc độ này là cĩ thể ở chế độ Mono hay stereo..
- Layer II :
8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 kbps. Những tốc độ này là cĩ thể ở chế độ Mono hay stereo. d. Layers.
Chuẩn MPEG cĩ ba layer.
Khi chọn lựa tốc độ bit cần xem xét các vấn đề:
• Ở cùng tốc độ bit, Layer II mang lại chất lượng âm thanh tốt hơn Layer I. Kết luận này là chủ quan, vì sự chênh lệch là rất khĩ phân biệt ở tốc độ bit 128 kbps và lớn hơn.
• Dùng Layer I thì việc chọn lọc chính xác hơn Layer II bởi vì độ phân giải của Layer I gấp ba lần Layer II.
Resolution Table Sampling frequency Layer I (384 samples) Layer II (1152 samples) 32 kHz 12 ms 36 ms 44.1 kHz # 8.71 ms # 26.12 ms 48 kHz 8 ms 24 ms 16 kHz 24 ms 72 ms
22.05 kHz # 17.42 ms # 52.24 ms
24 kHz 16 ms 48 ms
Các điểm kỹ thuật mấu chốt.
Chuẩn mã hĩa âm thanh MPEG chỉ định việc ghi một số cố định các mẫu (384 cho Layer I và 1152 cho Layer II) để tạo ra một chuỗi các bytes gọi là “frame”. “Frame” là thực thể nhỏ nhất được điều khiển bởi một ứng dụng. Việc chọn tốc độ bit(kbps) thiết lập nên kích thước của frame đĩ theo byte.
Ví dụ:
Ở 48 kHz, 128 kbps, chế độ Mono, Layer II:
• 48,000 mẫu, tương ứng 1000 ms hay 1s, 1152 mẫu tương ứng 24 ms. • Ở tốc độ bit 128,000 bits/s, 3072 bits (384 bytes) cần cho 24 ms. • Chiều dài frame vì thế là 384 byte.
SVTH: Đỗ Văn Tuấn Trang CHƯƠNG 5. CÁC GIẢI THUẬT NÉN ÂM THANH.
I. NỀN TẢNG LÝ THUYẾT THƠNG TIN.
Theo Shannon, entropy của một nguồn thơng tin S được định nghĩa: H(S) = η = Σipilog2(1/pi)
Trong đĩ: - pi là xác suất mà ký hiệu Si xuất hiện trong S.
- log2(1/pi) chỉ ra số lượng thơng tin chứa đựng trong Si, nghĩa là số bit cần thiết để mã hĩa Si.
• Ví dụ: một hình ảnh được tơ đều với cùng một cường độ màu xám, tức là pi=1/256, thì số bit cần thiết để mã hĩa cho mỗi mức xám là 8 bits. Entropy của hình này là 8.
Giải thuật Shannon - Fano:
Ta dùng một ví dụ đơn giản để mơ tả giải thuật:
Ký hiệu A B C D E
---
Số lần 15 7 6 6 5
Mã hĩa cho giải thuật Shannon - Fano: Dùng cách tiếp cận từ trên xuống.
• Sắp thứ tự các ký hiệu theo tần số xuất hiện của nĩ, nghĩa là: ABCDE. • Chia thành hai phần, mỗi phần tương đương với cùng số lần đếm.
Hình 5.1
Ký hiệu Số lần log(1/p) Mã Cộng(số bit) --- --- --- --- --- A 15 1.38 00 30 B 7 2.48 01 14 C 6 2.70 10 12 D 6 2.70 110 18 E 5 2.96 111 15 Tổng cộng(số bit) : 89
II. CÁC GIẢI THUẬT NÉN KHƠNG CĨ TỔN THẤT. 1. Mã hĩa Huffman. 1. Mã hĩa Huffman.
• Khởi tạo: đưa tất cả các node vào danh sách OPEN theo thứ tự tại mọi thời điểm. Ví dụ: ABCDE.
• Lặp lại cho đến khi danh sách OPEN chỉ cịn một node bên trái như sau: - Từ danh sách OPEN, chọn hai node cĩ xác suất thấp nhất, tạo node cha cho chúng.
- Gán tổng các xác suất cho node cha và đưa node cha vào danh sách OPEN.
- Gán các mã 0, 1 vào các nhánh của cây, xĩa các node con khỏi danh sách OPEN.
SVTH: Đỗ Văn Tuấn Trang Hình 5.2
Ký hiệu Số lần log(1/p) Mã Cộng(số bit) --- --- --- --- --- A 15 1.38 0 30 B 7 2.48 100 14 C 6 2.70 101 12 D 6 2.70 110 18 E 5 2.96 111 15 Tổng cộng (số bit) : 87
• Việc giải mã cho cả hai giải thuật trên là tầm thường chừng nào mà bảng mã (thống kê) được gửi trước dữ liệu. Cĩ một bit bên trên cơng việc truyền này, nhưng khơng đáng kể nếu file dữ liệu lớn.
• Tính chất tiền tố duy nhất: khơng cĩ mã nào là tiền tố cho một mã khác (tất cả các ký hiệu đều là node lá) → rõ ràng là lớn đối với bộ giải mã. • Nếu việc thống kê cĩ thể tiến hành được trước đĩ và với độ chính xác
cao, thì mã Huffman là rất tốt.
Trong ví dụ trên:Entropy=(15x1.38+7x2.48+ 6x2.7 + 6x2.7 + 5x2.96)/39 = 85.26 / 39 = 2.19.
Số bit cần thiết cho mã hĩa Huffman là : 87 / 39 = 2.23 2. Mã Huffman sửa đổi.
(a) Các giải thuật trên đây yêu cầu kiến thức về thống kê là điều mà khĩ cĩ thể thực hiện (ví dụ âm thanh, hình ảnh sống..).
(b) Ngay cả khi nếu điều đĩ là cĩ thể làm được thì chi phí cho nĩ khá nặng, đặc biệt khi cĩ nhiều bảng phải được truyền mà mơ hình non-order() được sử dụng, nghĩa là việc đưa vào tính tốn sự ảnh hưởng của các ký hiệu trước đĩ với xác suất của ký hiệu hiện hành (ví dụ: “qu” thường đi với nhau,..).
Giải pháp đưa ra là dùng giải thuật sửa đổi cho thích hợp. Như ví dụ, việc mã hĩa Huffman sửa đổi được khảo sát sau đây với ý tưởng là làm thế nào cĩ thể áp dụng vào các giải thuật nén thích hợp khác.
Bộ mã hĩa
Initialize_model();
while ((c = getc (input)) != eof) { encode(c, output); update_model(c); } Bộ giải mã Initialize_model();
while ((c = decode (input)) != eof) {
putc(c, output); update_model(c); }
• Mấu chốt ở đây là cả hai bộ mã hĩa và giải mã đều dùng cùng các hàm Initialize_model và update_model .
• Hàm update_model cĩ hai lưu ý: (a) Tăng biến đếm.
(b) Cập nhật cây Huffman.
- Trong suốt qúa trình cập nhật, cây Huffman sẽ được duy trì tính kế thừa, các nodes (node trong và lá) được sắp xếp theo thứ tự tăng dần của trọng lượng .
- Khi cần thiết trao đổi (swapping), node xa nhất với trọng lượng W được trao đổi với node mà trọng lượng của nĩ tăng lên 1 đơn vị W+1. Lưu ý: nếu node trọng lượng W cĩ cây con bên dưới nĩ thì cây con đĩ cũng phải dời cùng với nĩ.
Cây Huffman cĩ thể nhìn rất khác so với trước khi trao đổi, ví dụ trong cây thứ 3 , node A được trao đổi và trở thành node 5. Bây giờ nĩ được mã hĩa chi bằng 2 bit.
3. Mã hĩa số học.
Mã hĩa Huffman sử dụng một số nguyên k các bit cho mỗi ký hiệu, vì thế k khơng bao giờ nhỏ hơn 1. Đơi khi, ví dụ phải truyền một hình ảnh 1 bit, thì khơng thể nén được.
Ý tưởng: giả sử mẫu tự là [X,Y] và P(X) = 2/3
P(Y) = 1/3.
• Nếu ta chỉ quan tâm với chiều dài mã hĩa là 2 thơng điệp, thì ta cĩ thể ánh xạ tất cả thơng điệp cĩ thể cĩ vào những đoạn trong phạm vi [0..1]
X Y
XX XY YX YY
• Để mã hĩa thơng điệp, chỉ dùng vừa đủ số bit cần thiết cho mỗi đoạn. • Tương tự, ta cĩ thể ánh xạ tất cả chiều dài 3 thơng điệp vào các đoạn
trong [0..1].
Đoạn cuối là 1/27, cần 5 bit.
• Tĩm lại, cần -[logp] bit để biểu diễn cho đoạn cĩ kích thước p. • Vấn đề đặt ra là làm thế nào để xác định được xác suất?
Ý tưởng đơn giản là dùng mơ phỏng: bắt đầu bằng việc đốn tần số của một ký hiệu. Cập nhật tần số cho mỗi ký hiệu mới.
4. Giải thuật Lempel-Ziv-Welch(LZW).
Giả sử chúng ta muốn mã hĩa cho một cuốn tự điển Tiếng Anh 159,000 từ. Như vậy mỗi từ cần 18 bit để mã hĩa.
Nhược: - Dùng qúa nhiều bit.
- Chỉ làm việc cho ký tự tiếng Anh.
Giải pháp: - Cần phải tìm một cách mã hĩa cuốn từ điển cho thích hợp.
- Các phương pháp ban đầu được đề xuất bởi Ziv và Lempel vào năm 1978 và 1979. Terry Welch phát triển lược đồ vào năm 1981 và trở thành giải thuật LZW.
Giải thuật: w = NIL;
while (read a character k)
{
if wk exists in the dictionary
w = wk;
else
add wk to the dictionary;
output the code for w;
w = k;
}
LZW nguyên gốc sử dụng từ điển với 4K mục từ, 256 từ đầu tiên là mã ASCII.
Ví dụ: chuỗi ký tự là “^WED^WE^WEE^WEB^WET”. w k output index symbol --- NIL ^ ^ W ^ 256 ^W W E W 257 WE E D E 258 ED D ^ D 259 D^ ^ W ^W E 256 260 ^WE E ^ E 261 E^ ^ W ^W E ^WE E 260 262 ^WEE E ^ E^ W 261 263 E^W W E WE B 257 264 WEB B ^ B 265 B^ ^ W ^W E ^WE T 260 266 ^WET T EOF T
19 ký hiệu nhập được giảm xuống 7 ký tự và 5 mã. Mỗi mã/ký hiệu sẽ cần nhiều hơn 8 bit, ta lấy 9 bit.
Thơng thường, cơng việc nén chỉ được bắt đầu khi cĩ một số lớn byte được đọc vào (ví dụ >100).
Giải thuật giải nén LZW: read a character k; output k;
w = k;
while ( read a character k ) /* k could be a character or a code. */ {
entry = dictionary entry for k; output entry;
add w + entry[0] to dictionary; w = entry;
III. CÁC GIẢI THUẬT NÉN CĨ TỔN THẤT. 1. Các phương pháp nén âm thanh đơn giản: 1. Các phương pháp nén âm thanh đơn giản:
• Các phương pháp nén khảo sát ở trên khơng hiệu quả trong việc nén âm thanh.
• Sau đây là các phương pháp nén cĩ tổn thất:
- Nén “silence” : dị các khoảng “yên lặng”, giống như mã hố run- length.
- LPC (Linear Predictive Coding).
- CELP (Code Excited Linear Predictor). 2. Nén âm thanh dùng mơ hình ââm - tâm lý.
a. Hệ thống nghe và phát âm của con người.
• Phạm vi nghe được từ 20 Hz đến 20 kHz, nhạy cảm ở 2 - 5kHz. • Phạm vi phát âm bình thường từ 500 Hz đến 2 kHz.
b. Che tần số (Frequency masking)
“Ngưỡng che” (Threshold masking): sinh ra từ hiệu ứng che, mỗi âm với một tần số và mức to (dB) xác định sẽ cĩ một “ngưỡng che” (xem hình 4.3 và 4.4)
c. Băng giới hạn.
• Thước đo tần số đồng bộ khơng tương xứng với độ rộng của đường cong che.
• Băng giới hạn cĩ độ rộng là 100Hz đối với các tần số che < 500Hz, và càng tăng lên đối với các tần số >500Hz.
• Định nghĩa một đơn vị mới cho tần số là bark ( Barkhausen) 1 Bark = bề rộng của băng giới hạn:
- Tần số <500Hz : 1 bark = freq/100.
- Tần số >500Hz : 1 bark = 9 + 4log(freq/1000). • Ngưỡng che trên thước đo băng giới hạn:
Hình 5.3
d. Che nhất thời (Temporal masking): che theo thời gian. Tai người cũng cĩ đặc tính lưu âm.
Nếu cĩ một âm thanh lớn, rồi ngưng nĩ lại, mãi một lúc sau ta mới cĩ thể nghe được một âm lân cận nhỏ hơn (xem hình 4.5 và 4.6).
3. Nén âm thanh MPEG. Vài thơng số:
• MPEG-1 : 1.5Mbits/s cho âm thanh và hình ảnh.
Khoảng 1.2 Mbits cho hình ảnh và 0.3Mbits/s cho âm thanh. Aâm thanh CD khơng nén dùng: (44,100 mẫu/s * 16bit/mẫu * 2 kênh) > 1.4
Mbits/s
• Aâm thanh MPEG cung cấp các tần số lấy mẫu là 32, 44.1 và 48 kHz.