Đề tài Để tìm hiểu về các phương pháp mã hoá và nén âm thanh theo chuẩn Mpeg

Tài liệu Đề tài Để tìm hiểu về các phương pháp mã hoá và nén âm thanh theo chuẩn Mpeg: Mục lục 1 Lời nói đầu 3 PHẦN I . LÝ THUYẾT 4 CHƯƠNG 1. CÁC KIẾN THỨC CƠ BẢN VỀ ÂM THANH 5 I. NHỮNG KHÁI NIỆM CƠ BẢN - SÓNG CƠ 6 1.1. Sự hình thành sóng trong môi trường đàn hồi 6 1.2. Các đặc trưng của sóng. 7 1.3. Phương trình sóng. 8 II. SÓNG ÂM VÀ ĐẶC TÍNH ÂM THANH. 8 2.1 Dao động âm và sự truyền dao động. 8 2.2 Đơn vị vật lý của âm thanh. 9 2.3. Đặc tính sinh lý về sự cảm thụ âm. 12 CHƯƠNG 2. WAVE FILE. 16 I. MULTIMEDIA WINDOWS. 16 II. CẤU TRÚC WAVE FILE. 17 2.1 RIFF file. 17 2.2 Cấu trúc File Wave. 17 III. ĐỌC RIFF FILES 21 CHƯƠNG 3. LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ 25 I. TÍN HIỆU VÀ HỆ THỐNG RỜI RẠC 25 1. Giới thiệu 25 2. Đáp ứng xung trong hệ TTBB 25 3. Tính chất của tổng chập của hệ TTBB 26 4. Hệ nhân quả 27 5. Tính ổn định 27 6. Phương trình sai phân tuyến tính hệ số hằng 28 7. Biểu diễn các hệ rời rạc trong miền tần số 28 8. Định lý lấy mẫu Shan...

doc90 trang | Chia sẻ: haohao | Lượt xem: 1203 | Lượt tải: 1download
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Để tìm hiểu về các phương pháp mã hoá và nén âm thanh theo chuẩn Mpeg, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Muïc luïc 1 Lôøi noùi ñaàu 3 PHAÀN I . LYÙ THUYEÁT 4 CHÖÔNG 1. CAÙC KIEÁN THÖÙC CÔ BAÛN VEÀ AÂM THANH 5 I. NHÖÕNG KHAÙI NIEÄM CÔ BAÛN - SOÙNG CÔ 6 1.1. Söï hình thaønh soùng trong moâi tröôøng ñaøn hoài 6 1.2. Caùc ñaëc tröng cuûa soùng. 7 1.3. Phöông trình soùng. 8 II. SOÙNG AÂM VAØ ÑAËC TÍNH AÂM THANH. 8 2.1 Dao ñoäng aâm vaø söï truyeàn dao ñoäng. 8 2.2 Ñôn vò vaät lyù cuûa aâm thanh. 9 2.3. Ñaëc tính sinh lyù veà söï caûm thuï aâm. 12 CHÖÔNG 2. WAVE FILE. 16 I. MULTIMEDIA WINDOWS. 16 II. CAÁU TRUÙC WAVE FILE. 17 2.1 RIFF file. 17 2.2 Caáu truùc File Wave. 17 III. ÑOÏC RIFF FILES 21 CHÖÔNG 3. LYÙ THUYEÁT XÖÛ LYÙ TÍN HIEÄU SOÁ 25 I. TÍN HIEÄU VAØ HEÄ THOÁNG RÔØI RAÏC 25 1. Giôùi thieäu 25 2. Ñaùp öùng xung trong heä TTBB 25 3. Tính chaát cuûa toång chaäp cuûa heä TTBB 26 4. Heä nhaân quaû 27 5. Tính oån ñònh 27 6. Phöông trình sai phaân tuyeán tính heä soá haèng 28 7. Bieåu dieãn caùc heä rôøi raïc trong mieàn taàn soá 28 8. Ñònh lyù laáy maãu Shannon 30 II. PHEÙP BIEÁN ÑOÅI FOURIER RÔØI RAÏC 30 1. Chuoãi Fourier rôøi raïc cuûa tín hieäu rôøi raïc tuaàn hoaøn 30 2. Bieán ñoåi Fourier rôøi raïc cuûa tín hieäu coù ñoä daøi höõu haïn 31 3. Pheùp bieán ñoåi nhanh Fourier (FFT) 32 CHÖÔNG 4. GIÔÙI THIEÄU VEÀ MPEG. 33 I. GIÔÙI THIEÄU. 33 1. MPEG laø gì? 33 2. So saùnh caùc chuaån MPEG 33 3. Aâm thanh MPEG 34 4. Caùc khaùi nieäm cô baûn 35 5. Hoaït ñoäng 38 II. CAÙC KHAÙI NIEÄM TRONG AÂM THANH MPEG 40 1. Löôïc ñoà maõ hoùa Perceptual Sub-band 40 2. Giaûi thích hieäu quûa che (masking efficiency) 41 3. Caùc lôùp cuûa aâm thanh MPEG 43 III. CAÙC THOÂNG SOÁ. 45 CHÖÔNG 5. CAÙC GIAÛI THUAÄT NEÙN AÂM THANH 50 I. LYÙ THUYEÁT THOÂNG TIN 50 II. CAÙC GIAÛI THUAÄT NEÙN KHOÂNG COÙ TOÅN THAÁT 51 1. Maõ hoùa Huffman 51 2. Maõ hoùa Huffman söûa ñoåi 53 3. Maõ hoùa soá hoïc 54 4. Giaûi thuaät Lempel-Ziv-Welch (LZW) 55 III. CAÙC GIAÛI THUAÄT NEÙN COÙ TOÅN THAÁT 57 1. Caùc phöông phaùp neùn aâm thanh ñôn giaûn 57 2. Neùn aâm thanh duøng moâ hình aâm taâm lyù 57 3. Neùn aâm thanh theo chuaån MPEG 58 PHAÀN II. THIEÁT KEÁ CHÖÔNG TRÌNH 60 CHÖÔNG 6. LÖU ÑOÀ GIAÛI THUAÄT VAØ CAÁU TRUÙC DÖÕ LIEÄU 61 I. SÔ ÑOÀ KHOÁI. 61 II. CAÁU TRUÙC DÖÕ LIEÄU VAØ ÑÒNH NGHÓA 62 CAÁU TRUÙC DÖÕ LIEÄU 62 Caùc caáu truùc veà file 62 Caùc caáu truùc veà doøng bít döõ lieäu 63 Caùc caáu truùc ñeå ñònh daïng doøng bít döõ lieäu 63 Caùc caáu truùc huffmancodetab. 67 Caùc caáu truùc tính MDCT 67 Caùc caáu truùc scalefac_struct 67 B. CAÙC ÑÒNH NGHÓA 68 Caùc ñònh nghóa duøng trong truy xuaát döõ lieäu 68 Caùc ñònh nghóa duøng trong tính toaùn FFT 68 Caùc ñònh nghóa duøng trong ñònh daïng doøng döõ lieäu 68 Caùc ñònh nghóa duøng trong boä maõ hoaù Huffman 68 Caùc ñònh nghóa duøng trong phaân tích döõ lieäu 69 Caùc ñònh nghóa duøng trong moâ hình aâm taâm lyù 69 Caùc ñònh nghóa duøng trong truy xuaát nhaäp döõ lieäu 69 Caùc ñònh nghóa duøng trong caáu truùc file Wave vaø file Mpeg 69 III. LÖU ÑOÀ 71 CHÖÔNG 7: GIAO DIEÄN VAØ THUYEÁT MINH CHÖÔNG TRÌNH 75 GIÔÙI THIEÄU 75 GIAO DIEÄN 75 III.CHÖÔNG TRÌNH 77 TAØI LIEÄU THAM KHAÛO 87 Lôøi noùi ñaàu Coâng ngheä thoâng tin laø ngaønh coâng nghieäp muõi nhoïn cuûa theá giôùi noùi chung vaø cuûa vieät nam noùi rieâng, noù ñaõ phaùt trieån maïnh meõ khoâng ngöøng trong nhöõng naêm gaàn ñaây. Khi ñôøi soáng ñöôïc naâng leân khoa hoïc kyõ thuaät phaùt trieån nhu caàu veà giaûi trí cuõng ña daïng leân, caùc loaïi hình giaûi trí khoâng ngöøng gia taêng vaø ngaøy caøng phong phuù, ña daïng caùc loaïi hình giaûi trí nhö: troø chôi ñieän töû, nghe nhaïc xem phim, xem ca nhaïc(video), vaø ñaëc bieät laø nhöõng trong chôi daïng khoâng gian ba chieàu. Söï phaùt trieån oà aït naøy ñaõ daãn tôùi ngaønh coâng ngheä phaàn cöùng ñaõ khoâng theå ñaùp öùng ñöôïc nhöõng ñoøi hoûi veà löu tröõ, ñoàng haønh vôùi söï phaùt trieån naøy laø maïng maùy tính ñoù chính laø Internet ngaøy caøng phaùt trieån soá löôïng ngöôøi tham gia truy caäp ngaøy caøng lôùn vaø nhu caàu cuûa hoï thì ngaøy caøng phong phuù vaø ña daïng veà taát caû caùc loaïi hình noùi treân. Do ñoù toác ñoä truy caäp, toác ñoä truyeàn taûi treân maïng ñöôïc quan taâm hôn ñeå cho ngöôøi duøng khoâng phaûi soát ruoät ngoài chôø nhöõng trang web maø mình truy caäp, hoï khoâng phaûi böïc mình khi download nhöõng file aâm thanh vaø nhöõng baøi haùt maø hoï öa thích vì ñöôøng truyeàn quaù chaäm trong khi coâng ngheä phaàn cöùng ñaõ phaùt trieån maïnh. Chính vì vaäy caùc nhaø nghieân cöùu phaàn meàm ñaõ chuù yù ñeán vieäc phaùt trieån phaàn meàm ñeå hoã trôï phaàn cöùng. Hoï ñaõ taïo ra nhöõng chöông trình phaàn meàm hoã trôï tích cöïc phaàn cöùng, töø ñoù ñaõ ra ñôøi nhöõng phaàn meàm neùn aâm thanh, hình aûnh, neùn video, taùch aâm thanh töø nhöõng file video…ñeå taïo ra nhöõng daïng aâm thanh, hình aûnh, video nhö mindi, mpeg, mp3, mp4… nhöõng file aûnh daïng gif, jpeg…vôùi dung löôïng löu tröõ voâ cuøng nhoû maëc duø chaát löôïng coù giaûm ñi ñoâi chuùt nhöng khoâng ñaùng keå so vôùi nhöõng gì noù ñaït ñöôïc ñeå truyeàn taûi, truy caäp nhanh hôn. Söï toàn taïi cuûa chuaån JPEG (Joint Photographic Experts Group) chæ ñeå giaûm toác ñoä bit vaø chuû yeáu phuïc vuï cho hình aûnh, roõ raøng laø khoâng ñuû ñaùp öùng cho hình aûnh ñoäng coù keøm aâm thanh. Ñeå ñaùp öùng nhu caàu cuûa thò tröôøng, moät nhoùm caùc chuyeân gia veà hình aûnh ñoäng (Moving Picture Experts Group), goïi taét laø MPEG, ñöôïc thaønh laäp ñeå nghieân cöùu ñöa ra nhöõng löôïc ñoà maõ hoùa phuø hôïp cho vieäc truyeàn hình aûnh ñoäng vaø ghi laïi chuùng theo tieâu chuaån trong caùc thieát bò löu tröõ soá nhö CD-ROM, Video CD.. Phaàn trình baøy cuûa luaän vaên chæ naèm trong khuoân khoå "Aâm thanh". Do ñoù moïi vaán ñeà lieân quan tôùi hình aûnh seõ khoâng ñöôïc ñeà caäp tôùi, duø chuaån MPEG laø duøng cho caû aâm thanh vaø hình aûnh. Muïc tieâu cuûa ñeà taøi chuû yeáu chæ ñeå tìm hieåu veà caùc phöông phaùp maõ hoaù vaø neùn aâm thanh theo chuaån Mpeg, töø ñoù döïa treân moät soá source code (vieát baèng C) ñaõ coù treân maïng Internet vieát laïi baèng ngoân ngöõ Visual C++, nhaèm hieåu saâu hôn veà giaûi thuaät, ñoàng thôøi taïo ra moät giao dieän thaân thieän hôn. Do trình ñoä vaø kieán thöùc coù haïn neân khoâng traùnh khoûi nhöõng thieáu soùt, em kính mong thaày tham gia vaø giuùp ñôõ em ñeå em hoaøn thaønh ñöôïc toát hôn. Em xin chaân thaønh caùm ôn thaày ñaõ taïo ñieàu kieän thuaân lôïi nhaát giuùp em hoaøn thaønh baùo caùo naøy. PHAÀN I LYÙ THUYEÁT CÔ BAÛN CHUÔNG 1. CAÙC KIEÁN THÖÙC CÔ BAÛN VEÀ AÂM THANH. I. NHÖÕNG KHAÙI NIEÄM CÔ BAÛN - SOÙNG CÔ 1.1. Söï hình thaønh soùng trong moâi tröôøng ñaøn hoài. a. Ñònh nghóa: Caùc moâi tröôøng chaát khí, chaát loûng, chaát raén laø moâi tröôøng ñaøn hoài. Moâi tröôøng ñaøn hoài coù theå coi laø nhöõng moâi tröôøng lieân tuïc goàm nhöõng phaân töû lieân keát chaët cheõ vôùi nhau, luùc bình thöôøng moãi phaân töû coù moät vò trí caân baèng beàn. b. Söï hình thaønh soùng trong moâi tröôøng ñaøn hoài: Do tính chaát cuûa moâi tröôøng ñaøn hoài, cho neân neáu taùc duïng leân phaân töû naøo ñoù cuûa moâi tröôøng thì phaân töû naøy rôøi khoûi vò trí caân baèng beàn. Do töông taùc, caùc phaân töû laân caän moät maët keùo phaân töû A veà vò trí caân baèng, maët khaùc nhaän moät phaàn naêng löôïng do phaân töû A truyeàn sang, do ñoù cuõng dao ñoäng theo, hieän töôïng naøy xaûy ra lieân tieáp taïo thaønh soùng. Soùng ñaøn hoài (soùng cô) laø söï lan truyeàn dao ñoäng trong moâi tröôøng ñaøn hoài. Soùng cô khoâng theå truyeàn ñöôïc trong chaân khoâng, vì chaân khoâng khoâng phaûi laø moâi tröôøng ñaøn hoài. Caàn löu yù trong khi truyeàn dao ñoäng, caùc phaân töû cuûa moâi tröôøng khoâng di chuyeån theo caùc dao ñoäng ñöôïc lan truyeàn maø chæ dao ñoäng quanh vò trí caân baèng cuûa noù. c. Moät soá khaùi nieäm veà soùng: Nguoàn soùng: laø ngoaïi vaät gaây ra kích ñoäng soùng. Tia soùng: laø phöông truyeàn soùng. Moâi tröôøng soùng: laø khoâng gian maø soùng truyeàn qua. Maët soùng: laø maët chöùa nhöõng ñieåm (phaân töû) coù cuøng traïng thaùi dao ñoäng taïi moät thôøi ñieåm naøo ñoù. Tia soùng luoân vuoâng goùc vôùi maët soùng. Soùng caàu: maët soùng laø nhöõng maët caàu phaân boá ñeàu trong khoâng gian, taâm laø nguoàn soùng. Trong moâi tröôøng ñoàng chaát vaø ñaúng höôùng seõ coù soùng caàu. Ñoái vôùi soùng caàu tia soùng truøng vôùi baùn kính cuûa maët caàu. Soùng phaúng: maët soùng laø nhöõng maët phaúng song song nhau, tia soùng vuoâng goùc vôùi maët soùng. Neáu nguoàn soùng ôû raát xa moâi tröôøng ñang xeùt thì maët soùng coù theå coi laø nhöõng maët phaúng song song. Soùng doïc: laø soùng trong ñoù caùc phaân töû cuûa moâi tröôøng dao ñoäng quanh vò trí caân baèng treân phöông truøng vôùi tia soùng. Khi coù soùng doïc, treân phöông cuûa tia soùng caùc phaân töû cuûa moâi tröôøng khi thì bò neùn chaët, khi thì giaõn ra laøm cho caùc phaân töû cuûa moâi tröôøng coù choã daøy choã thöa. Soùng ngang: laø soùng trong ñoù caùc phaân töû cuûa moâi tröôøng dao ñoäng quanh vò trí caân baèng treân phöông vuoâng goùc vôùi tia soùng. d. Nguyeân nhaân gaây ra soùng ngang vaø soùng doïc: Tuøy tính chaát cuûa moâi tröôøng ñaøn hoài maø trong ñoù coù theå xuaát hieän soùng ngang hay soùng doïc. - Khi moät lôùp cuûa moâi tröôøng bò leäch ñoái vôùi lôùp khaùc laøm xuaát hieän caùc löïc ñaøn hoài coù xu höôùng keùo lôùp bò leäch veà vò trí caân baèng thì trong moâi tröôøng ñoù coù theå truyeàn ñöôïc soùng ngang. Vaäy vaät raén laø moät moâi tröôøng coù tính chaát ñoù. - Neáu trong moâi tröôøng khoâng coù caùc löïc ñaøn hoài khi caùc lôùp song song bò leäch ñoái vôùi nhau thì soùng ngang khoâng theå hình thaønh ñöôïc. Chaát loûng vaø chaát khí laø nhöõng moâi tröôøng ñoù. - Khi bò bieán daïng neùn hay caêng maø trong moâi tröôøng coù caùc löïc ñaøn hoài xuaát hieän thì trong moâi tröôøng ñoù coù theå truyeàn ñöôïc soùng doïc. Chaúng haïn khi bò neùn, chaát loûng hay chaát khí seõ taêng aùp suaát, löïc neùn giöõ vai troø löïc ñaøn hoài. Nhö vaäy trong chaát loûng vaø chaát khí chæ coù soùng doïc truyeàn ñöôïc, coøn trong chaát raén coù theå truyeàn ñöôïc caû hai loaïi soùng. 1.2. Caùc ñaëc tröng cuûa soùng. a. Vaän toác truyeàn soùng (C) : Laø quaõng ñöôøng maø soùng truyeàn ñöôïc trong moät ñôn vò thôøi gian. b. Böôùc soùng l: Laø quaõng ñöôøng maø soùng truyeàn ñöôïc sau moät thôøi gian baèng 1 chu kyø T. Nhö vaäy l laø khoaûng caùch beù nhaát giöõa caùc phaân töû dao ñoäng cuøng pha. Theo ñònh nghóa ta coù : l = CT. c. Chu kyø vaø taàn soá: Chu kyø T laø thôøi gian caàn thieát ñeå soùng truyeàn ñöôïc 1 böôùc soùng l. Taàn soá f laø soá chu kyø thöïc hieän ñöôïc trong 1 giaây : F = 1/T (Hz) 1.3. Phöông trình soùng. · Soùng phaúng truyeàn doïc theo phöông OY vôùi vaän toác C thì phöông trình soùng bieåu thò moái quan heä giöõa ñoä chuyeån dôøi X cuûa phaân töû dao ñoäng keå töø vò trí caân baèng vôùi thôøi gian t vaø khoaûng caùch y ñeán caùc vò trí caân baèng caùc phaân töû dao ñoäng treân phöông truyeàn soùng nhö sau : X = asinw(t – y/c) Neáu soùng phaúng truyeàn theo höôùng ngöôïc vôùi höôùng tính khoaûng caùch y thì : X = asinw(t + y/c) Ñoái vôùi soùng caàu thì bieân ñoä a cuûa dao ñoäng soùng taïi vò trí caùch nguoàn baèng baùn kính r, tæ leä nghòch vôùi r, phöông trình soùng coù daïng: X = a/r sinw(t – r/c) II. SOÙNG AÂM. 2.1. Dao ñoäng aâm vaø söï truyeàn dao ñoäng. · Soùng aâm laø moät loaïi soùng cô coù bieân ñoä dao ñoäng nhoû maø thính giaùc nhaän bieát ñöôïc. Thí duï dao ñoäng phaùt ra töø daây ñaøn, maët troáng.. ñang rung ñoäng. Soùng aâm laø moät loaïi soùng cô neân moïi khaùi nieäm vaø hieän töôïng veà dao ñoäng vaø soùng cô treân ñaây ñeàu aùp duïng cho soùng aâm. Trong khoâng khí cuõng nhö trong moïi chaát khí khaùc, nhöõng dao ñoäng truyeàn ñi döôùi daïng soùng doïc, khi ñeán tai ngöôøi nhöõng dao ñoäng coù taàn soá töø 16 ñeán 20000 Hz seõ gaây caûm giaùc ñaëc bieät veà aâm. Caùc dao ñoäng ñaøn hoài coù taàn soá f>20.000 Hz laø soùng sieâu aâm. Caùc dao ñoäng ñaøn hoài coù taàn soá f<16 Hz laø soùng haï aâm Moãi aâm coù moät taàn soá rieâng, ñôn vò cuûa taàn soá laø heùc (Hz) vôùi ñònh nghóa:”Heùc laø taàn soá cuûa moät quùa trình dao ñoäng aâm trong ñoù moãi giaây thöïc hieän ñöôïc moät dao ñoäng”. 1 Heùc (Hz) = 1 dao ñoäng / 1 giaây Vieäc phaân chia soùng haï aâm, soùng sieâu aâm vaø soùng aâm (aâm thanh) lieân quan tôùi khaû naêng sinh lyù cuûa thính giaùc 2.2. Ñôn vò vaät lyù cuûa aâm thanh. AÂm thanh hay tieáng ñoäng maø con ngöôøi nhaän bieát ñöôïc do taùc ñoäng cuûa soùng aâm leân maøng nhó tai. Caùc dao ñoäng aâm phaùt ra töø nguoàn lan truyeàn trong moâi tröôøng ñaøn hoài nhö khoâng khí.. döôùi daïng soùng ñaøn hoài goïi laø soùng aâm. Soùng aâm ñeán kích ñoäng maøng nhó tai gaây caûm giaùc veà aâm, do ñoù caàn phaân bieät hai loaïi ñaïi löôïng veà aâm: - Ñaïi löôïng aâm khaùch quan: nhöõng ñaïi löôïng thuaàn tuùy vaät lyù, khoâng phuï thuoäc vaøo tai ngöôøi. - Ñaïi löôïng aâm chuû quan: nhöõng ñaïi löôïng taâm lyù vaät lyù phuï thuoäc vaøo tai ngöôøi. 2.2.1. Ñôn vò aâm khaùch quan: a. Aùp suaát aâm: Khi soùng aâm tôùi moät maët naøo ñoù, do caùc phaân töû moâi tröôøng dao ñoäng taùc duïng leân maët ñoù moät löïc gaây ra aùp suaát. Aùp suaát ôû ñaây laø aùp suaát dö do soùng aâm gaây ra ngoaøi aùp suaát khí quyeån. Trong phaïm vi nghe ñöôïc, aùp suaát aâm trong khoaûng töø 2.10-4 ñeán 2.102 mbar, cheânh leäch 106 laàn, ñoù laø moät phaïm vi raát roäng. b. Cöôøng ñoä aâm (I): - Cöôøng ñoä aâm ôû moät ñieåm naøo ñoù treân phöông ñaõ cho trong tröôøng aâm laø soá naêng löôïng aâm ñi qua ñôn vò dieän tích cuûa maët S vuoâng goùc vôùi phöông truyeàn aâm, taïi ñieåm ñoù trong ñôn vò thôøi gian. - Moät vaøi cöôøng ñoä aâm ñaùng chuù yù: Ngöôøi noùi thöôøng I = 2.10-3 W/m2 Coøi oâ-toâ I = 5 W/m2 Coøi baùo ñoäng I = 3.000 W/m2 - Trong ñieàu kieän chuaån (to = 20oC, aùp suaát 760mmHg): Vaän toác aâm trong khoâng khí : C = 340 m/s r = 0,00121 gr/cm3. g = Cp/Cv = 1,4 - Trong tính toaùn ngöôøi ta quy öôùc laáy aâm ñôn taàn soá f = 1000 Hz laøm chuaån ñeå so saùnh (goïi laø aâm chuaån). - Ñoái vôùi aâm chuaån, trong phaïm vi nghe ñöôïc AÙp suaát aâm nhoû nhaát Pmin = 2.10-4 mbar Cöôøng ñoä aâm nhoû nhaát Imin = 10-16 W/cm2. - Aùp suaát aâm vaø cöôøng ñoä aâm lôùn nhaát maø tai ngöôøi coù theå chòu ñöôïc laø: Pmax = 2.102 mbar Imax = 10-4 W/cm2. - Coâng suaát aâm nhoû nhaát coù theå nghe thaáy ñöôïc Wmin = 10-12 Watt. 2.2.2. Ñôn vò aâm chuû quan: Tai ngöôøi trung bình coù theå nhaän ñöôïc nhöõng soùng aâm coù taàn soá töø 16 ñeán 20000 Hz, hieäu quûa naøy coù lieân quan tôùi khaû naêng sinh lyù cuûa tai ngöôøi. Nhö vaäy, aâm thanh laø moät hieän töôïng taâm lyù vaät lyù, khoâng phaûi baát cöù soùng aâm naøo tôùi tai cuõng gaây ra caûm giaùc aâm thanh nhö nhau. Aâm coù taàn soá khaùc nhau gaây ra caûm giaùc khaùc nhau. Cöôøng ñoä aâm nhoû nhaát cuûa moät soùng aâm xaùc ñònh maø tai ngöôøi nghe thaáy ñöôïc goïi laø “Ngöôõng nghe”. Aâm coù taàn soá khaùc nhau giaù trò ngöôõng nghe cuõng khaùc nhau. Tai ngöôøi thính nhaát vôùi aâm coù taàn soá trong khoaûng töø 1000 ñeán 3000 Hz, trong phaïm vi naøy cöôøng ñoä aâm ngöôõng nghe nhoû nhaát. Nhöõng taàn soá khaùc, tai keùm thính hôn, ngöôõng nghe coù giaù trò lôùn hôn. Ñoái vôùi aâm chuaån, cöôøng ñoä vaø aùp suaát ôû ngöôõng nghe baèng: Po = 2.10-5 N/ m2. Io = 10-12 W/m2. Do caûm giaùc aâm thanh phuï thuoäc vaøo ñaëc tính sinh lyù cuûa tai ngöôøi, cho neân phaûi coù moät soá ñaïi löôïng ñaëc tröng cho caûm giaùc aâm thanh phuï thuoäc vaøo tai ngöôøi, nhöõng ñaïi löôïng nhö vaäy goïi laø ñaïi löôïng aâm chuû quan. a. Bel vaø decibel (db): Theo ñònh lyù sinh lyù cuûa Vebe-Feùcne, caûm giaùc nghe to ñoái vôùi moät aâm khoâng tæ leä thuaän vôùi cöôøng ñoä aâm cuûa aâm ñoù. Khi cöôøng ñoä aâm taêng töø Io tôùi I thì caûm giaùc nghe to taêng tæ leä vôùi lg(I/Io). Do ñoù ngöôøi ta duøng thang loâ-ga-rít cô soá 10 ñeå ño möùc caûm giaùc so vôùi möùc ngöôõng. Möùc ngöôõng goïi laø möùc zero qui öôùc : lg(I/Io) = lg(10-12/ 10-12) = 0 bel. Ñôn vò laø Bel hay db. 10db = 1 bel. b. Möùc cöôøng ñoä aâm (LI): Neáu goïi I laø cöôøng ñoä aâm cuûa aâm ñang xeùt vaø Io laø cöôøng ñoä aâm cuûa möùc zero qui öôùc cuûa aâm chuaån thì möùc cöôøng ñoä aâm LI baèng : LI = 10lg(I/Io) db I tính baèng W/m2. c. Möùc aùp suaát aâm (Lp): Möùc aùp suaát aâm suy daãn töø möùc cöôøng ñoä aâm Lp = 20lg(P/Po) db. Trong ñoù: P :aùp suaát aâm coù ích cuûa aâm ñang xeùt (N/m2) Po:aùp suaát aâm cuûa aâm chuaån ôû ngöôõng nghe. Thöïc teá aùp suaát aâm laø ñaïi löôïng cô baûn hôn cöôøng ñoä aâm, neân thöôøng duøng möùc aùp suaát aâm sau ñoù suy ra möùc cöôøng ñoä aâm. Ñôn vò chung laø bel hay db. Ñôn vò naøy cuõng duøng ñeå ño möùc coâng suaát, möùc naêng löôïng aâm. Vaøi möùc aùp suaát aâm ñaùng chuù yù : Noùi chuyeän thöôøng : 30db. Noùi chuyeän to : 70db. 2.2.3. Quaõng ñoä cao (quaõng taàn soá): · Quaõng taàn soá cuûa hai aâm laø khoaûng caùch taàn soá cuûa hai aâm ñoù. Neáu moät aâm taàn soá laø f1, moät aâm khaùc taàn soá laø f2 (f2 > f1) thì f2 / f1 = 2x. Khi x=1 töùc f2 / f1 = 2 goïi laø 1 quaõng taàn soá (hay 1 oác-ta). Khi x=1/2 töùc f2 / f1 = 1.41 goïi laø nöûa oác-ta. Khi x=1/3 töùc f2 / f1 = 1.26 goïi laø 1/3 oác-ta. - Möùc aùp suaát aâm cuûa 1 oác-ta baèng möùc aùp suaát aâm cuûa 1/2 oác-ta coäng theâm 3db. - Möùc aùp suaát aâm cuûa 1 oác-ta baèng möùc aùp suaát aâm cuûa 1/3 oác-ta coäng theâm 5db. Vì quaõng taàn soá cuûa moät aâm qui ñònh ñoä cao cuûa aâm ñoù neân coøn goïi laø quaõng ñoä cao. Theo taäp quaùn aâm nhaïc thì quaõng ñoä cao goïi laø quaõng 8 (baùt ñoä). Chaúng haïn aâm LA, taàn soá f=440 Hz taêng 1 baùt ñoä laø taêng gaáp ñoâi taàn soá, töùc laø 880 Hz. Trong thöïc teá thöôøng gaëp nhöõng aâm phöùc taïp bao goàm nhieàu taàn soá. Taäp hôïp taát caû nhöõng taàn soá caáu taïo trong moät aâm thanh goïi laø “taàn phoå” cuûa aâm ñoù, taàn phoå coù theå giaùn ñoaïn hay lieân tuïc. Moät aâm coù taàn phoå lieân tuïc ñöôïc ñaëc tröng baèng “Möùc taàn phoå B” vôùi ñònh nghóa: - Möùc taàn phoå laø möùc aùp suaát aâm trong chieàu roäng cuûa daûi taàn soá baèng 1. - Moät aâm coù möùc taàn phoå B khoâng ñoåi vôùi moïi taàn soá goïi laø tieáng oàn traéng. - Moät aâm coù taàn phoå giaùn ñoaïn ñöôïc ñaëc tröng baèng “möùc daûi taàn soá” vôùi ñònh nghóa: möùc daûi taàn soá laø möùc aùp suaát aâm trong chieàu roäng cuûa daûi taàn soá lôùn hôn 1 Hz. 2.3. Ñaëc tính sinh lyù veà söï caûm thuï aâm thanh. 2.3.1. Möùc to, ñoä to, möùc aâm caûm giaùc: Möùc aùp suaát aâm, möùc cöôøng ñoä aâm treân ñaây vöøa mang tính chaát chuû quan vöøa mang tính chaát khaùch quan vì nhöõng ñaïi löôïng naøy xaùc ñònh töø nhöõng ñaïi löôïng thuaàn tuùy vaät lyù. Vaán ñeà coù yù nghóa to lôùn trong thöïc teá laø caàn bieát ñöôïc söùc maïnh cuûa aâm thanh ño baèng tai ngöôøi. Möùc to, ñoä to cuûa moät aâm laø söùc maïnh caûm giaùc do aâm thanh gaây neân trong tai ngöôøi, noù khoâng nhöõng phuï thuoäc vaøo aùp suaát aâm maø coøn phuï thuoäc vaøo taàn soá cuûa aâm ñoù. Thí duï 2 aâm coù taàn soá 100 Hz vaø 1000 Hz aùp suaát aâm ñeàu baèng 0,02 mbar nhöng nghe to nhoû khaùc nhau, aâm 1000 Hz nghe to hôn aâm 100 Hz. Muoán nghe to baèng aâm 1000 Hz thì aâm 100 Hz phaûi coù aùp suaát baèng 0,25 mbar. Nhö vaäy tai ngöôøi khoâng nhaïy ñoái vôùi aâm 100 Hz baèng aâm 1000 Hz. Taàn soá caøng thaáp tai ngöôøi caøng keùm nhaïy. a. Möùc to: - Ñeå bieåu thò möùc to treân caûm giaùc chuû quan, ta duøng ñaïi löôïng “möùc to”, ñôn vò laø “Foân” vôùi ñònh nghóa nhö sau : Foân laø möùc to cuûa aâm chuaån, veà giaù trò baèng möùc aùp suaát aâm cuûa aâm chuaån töùc laø : L = 20lg P/Po (Foân). - Vaäy möùc to cuûa moät aâm baát kyø ño baèng Foân, veà giaù trò baèng möùc aùp suaát aâm cuûa aâm chuaån ño baèng db coù cuøng möùc to vôùi aâm ñoù. Thí duï: aâm coù taàn soá 500 Hz möùc aùp suaát aâm baèng 25 db vaø aâm coù taàn soá 50 Hz möùc aùp suaát aâm baèng 64 db seõ coù cuøng möùc to baèng 20 Foân, baèng möùc to cuûa aâm 1000 Hz möùc aùp suaát baèng 20 db. - Muoán bieát möùc to cuûa moät aâm baát kyø phaûi so saùnh vôùi aâm chuaån. - Ñoái vôùi aâm chuaån, möùc to ôû ngöôõng nghe laø 0 Foân, ngöôõng choùi tai laø 120 Foân. - Cuøng moät giaù trò aùp suaát, aâm taàn soá caøng cao, möùc to caøng lôùn. b. Ñoä to: - Khi so saùnh aâm naøy to hôn aâm kia bao nhieâu laàn, duøng khaùi nieäm “ñoä to” ñôn vò laø “Soân” vôùi ñònh nghóa nhö sau: Soá löôïng Soân bieåu thò soá laàn maïnh hôn cuûa moät aâm naøo ñoù so vôùi aâm chuaån maø tai ngöôøi coù theå phaân bieät ñöôïc. - Ñoä to laø moät thuoäc tính cuûa thính giaùc, cho pheùp phaùn ñoaùn tính chaát maïnh yeáu cuûa aâm thanh. Caên cöù vaøo ñoä to maø saép xeáp aâm töø nhoû tôùi to. - Möùc to taêng 10 Foân thì ñoä to taêng gaáp ñoâi vaø ngöôïc laïi. 2.3.2. Aâm ñieäu vaø aâm saéc: AÂm ñieäu chæ aâm cao hay thaáp, traàm hay boång. AÂm ñieäu chuû yeáu phuï thuoäc vaøo taàn soá cuûa aâm, taàn soá caøng cao, aâm nghe caøng cao, taàn soá caøng thaáp aâm nghe caøng traàm. AÂm saéc chæ saéc thaùi cuûa aâm du döông hay thoâ keäch, thanh hay reø, trong hay ñuïc. AÂm saéc phuï thuoäc vaøo caáu taïo cuûa soùng aâm ñieàu hoøa, bieåu thò baèng soá löôïng caùc loaïi taàn soá, cöôøng ñoä vaø söï phaân boá cuûa chuùng quanh aâm cô baûn. AÂm saéc coù quan heä maät thieát vôùi cöôøng ñoä, aâm ñieäu vaø thôøi gian aâm vang, söï tröôûng thaønh vaø taét daàn cuûa tröôøng aâm. Khi hai ca só cuøng haùt moät caâu ôû cuøng moät ñoä cao, ta vaãn phaân bieät ñöôïc gioïng haùt cuûa töøng ngöôøi. Khi ñaøn ghi-ta, saùo, keøn.. cuøng taáu leân moät ñoaïn nhaïc ôû cuøng moät ñoä cao, ta vaãn phaân bieät ñöôïc tieáng cuûa töøng nhaïc cuï. Moãi ngöôøi, moãi nhaïc cuï phaùt ra nhöõng aâm coù saéc thaùi khaùc nhau maø tai ta phaân bieät ñöôïc. Ñaëc tính ñoù cuûa aâm chính laø aâm saéc. AÂm saéc laø moät ñaëc tính sinh lyù cuûa aâm, ñöôïc hình thaønh treân cô sôû caùc ñaëc tính vaät lyù cuûa aâm laø taàn soá vaø bieân ñoä. Thöïc nghieäm chöùng toû raèng khi moät nhaïc cuï phaùt ra moät aâm coù taàn soá f1 thì ñoàng thôøi cuõng phaùt ra caùc aâm coù taàn soá f2=2f1, f3=3f1... AÂm coù taàn soá f1 goïi laø aâm cô baûn hay hoïa aâm thöù nhaát, caùc aâm coù taàn soá f2 , f3 .. goïi laø caùc hoïa aâm thöù hai, thöù ba... AÂm cô baûn bao giôø cuõng maïnh nhaát, caùc hoïa aâm coù taùc duïng quyeát ñònh aâm saéc cuûa aâm cô baûn, giuùp ta phaân bieät caùc nguoàn aâm khaùc nhau. Chaúng haïn tieáng ñaøn Pi-a-noâ vaø tieáng saùo tuy cuøng moät aâm cô baûn nhöng laïi raát deã phaân bieät, nguyeân nhaân laø do soá löôïng, caáu truùc nhöõng hoïa aâm quanh aâm cô baûn cuûa chuùng khaùc nhau. Hoïa aâm caøng nhieàu aâm nghe caøng du döông phong phuù. 3. Thính giaùc ñònh vò (hieäu öùng Stereo): Khi nghe aâm tuy maét khoâng nhìn thaáy nguoàn aâm nhöng coù theå xaùc ñònh chính xaùc vò trí cuûa nguoàn aâm. Ñaëc ñieåm naøy laø keát quûa cuûa hai taùc duïng: - Do cöôøng ñoä, ñoä to, aâm saéc cuûa aâm ñeán hai tai khoâng gioáng nhau. - Do aâm ñeán hai tai leäch pha nhau, vì thôøi gian ñeán hai tai khoâng gioáng nhau. Cöôøng ñoä, ñoä to cuûa aâm ñeán hai tai cheânh leäch nhau laø do nhieãu xaï gaây ra. AÂm coù taàn soá f < 1000 Hz söï cheânh leäch cöôøng ñoä do nhieãu xaï gaây ra raát beù nhöng ôû nhöõng taàn soá cao, söï cheânh leäch naøy coù theå ñaït tôùi 20 - 30 db. Do khaû naêng ñònh vò cuûa tai nhö vaäy cho neân khi nghe aâm coù theå taäp trung chuù yù vaøo nguoàn aâm caàn nghe, boû qua moät caùch töï nhieân nhöõng aâm khoâng caàn nghe. Nhôø hieäu quûa naøy maø tieáng oàn bò phuû laáp hoaëc giaûm nhoû moät caùch töï nhieân. Neáu chæ nghe aâm moät tai thì hieäu quûa naøy maát. 4. Nghe aâm vaø cheânh leäch thôøi gian: Töông töï nhö taùc duïng löu aûnh cuûa maét, tai ngöôøi cuõng coù taùc duïng löu aâm. Thí nghieäm vôùi nhieàu thính giaùc bình thöôøng cho thaáy raèng, neáu hai aâm nhö nhau ñeán tai ngöôøi caùch nhau < 50 ms thì tai ngöôøi khoâng phaân bieät ñöôïc, nghe nhö moät aâm duy nhaát. CHÖÔNG 2. TAÄP TIN DAÏNG SOÙNG (WAVE FILE). I. MULTIMEDIA WINDOWS Töø phieân baûn Windows 3.1, Multimedia ñaõ trôû thaønh moät tính naêng cuûa Windows. Multimedia Windows ñaõ boå sung moät tính naêng môùi: ñoù laø söï ñoäc laäp thieát bò trong vieäc xöû lyù aâm thanh. Söï ñoäc laäp thieát bò naøy theå hieän qua boä API (Applycation Program Interface – Boä giao dieän laäp trình öùng duïng). Boä API ñoäc laäp veà thieát bò ñoái vôùi phaàn cöùng vaø ñoù laø moät chöùc naêng quan troïng cuûa Windows. Ngöôøi laäp trình seõ laäp trình ñieàu khieån phaàn cöùng treân Windows döïa treân chöùc naêng cuûa phaàn cöùng hôn laø caùc chi tieát cuï theå cuûa noù. Caùc nhaø cung caáp phaàn cöùng chæ caàn cung caáp moät boä ñieàu khieån thieát bò (device driver) cho Windows, nhôø ñoù moät öùng duïng treân Windows coù theå ñieàu khieån phaàn cöùng thoâng qua Windows API. · Vôùi Multimedia Windows, haõng Microsoft ñaõ thöïc hieän ñöôïc ba ñieàu : · Ñònh nghóa moät tieâu chuaån phaàn cöùng toái thieåu cho loaïi maùy Multimedia PC (vieát taét laø MPC). Tieâu chuaån naøy döïa treân chöùc naêng toång quaùt hôn laø saûn phaåm cuï theå. Ví duï neáu PC coù theâm oå ñóa CD-ROM vaø moät card aâm thanh thì trôû thaønh MPC caáp 1. · Microsoft ñaõ cung caáp phaàn meàm Multimedia Extension cho Windows 3.0 vaø ñaõ ñöôïc gheùp luoân vaøo heä ñieàu haønh Windows töø phieân baûn 3.1. Phaàn meàm naøy bao goàm caùc boä ñieàu khieån thieát bò daønh cho vieäc truy xuaát ñeán caùc phaàn cöùng gaén theâm vaøo MPC. · Microsoft ñöa ra coâng cuï phaùt trieån Multimedia Development Kit (MDK). Laäp trình vieân keát hôïp coâng cuï treân vôùi boä Windows Software Development Kit (SDK) ñeå vieát caùc öùng duïng veà Multimedia. Coù hai daïng xöû lyù aâm thanh soá hoùa treân Windows. Loaïi thöù nhaát microsoft goïi laø “Wave Form Audio” (Aâm thanh daïng soùng), döïa treân nguyeân taéc soá hoùa soùng aâm, MPC löu chuùng treân boä nhôù hay taäp tin .WAV treân ñóa. Caùc döõ lieäu soá naøy coù theå thoâng qua phaàn cöùng bieán ñoåi laïi thaønh aâm thanh. Daïng thöù hai laø MIDI. Khaùc vôùi aâm thanh daïng soùng, MIDI chæ löu laïi nhöõng thoâng ñieäp ñieàu khieån boä toång hôïp phaùt ra aâm thanh. Do ñoù kích thöôùc cuûa taäp tin .MID nhoû hôn nhieàu so vôùi taäp tin.WAV. II. CAÁU TRUÙC WAVE FILE. 1. RIFF file. Wave File laø taäp tin chöùa caùc döõ lieäu cuûa maãu aâm thanh ñaõ ñöôïc soá hoùa. Phöông phaùp soá hoùa aâm thanh hieän nay laø phöông phaùp PCM. Phöông phaùp naøy seõ laáy maãu aâm thanh vôùi taàn soá khoaûng 11.025 kHz cho ñeán 44.1 kHz. Moãi laàn laáy maãu, soá lieäu naøy laïi ñöôïc löôïng töû hoùa baèng moät hay hai byte cho moät maãu aâm thanh. Nhö vaäy taàn soá laáy maãu caøng cao, soá byte duøng löôïng töû hoùa caøng nhieàu thì aâm thanh phaùt laïi caøng trung thöïc, nhöng laïi taêng soá byte caàn löu tröõ. Vôùi moät maãu aâm thanh phaùt ra trong moät phuùt caàn phaûi löu tröõ ít nhaát 660 kB. Ñoù laø lyù do taïi sao caùc File Wave luoân coù kích thöôùc khaù lôùn so vôùi MIDI File. Caáu truùc cuûa Wave File thuoäc vaøo lôùp file ñöôïc söû duïng bôûi caùc haøm Multimedia cuûa Windows: ñoù laø RIFF FILE. RIFF laø chuõ vieát taét cuûa Resource Interchange File Format (daïng file trao ñoåi taøi nguyeân). Moät RIFF file goàm moät hoaëc nhieàu loaïi chunks, trong moãi chunk laïi chöùa con troû chæ ñeán chunk keá tieáp. Moãi chunk bao goàm loaïi chunk vaø döõ lieäu theo sau loaïi chunk ñoù. Moät öùng duïng muoán ñoïc RIFF file coù theå ñi qua laàn löôït töøng chunk, ñoïc döõ lieäu ôû chunk noù quan taâm vaø coù theå boû qua caùc chunk maø noù khoâng quan taâm, moät chunk cuûa RIFF file luoân baét ñaàu bôûi moät header coù caáu truùc nhö sau: Typedef struct { FOURCC ckid; DWORD ckSize; } CK; Tröôøng FOURCC coù 4 bytes chæ ra loaïi chunk. Ñoái vôùi File Wave, tröôøng naøy coù giaù trò laø “WAVE”. Neáu loaïi chunk ít hôn 4 kyù töï thì caùc kyù töï coøn laïi beân phaûi seõ ñöôïc ñeäm theâm vaøo caùc khoaûng traéng. Caàn chuù yù laø caùc kyù töï trong FOURCC coù phaân bieät chöõ hoa vaø chöõ thöôøng. Tröôøng DWORD chöùa kích thöôùc vuøng döõ lieäu cuûa chunk, vuøng döõ lieäu naøy naèm ngay sau header vaø coù kích thöôùc laø ckSize bytes. Chunk coù theå chöùa caùc subchunks. Subchunk cuõng laø moät chunk. Moät RIFF file luoân baét ñaàu baèng moät chunk loaïi “RIFF”. 2. Caáu truùc Wave file. Wave file baét ñaàu laø chunk loaïi “RIFF”. Hai subchunk trong wave chunk ñaëc taû thoâng tin veà aâm thanh cuûa wave file vaø tieáp ñoù laø döõ lieäu cuûa töøng subchunk. Ñoù laø subchunk “fmt” vaø subchunk “data”. a. subchunk “fmt”: Döõ lieäu cuûa “fmt” chunk laø ñoái töôïng WAVEFORMAT coù caáu truùc nhö sau: Typedef struct waveformat_tag { WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; } WAVEFORMAT; - wFormatTag thöôøng coù giaù trò laø WAVE_FORMAT_PCM ñöôïc ñònh nghóa trong taäp tin MMSYSTEM.H nhö sau : #define WAVE_FORMAT_PCM 1 Giaù trò naøy baùo cho phaàn meàm ñang ñoïc Wave File bieát kieåu maõ hoùa döõ lieäu aâm thanh sang döõ lieäu soá laø kieåu maõ hoùa PCM. Hieän nay ñaây laø kieåu maõ hoùa duy nhaát cuûa Wave file. - nChannels: coù hai giaù trò baèng 1 cho aâm thanh mono vaø baèng 2 cho aâm thanh stereo. - nSamplesPerSec: cho bieát toác ñoä laáy maãu, coù caùc giaù trò: 11025 -- 11.025 kHz 22050 -- 22.050 kHz 44100 -- 44.100 kHz - nAvgBytesPerSec: cho bieát soá bytes yeâu caàu trung bình trong moät giaây ñeå phaùt laïi maãu döõ lieäu cuûa soùng aâm. - nBlockAlign: cho bieát soá byte duøng ñeå chöùa moät maãu aâm thanh. Nhö vaäy maãu 8 bit hay ít hôn seõ yeâu caàu 1 byte, maãu 9 ñeán 16 bit seõ yeâu caàu 2 bytes. Neáu aâm thanh laø Stereo thì yeâu caàu gaáp 2 laàn soá byte duøng cho aâm thanh mono. Ta thaáy trong WAVEFORMAT chöa coù thoâng tin veà soá bit duøng ñeå löôïng töû hoùa moät maãu döõ lieäu cuûa soùng aâm. Thöïc teá Wave File seõ xaùc laäp soá bit duøng cho moät maãu döõ lieäu baèng moät tröôøng gaén vaøo cuoái caáu truùc cuûa WAVEFORMAT. Caáu truùc ñoù nhö sau: Typedef struct pcmwaveformat_tag { WAVEFORMAT wf; WORD wBitsPerSample; } PCMWAVEFORMAT; - wBitsPerSample: cho bieát soá bit trong moät maãu döõ lieäu. Chuù yù raèng caùc maãu döõ lieäu vaãn phaûi löu tröõ ôû daïng byte hoaëc word. Do ñoù, neáu moät Wave File duøng 12 bit ñeå löôïng töû hoùa moät maãu soùng aâm thì seõ phaûi löu tröõ 4 bit thöøa khoâng duøng ñeán. b. Subchunk “data”. Döõ lieäu cuûa “data” subchunk cuûa wave file chöùa caùc soá lieäu cuûa aâm thanh ñaõ ñöôïc soá hoùa. Ñoái vôùi maãu aâm thanh 8 bit, döõ lieäu cuûa “data” subchunk bao goàm caùc giaù trò 1 byte (coù giaù trò töø 0 – 255) cuûa caùc maãu aâm thanh. Ñoái vôùi maãu aâm thanh 16 bits, moãi maãu döõ lieäu goàm 2 bytes (coù giaù trò töø – 32768 ñeán 32767). Ñieàu naøy khoâng coù nghóa laø file wave 16 bits seõ nghe to hôn 256 laàn file wave 8 bits, maø noù coù nghóa laø aâm thanh ñöôïc löôïng töû hoùa chính xaùc hôn, nghe trung thöïc hôn. Trong maãu mono 8 bits, döõ lieäu cuûa subchunk “data” goàm chuoãi caùc giaù trò 1 byte. Vôùi stereo 8 bits, moãi maãu goàm 2 bytes, döõ lieäu seõ ñöôïc saép xeáp xen keõ (interleave), vôùi byte ñaàu (byte chaün) laø maãu aâm thanh cuûa keânh beân traùi, byte sau (byte leû) laø cuûa keânh beân phaûi. Toùm laò caáu truùc cuûa Wave File nhö sau: Kích thöôùc (soá byte) Giaù trò Teân tröôøng 4 “RIFF” 4 Kích thöôùc file RIFF 4 “WAVE” 4 “fmt” 4 Kích thöôùc subchunk “fmt” 2 Kieåu maõ hoùa döõ lieäu cuûa file wave (thöôøng laø PCM) WORD nFormatTag 2 Soá keânh : 1 - mono 2 - stereo WORD nChannels 4 Soá maãu/1giaây DWORD nSamplesPerSec 4 Soá bytes/1giaây DWORD nAvgBytesPerSec 2 Soá byte/1maãu DWORD nBlockAlign 2 Soá bit/1maãu WORD wBitsPerSample 4 “data” 4 Kích thöôùc döõ lieäu III. ÑOÏC RIFF FILES Ñeå laøm vieäc vôùi file RIFF, ta phaûi môû noù vaø “descend” vaøo chunk maø ta caàn. Ñieàu naøy coù nghóa laø ta caàn phaûi ñònh vò ñöôïc chunk naøy, roài chuyeån con troû file vaøo ñaàu khoái döõ lieäu cuûa chunk. Khi laøm vieäc xong vôùi 1 chunk, ta phaûi “ascend” ra khoûi chunk vaø “descend” xuoáng chunk khaùc. Caùc haøm duøng xöû lyù RIFF file ñeàu coù tieàn toá laø mmio vaø laøm vieäc vôùi file handle daïng HMMIO, ñeå baét ñaàu, ta phaûi môû file baèng ñoaïn maõ sau: HMMIO h; If ((h=mmioOpen(path,NULL,MMIO_READ))==NULL) { /*baùo loãi*/ return(0); } Thoâng soá path chöùa ñöôøng daãn cuûa file wave. Côø MMIO_READ baùo cho mmioOpen môû file ñeå ñoïc. Ta cuõng coù theå môû noù ñeå ghi baèng thoâng soá MMIO_WRITE hay caû ñoïc vaø ghi baèng thoâng soá MMIO_READWRITE. Neáu môû file thaønh coâng, mmioOpen seõ traû veà moät handle loaïi HMMIO. Neáu thaát baïi, noù seõ traû veà trò NULL. Sau khi môû file xong, ta baét ñaàu ñònh vò WAVE chunk baèng ñoaïn maõ sau: MMCKINFO mmParent; MmParent.fccType=mmioFOURCC(‘W’,’A’,’V’,’E’); If (mmioDescend(h,(LPMMCKINFO)&mmParent, NULL, MMIO_FINDRIFF)) { mmioClose(h,0); /* baùo loãi */ return(0); } Caáu truùc cuûa MMCKINFO chöùa caùc thoâng tin veà chunk. Noù ñöôïc ñònh nghóa trong MMSYSTEM.H nhö sau: Typedef struct { FOURCC ckid; DWORD cksize; FOURCC fcctype; DWORD dwDataOffset; DWORD dwFlags; } MMCKINFO; Ñeå “ñi vaøo” moät chunk, ta cho tröôøng ckid cuûa MMCKINFO ôû loaïi chunk maø ta muoán ñònh vò. Coù moät macro thöïc hieän vieäc naøy laø mmioFOURCC. Sau ñoù goïi haøm mmioDescend ñeå ñònh vò chunk. Neáu ñònh vò thaønh coâng, haøm naøy traû veà zero vaø ñoái töôïng MMCKINFO truyeàn cho haøm seõ ñöôïc ñieàn vaøo caùc thoâng tin veà chunk. Tröôøng cksize ñònh nghóa kích thöôùc tính baèng byte cuûa chunk. Ñoái soá thöù ba cuûa mmioDescend laø côø MMIO_FINDRIFF. Côø naøy chæ thò cho mmioDescend tìm moät file coù ID laø RIFF vôùi loaïi chunk ñöôïc xaùc ñònh bôûi ckid. Neáu muoán tìm moät chunk trong Wave file ta cho côø naøy laø MMIO_FINDCHUNK. Sau khi ñi vaøo WAVE chunk, ta baét ñaàu ñi vaøo fmt subchunk cuûa noù: MMIOCKINFO mmSub; MmSub.ckid=mmioFOURCC(‘f’,’m’,’t’); If (mmioDescend(h,(LPMMCKINFO)& mmSub, (LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); /* baùo loãi */ return(0); } Ñeán ñaây ta ñaõ coù theå baét ñaàu ñoïc döõ lieäu töø Wave File. Ñoaïn maõ sau ñoïc ñoái töôïng PCMWAVEFORMAT töø fmt subchunk: PCMWAVEFORMAT waveformat; Int n; n = min ((unsigned int)mmSub.cksize, sizeof(PCMWAVEFORMAT)); if(mmioRead(h,(HPSTR)&waveformat, (long)n) !=(long)n) { /* baùo loãi */ return(0L); } if(waveformat.wf.wFormatTag !=WAVE_FORMAT_PCM) { /* baùo loãi */ mmioClose(h,0); return(0L); } Ñoái soá ñaàu tieân cuûa mmioRead laø handle cuûa file ñang ñoïc. Ñoái soá thöù hai laø con troû xa troû tôùi vuøng ñeäm ñeå chöùa döõ lieäu. Ñoái soá thöù ba laø soá byte caàn ñoïc. Haøm naøy seõ traû veà soá byte thöïc söï ñoïc ñöôïc. Sau khi ñaõ ñoïc noäi dung cuûa chunk, ta ñi ra khoûi chunk ñeå chuaån bò ñoïc chunk keá tieáp: MmAscend(h,(LPMMCKINFO)&mmSub,0); Ñoái soá thöù hai cuûa mmAscend laø ñoái töôïng MMCKINFO cuûa chunk maø ta “ñi ra”. Ñoái soá thöù ba laø ñoái soá giaû. Coâng vieäc coøn laïi laø ñoïc döõ lieäu maõ hoùa maãu aâm thanh cuûa Wave file vaøo boä nhôù. Chuù yù raèng giaù trò cksize traû veà bôûi mmioDescend ñöôïc söû duïng ñeå xaùc ñònh kích thöôùc vuøng ñeäm caàn caáp phaùt ñeå chöùa döõ lieäu. GLOBALHANDLE wavehandle; HPSTR wavepointer; MmSub.ckid=mmioFOURCC(‘d’,’a’,’t’,’a’); If(mmioDescend(h,(LPMMCKINFO)&mmSub, (LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); /* baùo loãi */ return(0); } if((wavehandle=GlobalAlloc(GMEM_MOVEBLEIGMEM_ SHARE, mmSub.cksize))==NULL) { mmioClose(h,0); /* baùo loãi */ return(0); } if(wavepointer=(HPSTR)GLOBALLOCK(WAVEHANDLE)) ==null) { GlobalFree(wavehandle); mmioClose(h,0); /* baùo loãi */ return(0); } if(mmioRead(h,wavepointer,mSub.cksize) != mSub.cksize) { GlobalUnlock(wavehandle); GlobalFree(wavehandle); mmioClose(h,0); /* baùo loãi */ return(0); } GlobalUnlock(wavehandle); CHÖÔNG 3. LYÙ THUYEÁT XÖÛ LYÙ TÍN HIEÄU SOÁ. I. TÍN HIEÄU VAØ HEÄ THOÁNG RÔØI RAÏC 1. Giôùi thieäu Tín hieäu laø bieåu hieän vaät lyù cuûa thoâng tin, thöôøng laø thoâng tin veà traïng thaùi hay haønh vi cuûa moät heä vaät lyù naøo ñoù. Veà maët toaùn hoïc, tín hieäu ñöôïc coi laø haøm cuûa cuûa moät hay vaøi bieán ñoäc laäp. Ví duï: tín hieäu aâm thanh laø söï thay ñoåi aùp suaát khoâng khí theo thôøi gian; tín hieäu hình aûnh laø haøm ñoä saùng theo hai bieán khoâng gian.. Theo qui öôùc chung, tín hieäu ñöôïc coi laø haøm theo moät bieán ñoäc laäp vaø laø bieán thôøi gian. Tín hieäu soá (Digital signal) laø tín hieäu rôøi raïc (theo bieán ñoäc laäp thôøi gian) ñoàng thôøi coù bieân ñoä cuõng rôøi raïc hoùa (löôïng töû hoùa). 2. Ñaùp öùng xung trong heä tuyeán tính baát bieán. Tín hieäu vaøo x(n) ñöôïc goïi laø taùc ñoäng, tín hieäu ra y(n) ñöôïc goïi laø ñaùp öùng cuûa heä xöû lyù. Ta coù quan heä: T : pheùp bieán ñoåi Moät heä thoáng laø tuyeán tính neáu thoûa nguyeân lyù xeáp choàng: giaû söû y1(n) vaø y2(n) laø ñaùp öùng cuûa heä töông öùng vôùi taùc ñoäng vaøo laø x1(n) vaø x2(n). Heä laø tuyeán tính neáu vaø chæ neáu : Nhö vaäy, moät heä tuyeán tính coù theå xöû lyù toång taùc ñoäng nhö laø caùc taùc ñoäng naøy ñöôïc xöû lyù ñoäc laäp, sau ñoù caùc ñaùp öùng töông öùng seõ ñöôïc coäng laïi. Moät tín hieäu x(n) baát kyø coù theå bieåu dieãn : Do vaäy ñoái vôùi heä tuyeán tính: hk(n) goïi laø ñaùp öùng xung cuûa heä ñoái vôùi taùc ñoäng laø xung d(n-k) Theo coâng thöùc treân, heä tuyeán tính vaãn coøn tuøy thuoäc vaøo thôøi ñieåm taùc ñoäng k. Moät heä tuyeán tính laø baát bieán(theo thôøi gian) neáu tín hieäu vaøo bò dòch ñi moät ñoaïn thôøi gian laø k thì tín hieäu ra cuõng chæ dòch moät ñoaïn k, töùc moïi hk(n) trôû thaønh h(n-k). Nhö vaäy moïi heä tuyeán tính baát bieán ñeàu ñöôïc ñaëc tröng hoaøn toaøn baèng ñaùp öùng h(n), bieát h(n) ta hoaøn toaøn tính ñöôïc ñaùp öùng y(n) cuûa tín hieäu vaøo x(n). Coâng thöùc treân coøn ñöôïc goïi laø Toång chaäp (convolution sum) cuûa hai tín hieäu x(n) vaø h(n), vaø coøn ñöôïc kyù hieäu: 3. Tính chaát cuûa toång chaäp cuûa heä TTBB Tính giao hoaùn: = Tính phaân phoái: Nhö vaäy, töø tính chaát giao hoaùn, ta thaáy raèng: hai heä TTBB coù ñaùp öùng xung laø h1(n) vaø h2(n) ñöôïc maéc noái tieáp nhau seõ töông ñöông vôùi moät heä coù ñaùp öùng xung: vaø thöù töï maéc noái tieáp khoâng quan troïng. Töø tính chaát phaân phoái, hai heä TTBB maéc song song nhau seõ töông ñöông vôùi moät heä coù ñaùp öùng xung baèng toång hai ñaùp öùng xung: 4. Heä nhaân quaû (causal system) Caùc heä coù tín hieäu ra chæ phuï thuoäc vaøo tín hieäu trong quaù khöù vaø hieän taïi ñöôïc goïi laø caùc heä nhaân quaû, töùc phaûi coù taùc ñoäng vaøo (nguyeân nhaân) thì môùi coù taùc ñoäng ra (keát quaû). Ñònh lyù: Heä tuyeán tính baát bieán (TTBB) laø nhaân quaû neáu ñaùp öùng xung h(n) = 0 vôùi moïi n<0. Ñoái vôùi moät heä TTBB vaø nhaân quaû, daïng chung cuûa coâng thöùc toång chaäp hoaëc vieát caùch khaùc: Neáu ñaùp öùng xung h(n) coù ñoä daøi höõu haïn N thì: Môû roäng cho tín hieäu: tín hieäu nhaân quûa laø tín hieäu baét ñaàu khaùc 0 töø thôøi ñieåm 0. x(n) khi n<0 khi n³0 5. Tính oån ñònh. Ñònh nghóa: moät heä laø oån ñònh neáu ñaùp öùng cuûa heä luoân bò chaën ñoái vôùi taùc ñoäng vaøo bò chaën. Ñònh lyù: Moät heä TTBB laø oån ñònh neáu vaø chæ neáu ñaùp öùng xung thoûa maõn ñieàu kieän sau: 6. Phöông trình sai phaân tuyeán tính heä soá haèng Ta chæ khaûo saùt caùc heä thoáng tuyeán tính baát bieán vaø coù theå ñaëc tröng bôûi caùc phöông trình sai phaân coù heä soá haèng. Moái lieân heä giöõa tín hieäu vaøo x(n) vaø tín hieäu ra y(n) coù daïng nhö sau: Trong ñoù taäp caùc heä soá ak vaø br ñaëc tröng cho heä TTBB. 7. Bieåu dieãn caùc heä rôøi raïc trong mieàn taàn soá. 7.1. Pheùp bieán ñoåi Fourier cuûa tín hieäu rôøi raïc. Vôùi tín hieäu vaøo x(n)= ejwn (coù taàn soá w=2pf) vaø ñaùp öùng xung h(n), ta coù tín hieäu ra: Haøm H(ejw) goïi laø ñaùp öùng taàn soá cuûa heä, bieåu dieãn ñaùp öùng cuûa heä thoáng theo haøm cuûa taàn soá ñoái vôùi daõy taùc ñoäng ejwn, noù cho bieát söï thay ñoåi veà bieân ñoä vaø pha theo taàn soá khi tín hieäu ñi qua heä. H(ejw) laø moät haøm soá phöùc vaø coù theå bieåu dieãn theo phaàn thöïc vaø aûo: H(ejw)= Hr(ejw)+ jHi(ejw). (r: real; i: image) Hoaëc theo bieân ñoä vaø pha: H(ejw)= | H(ejw)| ejargH(ejw ) (0£w£2p). H(ejw) laø haøm lieân tuïc theo w vaø tuaàn hoaøn vôùi chu kyø 2p. Ta coù theå khai trieån noù thaønh chuoãi Fourier, ngöôïc laïi h(n) coù theå ñöôïc tính toaùn töø H(ejw) baèng caùc coâng thöùc tính heä soá khai trieån chuoãi Fourier: Trong ñoù : Bieán ñoåi Fourier cuûa daõy rôøi raïc: Ñoái vôùi tín hieäu tuaàn hoaøn 7.2. Pheùp bieán ñoåi Fourier thuaän. 7.3. Pheùp bieán ñoåi Fourier nghòch. 7.4. Phoå bieân ñoä, phoå pha vaø phoå naêng löôïng Do X(f) laø moät haøm phöùc neân ta coù theå bieåu dieãn döôùi daïng modul vaø argument: Haøm modul X(f) theo f ñöôïc goïi laø phoå bieân ñoä cuûa tín hieäu x(n), coøn haøm q(f)=arg[X(f)] ñöôïc goïi laø phoå pha. Cuoái cuøng f(f)=|X(f)|2 ñöôïc goïi laø phoå naêng löôïng, bieåu dieãn söï phaân boá theo taàn soá cuûa naêng löôïng tín hieäu x(n). 8. Ñònh lyù laáy maãu Shannon Moät tín hieäu töông töï xa(t) coù daûi phoå höõu haïn vôùi giôùi haïn treân laø Fmax(Hz) (töùc laø phoå baèng 0 khi f naèm ngoaøi daûi - Fmax.. Fmax). Ta seõ chæ coù theå khoâi phuïc laïi xa(t) moät caùch chính xaùc töø caùc maãu xa(n.Ts) neáu nhö : Fs ³ 2Fmax hay Ts £ 1/(2Fmax). Khoâi phuïc laïi tín hieäu töông töï töø tín hieäu laáy maãu: Ta coù theå khoâi phuïc laïi tín hieäu xa(t) baèng caùch cho tín hieäu laáy maãu ñi qua moät maïch loïc (töông töï) thoâng thaáp lyù töôûng (low-pass filter) coù ñaùp öùng taàn soá Hlp(f) vôùi taàn soá caét laø fc = Fs/2. Phoå cuûa tín hieäu xa(t) seõ ñöôïc loïc laïi chính xaùc chæ vôùi ñieàu kieän : Fs ³ 2Fmax Nghóa laø thoûa maõn ñònh lyù laáy maãu. Khi ñoù trong khoâng gian taàn soá: Xa(f) = X(f).Hlp(f) Coøn trong khoâng gian thôøi gian: Xa(t) = x(nTs)*hlp(t) Trong ñoù hlp(t) laø ñaùp öùng xung cuûa maïch loïc thoâng thaáp lyù töôûng coù bieân ñoä daûi thoâng laø Ts. II. PHEÙP BIEÁN ÑOÅI FOURIER RÔØI RAÏC 1. Chuoãi Fourier rôøi raïc cuûa tín hieäu rôøi raïc tuaàn hoaøn Tín hieäu tuaàn hoaøn xp(n) laø tuaàn hoaøn vôùi chu kyø N neáu: xp(n)= xp(n+N), vôùi moïi n. Ñoái vôùi tín hieäu rôøi raïc, ta khai trieån Fourier theo haøm: xk(n) = ej(2pk/N)n , k=0,±1, ±2.. Caùc haøm ñieàu hoøa phöùc rôøi raïc chæ coù N tín hieäu phaân bieät nhau vì tín hieäu sai khaùc nhau laø boäi cuûa N thì ñeàu nhö nhau: xk(n) = xk±N(n) = xk±2N(n) = ej(2pk/N)n Ñoái vôùi tín hieäu tuaàn hoaøn vaø rôøi raïc xp(n), ta coù chuoãi Fourier rôøi raïc (DFS): k=N Trong ñoù caùc heä soá ak laø caùc heä soá khai trieån chuoãi Fourier rôøi raïc hay coøn ñöôïc goïi laø caùc vaïch phoå cuûa tín hieäu tuaàn hoaøn. 2. Bieán ñoåi Fourier rôøi raïc cuûa tín hieäu coù ñoä daøi höõu haïn(DFT:Discrete Fourier Transform) Vieäc bieåu dieãn Fourier cho tín hieäu rôøi raïc coù ñoä daøi höõu haïn goïi laø pheùp bieán ñoåi Fourier rôøi raïc (DFT). Tín hieäu coù ñoä daøi höõu haïn laø tín hieäu coù giaù trò khaùc 0 trong moät khoaûng höõu haïn thôøi gian naøo ñoù, vaø baèng 0 trong khoaûng coøn laïi. Ñaây laø loaïi tín hieäu toàn taïi trong thöïc teá vì chuùng ta chæ coù theå quan saùt moïi tín hieäu trong moät khoaûng thôøi gian laø höõu haïn töø N1 ñeán N2. Ñeå ñôn giaûn hoaù, ta coù theå qui öôùc tín hieäu x(n) toàn taïi trong khoaûng thôøi gian: 0 £ n £ M-1, töùc laø : M = N2 - N1+1. Vôùi tín hieäu x(n) naøy ñöôïc duøng nhö laø moät chu kyø tín hieäu, ta coù theå xaây döïng tín hieäu xp(n) tuaàn hoaøn vôùi chu kyø N baèng caùch xeáp choàng tuaàn hoaøn: Neáu N ³ M thì khoâng xaûy ra hieän töôïng truøm thôøi gian giöõa caùc phaàn cuûa xp(n). Do xp(n) chæ coù duy nhaát moät caùch bieåu dieãn chuoãi Fourier rôøi raïc neân x(n) cuõng vaäy. Töø chuoãi Fourier ta tính ra ñöôïc 1 chu kyø tín hieäu cuûa xp(n), trong ñoù coù x(n): xp(n) 0 £ n £ N-1 x(n)= 0 n coøn laïi. 3. Pheùp bieán ñoåi nhanh fourier Fast Fourier Transform (FFT) laø moät giaûi thuaät raát hieäu quaû ñeå tính DFT. Coâng thöùc bieán ñoåi DFT: Ñaët Wnk = Chia DFT thaønh 2 phaàn : Kyù hieäu thaønh phaàn chaün laø xev vaø leû laø xod, ta vieát laïi: , k = 0..N-1 Ñeå tính X(k) chæ caàn tính trong nöûa chu kyø N/2. Xev(k) vaø Xod(k) tuaàn hoaøn vôùi chu kyø N/2: Xev(k) = Xev(k - N/2), N/2 £ k £ N-1. CHÖÔNG 4. GIÔÙI THIEÄU VEÀ MPEG. I. GIÔÙI THIEÄU. 1. MPEG laø gì? MPEG, vieát taét cuûa cuïm töø “Moving Picture Experts Group”, laø moät nhoùm chuyeân nghieân cöùu phaùt trieån caùc tieâu chuaån veà hình aûnh soá vaø neùn aâm thanh theo chuaån ISO/IEC. Ngaøy nay, nhoùm laøm vieäc MPEG ñaõ phaùt trieån vaø phaùt haønh caùc tieâu chuaån MPEG-1, MPEG-2 vaø MPEG-4. Chuaån MPEG-3 ñöôïc keát hôïp vaøo MPEG-2 vaø khoâng coøn taùch rieâng nöõa. Nhoùm MPEG hieän nay ñaõ phaùt trieån ñeán chuaån MPEG-7. MPEG chæ laø moät teân rieâng, teân chính thöùc cuûa noù laø : ISO/IEC JTC1 SC29 WG11. ISO : International Organization for Standardization IEC : International Electro-technical Commission JTC1 : Joint Technical Committee 1 SC29 : Sub-committee 29 WG11: Work Group 11 (moving picture with audio). 2. So saùnh caùc chuaån MPEG: MPEG-1 ñònh nghóa moät tieâu chuaån cho vieäc löu tröõ vaø phuïc hoài caùc hình aûnh ñoäng vaø aâm thanh treân caùc thieát bò löu tröõ. Tieâu chuaån naøy ñònh nghóa raèng hình aûnh ñöôïc phaùt laïi ôû toác ñoä 30 frames moät giaây vaø aâm thanh ñöôïc phaùt laïi ôû chaát löôïng nhö CD-audio, ñoä phaân giaûi hình aûnh laø 352 x 240. Chuaån MPEG-1 ñöôïc duøng ñieån hình trong caùc phaàn meàm huaán luyeän baèng maùy tính, caùc game haønh ñoäng trong maùy tính, video chaát löôïng VHS, Karaoke.. MPEG-2 ñònh nghóa cho moät tieâu chuaån kyõ thuaät truyeàn hình soá. Chuaån MPEG-2 khaéc phuïc moät vaøi nhöôïc ñieåm cuûa chuaån MPEG-1. Ví duï, MPEG-2 coù theå taïo hình aûnh lôùn gaáp 4 laàn MPEG-1 vôùi ñoä neùt cao hôn vaø roõ hôn (720 x 480 vaø 1280 x 720). Caùc ñaëc tính cuûa MPEG-2 bao goàm hình aûnh chaát löôïng cao vaø aâm thanh noåi.. MPEG-3 ñònh nghóa moät tieâu chuaån cho High Difinition Television (HDTV), laø theá heä tieáp theo cuûa coâng ngheä truyeàn hình theo ñònh daïng soá ñaày ñuû. Tieâu chuaån naøy ñaõ khoâng ñöôïc phaùt trieån hoaøn thieän vaø cuoái cuøng ñöôïc keát hôïp vaøo vôùi chuaån MPEG-2. MPEG-3 ñi ñeán muïc tieâu laø caùc öùng duïng HDTV vôùi kích thöôùc maãu leân ñeán 1920x1080x30 Hz vaø ñöôïc maõ hoaù ôû toác ñoä bit 20 ñeán 40 Mbits/s. Cuoái cuøng ngöôøi ta ñaõ nhaän ra raèng vôùi moät vaøi ñieàu chænh thích hôïp, MPEG-1 vaø MPEG-2 laøm vieäc raát toát ñoái vôùi HDTV. MPEG-4 ñònh nghóa moät tieâu chuaån cho caùc öùng duïng Multi-media. Ñaëc bieät noù ñònh nghóa tieâu chuaån truyeàn cho doøng phöùc taïp caùc hình aûnh, aâm thanh vaø döõ lieäu ñoà hoaï vaø vieäc taùi hôïp chuùng treân thieát bò thu. MPEG-4 ñöôïc phaùt trieån theo 2 giai ñoaïn, 1 vaø 2. Chuaån MPEG-4 ñònh nghóa caùc ñoái töôïng hình aûnh maø trong ñoù caùc phaàn cuûa moät caûnh coù theå ñöôïc thao taùc trong khi nhöõng phaàn khaùc vaãn khoâng ñoåi. MPEG-5 vaø MPEG-6 vaãn chöa ñöôïc coâng boá. MPEG-7 ñònh nghóa moät tieâu chuaån veà vieäc bieåu dieãn noäi dung cho caùc nghieân cöùu thoâng tin hình aûnh vaø aâm thanh. Teân chính thöùc laø “Multimedia Content Description Interface”. Muïc tieâu cuûa MPEG-7 laø chuaån hoaù vieäc bieåu dieãn caùc moâ taû veà noäi dung nghe nhìn. Tuy nhieân chuaån khoâng ñònh nghóa caùc coâng cuï ñeå nhaän ra noäi dung nghe nhìn thaät söï. 3. AÂm thanh MPEG. Khaû naêng cuûa aâm thanh MPEG, veà cô baûn, aâm thanh MPEG seõ laøm giaûm kích thöôùc löu tröõ 1 taâp tin aâm thanh ñi raát nhieàu. Moät ñóa Audio-CD löu tröõ ñöôïc khoaûng 650 Mbyte döõ lieäu aâm thanh thoâ vôùi caùch maõ hoùa 16 bit (bitdepth) vaø taàn soá laáy maãu (sample rate) 44.1 kHz. Neáu ñem phaùt ra thì cuõng chæ ñöôïc 60 ñeán 72 phuùt. - bitdepth: moâ taû möùc bieân ñoä lôùn nhaát maø moät maãu aâm thanh coù theå ñaït tôùi. Ví duï: 8 bit = 256 möùc, 16 bit = 65536 möùc, veà hình aûnh thì ñoù chính laø ñoä phaân giaûi. - sample rate: moâ taû soá maãu aâm thanh ñöôïc laáy trong 1 giaây. Ví duï: 22 kHz = 22.000 maãu/1giaây. Phöông phaùp coå ñieån ñeå giaûm kích thöôùc löu tröõ laø giaûm löôïng thoâng tin. Neáu ñoåi caùch löu tröõ aâm thanh töø 16 bit sang 8 bit chuùng ta coù theå giaûm kích thöôùc löu tröõ ñi 1 nöûa, tuy nhieân nhö theá chaát löôïng aâm thanh cuõng seõ giaûm ñi 1 nöûa. Hình 4.1 4. Caùc khaùi nieäm trong aâm thanh MPEG. a. Hieäu öùng che (masking): noùi ñôn giaûn laø aâm lôùn aùt aâm beù, aâm maïnh aùt aâm yeáu. b. Ngöôõng nghe vaø möùc nhaïy caûm. · Thí nghieäm: ñaët moät ngöôøi trong phoøng yeân tónh. Taêng möùc to cuûa aâm 1kHz leân cho ñeán ngay khi coù theå nghe ñöôïc roõ raøng. Laëp laïi thí nghieäm vôùi caùc taàn soá khaùc nhau, ta veõ ñöôïc ñoà thò sau: Hình 4.2 · “Ngöôõng nghe” : laø möùc maø döôùi noù 1 aâm thanh khoâng theå nghe ñöôïc. Noù thay ñoåi theo taàn soá aâm thanh, vaø dó nhieân giöõa moãi ngöôøi khaùc nhau. Haàu heát moïi ngöôøi ñeàu nhaïy caûm ôû möùc 2 ñeán 5 kHz. Moät ngöôøi coù nghe ñöôïc aâm thanh hay khoâng tuøy thuoäc vaøo taàn soá cuûa aâm vaø ñoä to cuûa aâm ñoù ôû treân hay döôùi ngöôõng nghe taïi taàn soá ñoù. Tai nhaïy caûm ôû möùc 2 ñeán 5 kHz . · Ngöôõng nghe cuõng coù tính thích nghi, thay ñoåi coá ñònh bôûi aâm thanh maø ta nghe ñöôïc. Ví duï, moät cuoäc noùi chuyeän bình thöôøng trong moät phoøng thì coù theå nghe ñöôïc roõ raøng ôû ñieàu kieän bình thöôøng. Tuy nhieân, cuõng cuoäc troø chuyeän ñoù naèm trong vuøng laân caän cuûa nhöõng tieáng oàn lôùn, nhö laø tieáng oàn do moät chieác phaûn löïc bay ngang beân treân, laø hoaøn toaøn khoâng theå nghe ñöôïc do luùc naøy ngöôõng nghe ñaõ bò sai leäch. Khi chieác phaûn luïc ñaõ ñi roài thì ngöôõng nghe trôû laïi bình thöôøng. Aâm thanh maø ta khoâng theå nghe ñöôïc do söï thích nghi ñoäng cuûa ngöôõng nghe goïi laø bò “che” (masked). c. Che taàn soá (Frequency Masking) Thí nghieäm: · Phaùt ra 1 aâm coù taàn soá 1 kHz vôùi möùc to coá ñònh laø 60dB, goïi laø “aâm che” (masking tone). Phaùt ra moät aâm khaùc (goïi laø test tone) ôû möùc taàn soá khaùc (ví duï 1.1kHz), vaø taêng möùc to cuûa aâm naøy cho ñeán khi coù theå nghe ñöôïc noù (phaân bieät ñöôïc aâm 1.1 kHz vaø aâm che 1kHz). · Laøm laïi thí nghieäm vôùi caùc aâm thöû (test tone) vaø veõ ra moät ngöôõng maø taïi ñoù caùc aâm thöû baét ñaàu coù theå phaân bieät ñöôïc: Hình 4.3 · Laøm thí nghieäm vôùi caùc “masking tones” coù caùc taàn soá khaùc nhau, ta coù ñöôïc hình veõ: Hình 4.4 d. Che nhaát thôøi. (che thôøi gian) · Neáu ta nghe moät aâm thanh lôùn, roài ngöng noù laïi, maõi moät luùc sau ta môùi coù theå nghe ñöôïc moät aâm laân caän nhoû hôn . · Thí nghieäm: phaùt ra moät aâm che “masking tone” coù taàn soá 1kHz ôû möùc 60dB, keøm moät aâm thöû (test tone) 1.1kHz ôû möùc 40dB. Ta khoâng nghe ñöôïc aâm thöû naøy (noù ñaõ bò che). Döøng aâm che laïi, ñôïi moät luùc (delay time) ta döøng tieáp aâm thöû (test tone). Ñieàu chænh thôøi gian delay ñeå cho ta vöøa coù theå nghe ñöôïc aâm chuû (ví duï khoaûng 5ms). Laëp laïi thí nghieäm cho caùc möùc to khaùc nhau cuûa aâm thöû, ta veõ ñöôïc ñoà thò sau: Hình 4.5 · Laøm thí nghieäm töông töï vôùi caùc taàn soá khaùc nhau cho aâm thöû. Hieäu quûa che ñöôïc veõ nhö hình. Hình 4.6 5. Hoaït ñoäng: · Khi ñöa ra phöông phaùp maõ hoùa aâm thanh, neàn taûng vaãn laø yeáu toá “heä thoáng nghe” cuûa con ngöôøi. Thaät khoâng may ñoù khoâng phaûi 1 thieát bò hoaøn haûo ñeå nhaän bieát aâm thanh nhöng laø thieát bò duy nhaát chuùng ta coù ñöôïc. Nhöng chuùng ta coù theå chuyeån nhöõng khuyeát ñieåm cuûa noù thaønh öu ñieåm : ñoù laø ñaëc tính phi tuyeán cuûa ngöôõng nghe vaø khaû naêng thích hôïp cuûa noù. · MPEG hoaït ñoäng döïa treân heä thoáng nghe cuûa con ngöôøi, ñoù laø caûm giaùc veà aâm mang ñaëc tính sinh lyù vaø taâm lyù. · Aâm thanh CD ghi laïi taát caû taàn soá, keå caû nhöõng taàn soá bò ‘che’. · Aâm thanh MPEG chæ ghi laïi nhöõng taàn soá maø tai ngöôøi coù theå nghe. · Nhö vaäy, MPEG seõ boû qua nhöõng thoâng tin khoâng quan troïng. Döïa treân nghieân cöùu veà nhaän thöùc aâm thanh cuûa con ngöôøi, boä maõ hoùa seõ quyeát ñònh nhöõng thoâng tin naøo laø caên baûn vaø nhöõng thoâng tin naøo coù theå boû qua. · Hieäu quûa naøy laø bao quaùt nhöng ñaëc bieät quan troïng trong aâm nhaïc. Neáu trong moät daøn nhaïc coù moät nhaïc cuï chôi cöïc maïnh, laøm aùt tieáng cuûa caùc nhaïc cuï khaùc ta khoâng theå nghe ñöôïc. Nhöng maùy thaâu aâm vaãn ghi laïi ñaày ñuû taát caû taàn soá cuûa taát caû nhaïc cuï, nghóa laø thieát bò thaâu aâm hoaøn toaøn khoâng coù khaû naêng thích nghi ñoäng nhö con ngöôøi. Nhöng khi phaùt laïi, ta vaãn khoâng nghe ñöôïc aâm thanh cuûa nhöõng nhaïc cuï bò aùt. Vì vaäy vieäc löu tröõ/ghi laïi nhöõng taàn soá naøy laø thöøa, laøm chieám dung löôïng khaù nhieàu. Caùch ghi aâm tuyeán tính treân ñóa CD laø hoaøn toaøn khoâng hieäu quûa veà khía caïnh naøy. Do ñoù thay vì phaûi ghi laïi thoâng tin cuûa nhöõng aâm khoâng nghe ñöôïc, ta seõ daønh choã cho caùc aâm coù theå nghe ñöôïc. Theo caùch naøy, dung löôïng cuûa thieát bò ghi aâm caàn thieát coù theå xem nhö giaûm ñi maø khoâng laøm giaûm chaát löôïng aâm thanh. · Tröôùc khi chuùng ta nghe ñöôïc ñieàu gì, thoâng tin seõ ñöôïc phaân tích bôûi boä naõo cuûa chuùng ta. Naõo boä seõ dòch aâm thanh vaø loïc boû nhöõng thoâng tin khoâng caàn thieát. Kyõ thuaät aâm thanh MPEG laøm vieäc naøy thay theá cho naõo boä. Nhö vaäy, nhöõng thoâng tin leõ ra phaûi ñöôïc loïc bôûi naõo boä baây giôø khoâng coøn caàn phaûi löu tröõ chieám giöõ khoâng gian ñóa nöõa. II. CAÙC KHAÙI NIEÄM CÔ BAÛN VEÀ MPEG. 1. Löôïc ñoà maõ hoùa Perceptual Subband. Boä maõ hoùa aâm thanh theo “perceptual subband” phaân tích lieân tuïc caùc tín hieäu vaøo vaø xaùc ñònh ra ñöôøng cong che (masking curve), ñoù laø möùc ngöôõng maø nhöõng aâm thanh ôû döôùi noù khoâng theå nghe ñöôïc bôûi heä thoáng nghe cuûa con ngöôøi. Hình 4.7 Tín hieäu vaøo ñöôïc chia thaønh 1 soá daûi taàn soá, goïi laø “subband”. Moãi tín hieäu “subband” ñöôïc löôïng töû hoùa theo caùch maø söï löôïng töû hoùa tieáng oàn ñöôïc baét ñaàu bôûi vieäc maõ hoùa seõ khoâng vöôït quùa ñöôøng cong che cuûa subband ñoù. Söï löôïng töû hoùa phoå tieáng oàn vì theá thích nghi ñoäng vôùi phoå cuûa tín hieäu.Thoâng tin treân boä soá hoùa ñöôïc duøng trong moãi subband ñöôïc truyeàn doïc theo caùc maãu subband ñöôïc maõ hoùa. Boä giaûi maõ seõ giaûi maõ doøng bit (bitstream) maø khoâng caàn phaûi bieát caùch maø boä maõ hoùa xaùc ñònh nhöõng thoâng tin naøy. Ñieàu naøy cho pheùp boä maõ hoùa hoaït ñoäng vôùi nhöõng möùc ñoä khaùc nhau veà chaát löôïng vaø ñoä phöùc taïp, vaø cuõng cho pheùp söï phaùt trieån trong töông lai cuûa boä maõ hoùa. 2. Giaûi thích veà hieäu quûa che (masking effect). a. Neùn aâm thanh MPEG. MPEG coù theå neùn 1 doøng bit 32 kbit/s ñeán 384 kbit/s. Moät doøng bit aâm thanh PCM thoâ thì khoaûng 705 kbit/s, do ñoù tæ soá neùn toái ña coù theå laø 22. Tæ soá neùn bình thöôøng laø 1:6 hay 1:7. 96 kbit/s laø xem nhö trong suoát cho haàu heát caùc muïc ñích thöïc teá. Coù nghóa raèng ta khoâng caàn phaûi löu taâm ñeán baát kyø söï khaùc bieät naøo giöõa tín hieäu goác vaø tín hieäu neùn ñoái vôùi nhaïc pop hay nhaïc rock’n roll. Ñoái vôùi moät soá öùng duïng khaùc nhö laø hoøa taáu piano, toác ñoä bit coù theå leân tôùi 128 kbit/s. Ñeå ñaït ñöôïc tæ soá neùn naøy, ñoái vôùi aâm thanh, veà cô baûn ta coù hai choïn löïa: hoaëc giaûm soá laàn laáy maãu, hoaëc giaûm soá bit ñeå löôïng töû hoaù. Con ngöôøi coù theå nghe aâm thanh vôùi taàn soá töø 20 Hz ñeán 20 kHz. Theo thuyeát cuûa Nyquist, ta phaûi laáy maãu aâm thanh ôû taàn soá toái thieåu laø hai laàn taàn soá cao nhaát maø ta muoán phaùt laïi. Taàn soá laáy maãu 44,1 kHz laø thích hôïp. Vaán ñeà coøn laïi laø phaûi choïn soá bit cho moät maãu maõ hoùa laø bao nhieâu. Thoâng thöôøng laø 16 bit. Lyù do ñeå choïn con soá 16 bit baét nguoàn töø tæ soá tín hieäu vaø nhieãu (s/n). Nhieãu noùi ôû ñaây sinh ra do quùa trình soá hoùa. Cöù moãi bit theâm vaøo, ta coù tæ soá s/n toát hôn 6dB (ñoái vôùi tai ngöôøi, 6 dB töông öùng vôùi möùc to gaáp ñoâi). Aâm thanh CD ñaït tôùi khoaûng 90 dB s/n. Möùc naøy phuø hôïp vôùi phaïm vi ñoäng cuûa tai ngöôøi coøn toát. Nghóa laø ta khoâng theå nghe ñöôïc baát kyø nhieãu naøo ñeán töø baûn thaân heä thoáng. Ñieàu gì xaûy ra neáu ta laáy maãu vôùi 8 bit? Ta seõ nghe thaáy raát nhieàu tieáng soâi trong baûn ghi. Deã daøng nghe thaáy nhieãu trong khoaûng nghæ cuûa baûn nhaïc hoaëc giöõa caùc töø neáu ta ghi aâm moät gioïng noùi. b. Hieäu quûa che. Giaû söû coù moät aâm maïnh vôùi taàn soá 1000Hz, vaø moät aâm keøm theo coù taàn soá 1100Hz nhöng vôùi cöôøng ñoä aâm nhoû hôn 18dB. Ta seõ khoâng theå nghe thaáy aâm naøy vì noù ñaõ bò che hoaøn toaøn bôûi aâm chuû 1000Hz. Noùi moät caùch khaùc, moät aâm thanh yeáu gaàn moät aâm thanh maïnh seõ bò che. Neáu coù moät aâm thanh khaùc taàn soá 2000Hz cuõng coù möùc to thaáp hôn aâm 1000Hz laø 18dB thì ta seõ nghe ñöôïc aâm naøy. Ñeå khoâng nghe ñöôïc aâm naøy ta phaûi giaûm möùc to cuûa aâm naøy xuoáng coøn thaáp hôn 45dB so vôùi aâm chuû 1000Hz. Hieäu quûa che coù yù nghóa raèng ta coù theå gia taêng möùc oàn neàn xung quanh moät aâm maïnh maø vaãn khoâng nghe ñöôïc tieáng oàn vì chuùng seõ bò che hoaøn toaøn. Taêng möùc oàn neàn coøn coù nghóa laø duøng ít bit ñeå soá hoùa. Vaø ñieàu naøy cuõng gioáng nhö laø ta ñaõ neùn aâm thanh vaäy. Baây giôø haõy xem boä maõ hoaù aâm thanh MPEG hoaït ñoäng nhö theá naøo. Boä maõ hoùa chia phoå taàn soá (20Hz ñeán 20kHz) thaønh 32 daûi nhoû (sub-band). Moãi sub-band giöõ 1 phaàn nhoû cuûa phoå. Trong vuøng treân cuûa sub-band 8 ta phaùt moät aâm coù taàn soá 1000Hz vôùi möùc to 60dB. Boä maõ hoùa seõ tính toaùn hieäu quûa che cuûa aâm naøy vaø nhaän ra raèng coù moät ngöôõng che cho toaøn boä sub-band thöù 8 (taát caû nhöõng aâm coù cuøng taàn soá). Ngöôõng che naøy thaáp hôn aâm phaùt ra 35 dB. Tæ soá s/n coù theå chaáp nhaän ñöôïc laø 60 - 35 = 25 dB, töông ñöông vôùi 4 bit. Ngoaøi ra noù coøn aûnh höôûng treân caùc sub-band 9-13 vaø 5-7 vôùi hieäu quûa che giaûm daàn töø sub-band 8. Hôn nöõa, boä maõ hoùa cuõng xem xeùt möùc ñoä nhaïy caûm cuûa tai ñoái vôùi caùc taàn soá khaùc nhau. Tai ngöôøi ít nhaïy caûm vôùi caùc taàn soá cao vaø thaáp. Noù nhaïy caûm nhaát ñoái vôùi taàn soá 2-4 kHz, cuøng daûi taàn soá vôùi tieáng noùi con ngöôøi. Caùc sub-band neân phuø hôïp vôùi tai ngöôøi., nghóa laø moãi sub-band caàn coù caùc taàn soá coù cuøng caùc tính chaát aâm hoïc taâm lyù. Trong MPEG layerII, moãi sub-band coù ñoä roäng 625Hz, do ñoù caàn phaûi coù nhöõng boä loïc baêng thoâng phöùc taïp. Ñeå caùc boä loïc ñôõ phöùc taïp, ngöôøi ta theâm FFT (Fast Fourie Transform) vaøo song song vôùi boä loïc vaø söû duïng caùc thaønh phaàn phoå töø FFT nhö laø caùc thoâng tin theâm vaøo boä maõ hoùa. Baèng caùch naøy ta seõ laáy maät ñoä bit cao hôn ñoái vôùi caùc taàn soá thaáp maø tai ngöôøi nhaïy caûm hôn. Coøn nhieàu vaán ñeà caàn phaûi baøn tôùi. Chuùng ta chæ môùi giaûi thích söï che ñoàng boä, hieäu quûa che coøn xaûy ra tröôùc vaø sau moät aâm maïnh. 3. Caùc lôùp cuûa aâm thanh MPEG. Coù nhieàu söï nhaàm laãn veà lôùp aâm thanh MPEG. Taát caû caùc lôùp ñeàu döïa treân cuøng moät löôïc ñoà maõ hoùa (maõ hoùa theo nhaän thöùc). Möùc ñoä phöùc taïp cuûa boä maõ hoùa vaø giaûûi maõ tuyø thuoäc vaøo moãi lôùp. Sau ñaây laø hình aûnh cho thaáy tæ soá neùn maø ta caàn phaûi ñaït tôùi 100% chaát löôïng CD vôùi caùc boä maõ hoùa vaø giaûi maõ khaùc nhau. Hình 4.8 Sau ñaây laø chi tieát veà caùc lôùp. a. Lôùp I (Layer I): Ñaây laø lôùp ñôn giaûn nhaát phuø hôïp cho öùng duïng cuûa ngöôøi duøng. Moâ hình aâm hoïc taâm lyù cuûa lôùp naøy chæ söû duïng caùc taàn soá che. Ñieàu naøy coù nghóa raèng noù seõ boû qua caùc taàn soá bò khuaát sau caùc taàn soá khaùc. Phaïm vi toác ñoä bit töø 32 kbit/s (mono) ñeán 448 kbit/s (stereo). Tuøy thuoäc vaøo möùc ñoä phöùc taïp cuûa boä maõ hoùa, moät aâm thanh chaát löôïng cao (gaàn vôùi aâm thanh CD) yeâu caàu toác ñoä bit khoaûng 256 - 384 kb/s treân moät chöông trình stereo. Khoâng neân maõ hoùa vôùi möùc neùn cao hôn 384 kb/s. Ñoä phöùc taïp cuûa boä giaûi maõ thaáp, ñoä phöùc taïp cuûa boä maõ hoùa cao hôn 1.5 - 3 laàn. Lôùp I ñöôïc duøng nhieàu trong DDC vaø Solid State Audio. b. Lôùp II (Layer II): Lôùp II ñeà nghò möùc ñoä neùn cao hôn lôùp I vaø möùc ñoä loïc saâu hôn. Noù coù nhöõng öùng duïng soá cho caû aâm thanh chuyeân nghieäp vaø taøi töû, nhö qua ñaøi phaùt thanh, TiVi...Phaïm vi toác ñoä bit töø 32 - 192 kb/s cho aâm thanh mono, vaø töø 64 - 384 kb/s cho aâm thanh stereo. Tuøy thuoäc vaøo möùc ñoä phöùc taïp cuûa boä maõ hoùa, moät aâm thanh chaát löôïng cao (gaàn vôùi aâm thanh CD) yeâu caàu toác ñoä bit khoaûng 256 - 384 kb/s treân moät chöông trình stereo. Möùc ñoä phöùc taïp cuûa boä giaûi maõ 25% cao hôn so vôùi lôùp I, vaø boä maõ hoùa coù möùc phöùc taïp cao hôn 2 - 4 laàn. c. Lôùp III (Layer III). Lôùp III coøn ñöa ra möùc ñoä neùn vaø loïc cao hôn caû lôùp II vaø söû duïng moät boä maõ hoùa Huffman. Layer Complexity Encoder Decoder I 1.5 – 3 1 II 2 – 4 1.25 III > 7.5 2.5 Trong baûng treân, ñoä phöùc taïp cuûa boä giaûi maõ lôùp I ñöôïc duøng ñeå so saùnh. III. CAÙC THOÂNG SOÁ DUØNG TRONG MPEG. Chuaån MPEG cho pheùp ta choïn löïa caùc thoâng soá cho vieäc neùn aâm thanh toát nhaát phuø hôïp vôùi öùng duïng maø ta söû duïng. Löôïc ñoà maõ hoùa cho caùc loaïi laø toång quaùt. Caùc thoâng soá coù theå choïn löïa trong boä maõ hoùa MPEG bao goàm: Mode, Sampling frequency, bitrate, vaø Layer. a. Mode. Chuaån MPEG coù 4 cheá ñoä: · Mono. · Dual channel. · Stereo. · Intensity Stereo (coøn goïi laø Joint Stereo). Cheá ñoä Mono roõ raøng ñöôïc duøng cho aâm thanh 1 keânh. Ñeå choïn cheá ñoä cho caùc öùng duïng 2 keânh, ñaàu tieân ta phaûi xaùc ñònh ñaâu laø tín hieäu traùi vaø ñaâu laø tín hieäu phaûi ñeå chia chuùng ra thaønh 2 files khaùc nhau, nhaèm sau naøy ta coù theå laøm vieäc ñoäc laäp treân keânh traùi hoaëc phaûi. Luùc ñoù ta seõ choïn cheá ñoä Mono. Neáu 2 keânh khoâng caàn hoaït ñoäng ñoäc laäp, ta choïn Stereo, Dual hay Intensity Stereo ñeå taïo moät file duy nhaát. Cheá ñoä Stereo hay keânh Dual laø hoaøn toaøn ñoàng nhaát khi chuùng cuøng sinh ra moät file duy nhaát cho tín hieäu stereo. Tuy nhieân moät bit chæ thò seõ nhaän daïng xem moät file laø ôû cheá ñoä naøo vaø coù theå ñöôïc duøng cho nhöõng aùp duïng naøo... Cheá ñoä Intensity Stereo xem xeùt söï dö thöøa giöõa caùc keânh traùi vaø phaûi nhaèm toái öu maõ. Chaát löôïng chuû quan cuûa Intensity Stereo thay ñoåi theo hình aûnh stereo cuûa tín hieäu ñaõ maõ hoùa. Tuy nhieân noù ñaëc bieät thích hôïp cho toác ñoä truyeàn bit thaáp. b. Sampling Frequency (toác ñoä laáy maãu). Moät soá toác ñoä laáy maãu: 32kHz, 44.1kHzvaø 48kHz ñoái vôùi MPEG1 (Tieâu chuaån ISO/IEC 11172-3). 16kHz, 22.05kHzvaø24kHz ñoái vôùi MPEG2 (Tieâu chuaån ISO/IEC13818-3). Khi choïn löïa toác ñoä laáy maãu caàn xem xeùt caùc vaán ñeà: · Taàn soá laáy maãu caøng lôùn thì chaát löôïng aâm thanh caøng cao(ñoä daøi frame nhoû hôn). · Baêng thoâng tín hieäu giôùi haïn ôû möùc 15 kHz khi laáy maãu ôû toác ñoä 32 kHz vaø 8 kHz ôû toác ñoä 16 kHz. · Taàn soá laáy maãu (kHz) vaø toác ñoä cuûa aâm thanh maõ hoùa (kbps) coù theå choïn ñoäc laäp. · Taàn soá laáy maãu 44.1 kHz hay 22.05 kHz laø khoâng thieát thöïc cho vieäc choïn loïc vì ñoä daøi frame (byte) laø thay ñoåi. · Nhöõng file ñöôïc laáy maãu ôû nhöõng taàn soá khaùc nhau thì raát khoù khaên khi hoøa troän. · Khi duøng ñöôøng nhaäp soá AES/EBU, taàn soá laáy maãu bò coá ñònh bôûi tín hieäu nhaäp. Neáu khoâng baét buoäc, Digigram yeâu caàu laáy maãu ôû 48 kHz hoaëc 44.1 kHz cho phaùt thanh hay öùng duïng multimedia. Neáu ta phaûi söû duïng toác ñoä bit thaáp cho söï truyeàn coù hieäu quûa, toác ñoä 24 kHz laø thích hôïp. c. Bit Rate. Moãi Layer vaø cheá ñoä coù nhieàu caùch choïn löïa toác ñoä bit (bit rate). Vieäc choïn toác ñoä bit tuøy thuoäc tröôùc tieân vaøo chaát löôïng aâm yeâu caàu. Baêng thoâng tín hieäu laø heïp hôn neáu toác ñoä bit thaáp, khieán cho noù khoâng thöïc teá ñoái vôùi moät soá öùng duïng. Toác ñoä bit ñöôïc ño theo kilobits/sec(kbps). Khi choïn löïa toác ñoä bit caàn xem xeùt caùc vaán ñeà: · Taïi 128 kbps treân moãi keânh (hay 256 kbps stereo), chaát löôïng aâm thanh CD seõ ñaït ñöôïc vôùi Layer I hay Layer II. · Taïi 192 kbps treân moãi keânh, chaát löôïng aâm thanh laø hoaøn toaøn trong suoát. Toác ñoä 128 kbps/keânh ñöôïc duøng phoå bieán nhaát trong phaùt thanh. Noù töông öùng vôùi tæ soá neùn 1:6 ôû toác ñoä laáy maãu 48 kHz. Toác ñoä thaáp hôn 128 kbps/keânh ñöôïc duøng trong caùc öùng duïng yeâu caàu tæ soá neùn lôùn hôn do giôùi haïn cuûa baêng thoâng truyeàn hay thieát bò löu tröõ. Moät soá toác ñoä bit cung caáp bôûi chuaån aâm thanh MPEG : MPEG 1: 32 kHz, 44.1 kHz vaø 48 kHz - Layer I : 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448 kbps. Nhöõng toác ñoä naøy laø coù theå ôû cheá ñoä Mono hay stereo.. - Layer II : 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384 kbps. 32, 48, 56, 80 kbps chæ coù theå ôû cheá ñoä Mono; •64, 96, 112, 128, 160, 192 kbps coù theå ôû caû hai cheá ñoä Mono vaø Stereo;•224, 256, 320, 384 kbps chæ coù theå ôû cheá ñoä Stereo. MPEG 2 : 16 kHz, 22.05 kHz vaø 24 kHz - Layer I : 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256 kbps Nhöõng toác ñoä naøy laø coù theå ôû cheá ñoä Mono hay stereo.. - Layer II : 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160 kbps. Nhöõng toác ñoä naøy laø coù theå ôû cheá ñoä Mono hay stereo. d. Layers. Chuaån MPEG coù ba layer. Khi choïn löïa toác ñoä bit caàn xem xeùt caùc vaán ñeà: · ÔÛ cuøng toác ñoä bit, Layer II mang laïi chaát löôïng aâm thanh toát hôn Layer I. Keát luaän naøy laø chuû quan, vì söï cheânh leäch laø raát khoù phaân bieät ôû toác ñoä bit 128 kbps vaø lôùn hôn. · Duøng Layer I thì vieäc choïn loïc chính xaùc hôn Layer II bôûi vì ñoä phaân giaûi cuûa Layer I gaáp ba laà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 Caùc ñieåm kyõ thuaät maáu choát. Chuaån maõ hoùa aâm thanh MPEG chæ ñònh vieäc ghi moät soá coá ñònh caùc maãu (384 cho Layer I vaø 1152 cho Layer II) ñeå taïo ra moät chuoãi caùc bytes goïi laø “frame”. “Frame” laø thöïc theå nhoû nhaát ñöôïc ñieàu khieån bôûi moät öùng duïng. Vieäc choïn toác ñoä bit(kbps) thieát laäp neân kích thöôùc cuûa frame ñoù theo byte. Ví duï: ÔÛ 48 kHz, 128 kbps, cheá ñoä Mono, Layer II: · 48,000 maãu, töông öùng 1000 ms hay 1s, 1152 maãu töông öùng 24 ms. · ÔÛ toác ñoä bit 128,000 bits/s, 3072 bits (384 bytes) caàn cho 24 ms. · Chieàu daøi frame vì theá laø 384 byte. · Ñeå löu 1 phuùt, caàn 960,000 byte (hay khoaûng 1 Megabyte) ñóa troáng. CHÖÔNG 5. CAÙC GIAÛI THUAÄT NEÙN AÂM THANH. I. NEÀN TAÛNG LYÙ THUYEÁT THOÂNG TIN. Theo Shannon, entropy cuûa moät nguoàn thoâng tin S ñöôïc ñònh nghóa: H(S) = h = Sipilog2(1/pi) Trong ñoù: - pi laø xaùc suaát maø kyù hieäu Si xuaát hieän trong S. - log2(1/pi) chæ ra soá löôïng thoâng tin chöùa ñöïng trong Si, nghóa laø soá bit caàn thieát ñeå maõ hoùa Si. Ví duï: moät hình aûnh ñöôïc toâ ñeàu vôùi cuøng moät cöôøng ñoä maøu xaùm, töùc laø pi=1/256, thì soá bit caàn thieát ñeå maõ hoùa cho moãi möùc xaùm laø 8 bits. Entropy cuûa hình naøy laø 8. Giaûi thuaät Shannon - Fano: Ta duøng moät ví duï ñôn giaûn ñeå moâ taû giaûi thuaät: Kyù hieäu A B C D E --------------------------------------------------- Soá laàn 15 7 6 6 5 Maõ hoùa cho giaûi thuaät Shannon - Fano: Duøng caùch tieáp caän töø treân xuoáng. Saép thöù töï caùc kyù hieäu theo taàn soá xuaát hieän cuûa noù, nghóa laø: ABCDE. Chia thaønh hai phaàn, moãi phaàn töông ñöông vôùi cuøng soá laàn ñeám. Hình 5.1 Kyù hieäu Soá laàn log(1/p) Maõ Coäng(soá 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 Toång coäng(soá bit) : 89 II. CAÙC GIAÛI THUAÄT NEÙN KHOÂNG COÙ TOÅN THAÁT. 1. Maõ hoùa Huffman. Khôûi taïo: ñöa taát caû caùc node vaøo danh saùch OPEN theo thöù töï taïi moïi thôøi ñieåm. Ví duï: ABCDE. Laëp laïi cho ñeán khi danh saùch OPEN chæ coøn moät node beân traùi nhö sau: - Töø danh saùch OPEN, choïn hai node coù xaùc suaát thaáp nhaát, taïo node cha cho chuùng. - Gaùn toång caùc xaùc suaát cho node cha vaø ñöa node cha vaøo danh saùch OPEN. - Gaùn caùc maõ 0, 1 vaøo caùc nhaùnh cuûa caây, xoùa caùc node con khoûi danh saùch OPEN. Hình 5.2 Kyù hieäu Soá laàn log(1/p) Maõ Coäng(soá 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 Toång coäng (soá bit) : 87 Vieäc giaûi maõ cho caû hai giaûi thuaät treân laø taàm thöôøng chöøng naøo maø baûng maõ (thoáng keâ) ñöôïc göûi tröôùc döõ lieäu. Coù moät bit beân treân coâng vieäc truyeàn naøy, nhöng khoâng ñaùng keå neáu file döõ lieäu lôùn. Tính chaát tieàn toá duy nhaát: khoâng coù maõ naøo laø tieàn toá cho moät maõ khaùc (taát caû caùc kyù hieäu ñeàu laø node laù) ® roõ raøng laø lôùn ñoái vôùi boä giaûi maõ. Neáu vieäc thoáng keâ coù theå tieán haønh ñöôïc tröôùc ñoù vaø vôùi ñoä chính xaùc cao, thì maõ Huffman laø raát toát. Trong ví duï treân:Entropy=(15x1.38+7x2.48+ 6x2.7 + 6x2.7 + 5x2.96)/39 = 85.26 / 39 = 2.19. Soá bit caàn thieát cho maõ hoùa Huffman laø : 87 / 39 = 2.23 2. Maõ Huffman söûa ñoåi. (a) Caùc giaûi thuaät treân ñaây yeâu caàu kieán thöùc veà thoáng keâ laø ñieàu maø khoù coù theå thöïc hieän (ví duï aâm thanh, hình aûnh soáng..). (b) Ngay caû khi neáu ñieàu ñoù laø coù theå laøm ñöôïc thì chi phí cho noù khaù naëng, ñaëc bieät khi coù nhieàu baûng phaûi ñöôïc truyeàn maø moâ hình non-order() ñöôïc söû duïng, nghóa laø vieäc ñöa vaøo tính toaùn söï aûnh höôûng cuûa caùc kyù hieäu tröôùc ñoù vôùi xaùc suaát cuûa kyù hieäu hieän haønh (ví duï: “qu” thöôøng ñi vôùi nhau,..). Boä maõ hoùa Initialize_model(); while ((c = getc (input)) != eof) { encode(c, output); update_model(c); } Boä giaûi maõ Initialize_model(); while ((c = decode (input)) != eof) { putc(c, output); update_model(c); } Giaûi phaùp ñöa ra laø duøng giaûi thuaät söûa ñoåi cho thích hôïp. Nhö ví duï, vieäc maõ hoùa Huffman söûa ñoåi ñöôïc khaûo saùt sau ñaây vôùi yù töôûng laø laøm theá naøo coù theå aùp duïng vaøo caùc giaûi thuaät neùn thích hôïp khaùc. Maáu choát ôû ñaây laø caû hai boä maõ hoùa vaø giaûi maõ ñeàu duøng cuøng caùc haøm Initialize_model vaø update_model . Haøm update_model coù hai löu yù: (a) Taêng bieán ñeám. (b) Caäp nhaät caây Huffman. - Trong suoát quùa trình caäp nhaät, caây Huffman seõ ñöôïc duy trì tính keá thöøa, caùc nodes (node trong vaø laù) ñöôïc saép xeáp theo thöù töï taêng daàn cuûa troïng löôïng . - Khi caàn thieát trao ñoåi (swapping), node xa nhaát vôùi troïng löôïng W ñöôïc trao ñoåi vôùi node maø troïng löôïng cuûa noù taêng leân 1 ñôn vò W+1. Löu yù: neáu node troïng löôïng W coù caây con beân döôùi noù thì caây con ñoù cuõng phaûi dôøi cuøng vôùi noù. Caây Huffman coù theå nhìn raát khaùc so vôùi tröôùc khi trao ñoåi, ví duï trong caây thöù 3 , node A ñöôïc trao ñoåi vaø trôû thaønh node 5. Baây giôø noù ñöôïc maõ hoùa chi baèng 2 bit. 3. Maõ hoùa soá hoïc. Maõ hoùa Huffman söû duïng moät soá nguyeân k caùc bit cho moãi kyù hieäu, vì theá k khoâng bao giôø nhoû hôn 1. Ñoâi khi, ví duï phaûi truyeàn moät hình aûnh 1 bit, thì khoâng theå neùn ñöôïc. YÙ töôûng: giaû söû maãu töï laø [X,Y] vaø P(X) = 2/3 P(Y) = 1/3. Neáu ta chæ quan taâm vôùi chieàu daøi maõ hoùa laø 2 thoâng ñieäp, thì ta coù theå aùnh xaï taát caû thoâng ñieäp coù theå coù vaøo nhöõng ñoaïn trong phaïm vi [0..1] Ñeå maõ hoùa thoâng ñieäp, chæ duøng vöøa ñuû soá bit caàn thieát cho moãi ñoaïn. Töông töï, ta coù theå aùnh xaï taát caû chieàu daøi 3 thoâng ñieäp vaøo caùc ñoaïn trong [0..1]. Noùi chung, soá bit ñöôïc xaùc ñònh baèng kích thöôùc cuûa ñoaïn. Ví duï: Ñoaïn ñaàu tieân laø 8/27, caàn 2 bit® 2/3 bit cho moãi kyù töï. Ñoaïn cuoái laø 1/27, caàn 5 bit. Toùm laïi, caàn -[logp] bit ñeå bieåu dieãn cho ñoaïn coù kích thöôùc p. Vaán ñeà ñaët ra laø laøm theá naøo ñeå xaùc ñònh ñöôïc xaùc suaát? YÙ töôûng ñôn giaûn laø duøng moâ phoûng: baét ñaàu baèng vieäc ñoaùn taàn soá cuûa moät kyù hieäu. Caäp nhaät taàn soá cho moãi kyù hieäu môùi. 4. Giaûi thuaät Lempel-Ziv-Welch(LZW). Giaû söû chuùng ta muoán maõ hoùa cho moät cuoán töï ñieån Tieáng Anh 159,000 töø. Nhö vaäy moãi töø caàn 18 bit ñeå maõ hoùa. Nhöôïc: - Duøng quùa nhieàu bit. - Chæ laøm vieäc cho kyù töï tieáng Anh. Giaûi phaùp: - Caàn phaûi tìm moät caùch maõ hoùa cuoán töø ñieån cho thích hôïp. - Caùc phöông phaùp ban ñaàu ñöôïc ñeà xuaát bôûi Ziv vaø Lempel vaøo naêm 1978 vaø 1979. Terry Welch phaùt trieån löôïc ñoà vaøo naêm 1981 vaø trôû thaønh giaûi thuaät LZW. Giaûi thuaä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 nguyeân goác söû duïng töø ñieån vôùi 4K muïc töø, 256 töø ñaàu tieân laø maõ ASCII. Ví duï: chuoãi kyù töï laø “^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 kyù hieäu nhaäp ñöôïc giaûm xuoáng 7 kyù töï vaø 5 maõ. Moãi maõ/kyù hieäu seõ caàn nhieàu hôn 8 bit, ta laáy 9 bit. Thoâng thöôøng, coâng vieäc neùn chæ ñöôïc baét ñaàu khi coù moät soá lôùn byte ñöôïc ñoïc vaøo (ví duï >100). Giaûi thuaät giaûi neù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. CAÙC GIAÛI THUAÄT NEÙN COÙ TOÅN THAÁT. 1. Caùc phöông phaùp neùn aâm thanh ñôn giaûn: Caùc phöông phaùp neùn khaûo saùt ôû treân khoâng hieäu quaû trong vieäc neùn aâm thanh. Sau ñaây laø caùc phöông phaùp neùn coù toån thaát: - Neùn “silence” : doø caùc khoaûng “yeân laëng”, gioáng nhö maõ hoaù run-length. - LPC (Linear Predictive Coding). - CELP (Code Excited Linear Predictor). 2. Neùn aâm thanh duøng moâ hình aââm - taâm lyù. a. Heä thoáng nghe vaø phaùt aâm cuûa con ngöôøi. Phaïm vi nghe ñöôïc töø 20 Hz ñeán 20 kHz, nhaïy caûm ôû 2 - 5kHz. Phaïm vi phaùt aâm bình thöôøng töø 500 Hz ñeán 2 kHz. b. Che taàn soá (Frequency masking) “Ngöôõng che” (Threshold masking): sinh ra töø hieäu öùng che, moãi aâm vôùi moät taàn soá vaø möùc to (dB) xaùc ñònh seõ coù moät “ngöôõng che” (xem hình 4.3 vaø 4.4) c. Baêng giôùi haïn. Thöôùc ño taàn soá ñoàng boä khoâng töông xöùng vôùi ñoä roäng cuûa ñöôøng cong che. Baêng giôùi haïn coù ñoä roäng laø 100Hz ñoái vôùi caùc taàn soá che 500Hz. Ñònh nghóa moät ñôn vò môùi cho taàn soá laø bark ( Barkhausen) 1 Bark = beà roäng cuûa baêng giôùi haïn: - Taàn soá <500Hz : 1 bark = freq/100. - Taàn soá >500Hz : 1 bark = 9 + 4log(freq/1000). Ngöôõng che treân thöôùc ño baêng giôùi haïn: Hình 5.3 d. Che nhaát thôøi (Temporal masking): che theo thôøi gian. Tai ngöôøi cuõng coù ñaëc tính löu aâm. Neáu coù moät aâm thanh lôùn, roài ngöng noù laïi, maõi moät luùc sau ta môùi coù theå nghe ñöôïc moät aâm laân caän nhoû hôn (xem hình 4.5 vaø 4.6). 3. Neùn aâm thanh MPEG. Vaøi thoâng soá: MPEG-1 : 1.5Mbits/s cho aâm thanh vaø hình aûnh. Khoaûng 1.2 Mbits cho hình aûnh vaø 0.3Mbits/s cho aâm thanh. Aâm thanh CD khoâng neùn duøng: (44,100 maãu/s * 16bit/maãu * 2 keânh) > 1.4 Mbits/s Aâm thanh MPEG cung caáp caùc taàn soá laáy maãu laø 32, 44.1 vaø 48 kHz. Giaûi thuaät: Duøng boä loïc thoâng ñeå chia tín hieäu aâm thanh thaønh caùc sub-band theo taàn soá, töông öùng vôùi 32 baêng giôùi haïn ® loïc sub-band. Xaùc ñònh soá löôïng che cuûa moãi band gaây bôûi caùc band laân caän baèng caùc keát quûa böôùc 1 ® moâ hình aâm - taâm lyù. Neáu möùc to cuûa moät baêng maø nhoû hôn ngöôõng che thì khoâng maõ hoùa noù. Ngöôïc laïi, xaùc ñònh soá bit caàn thieát ñeå maõ hoùa sao cho nhieãu sinh ra bôûi vieäc löôïng töû hoùa naøy thaáp hôn ñöôøng cong che. 5. Ñònh daïng doøng döõ lieäu bit : Hình 5.4 Ví duï: Sau khi phaân tích, 16 band ñaàu tieân trong soá 32 band nhö sau: _________________________________________________________ Band 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Level(dB) 0 8 12 10 6 2 10 60 35 20 15 2 3 5 3 1 _________________________________________________________ Neáu möùc to cuûa aâm thöù 8 laø 60dB, noù seõ che band thöù 7 ôû möùc 12dB vaø band thöù 9 ôû möùc 15dB. Möùc to ôû band 7 laø 10dB (<12dB) neân bò boû qua, khoâng maõ hoùa. Möùc to band 9 laø 35 (> 15dB) neân ñöôïc tieáp tuïc xöû lyù. Layer I: boä loïc loaïi DCT vôùi 1 frame vaø ñoä roäng taàn soá nhö nhau treân moãi sub-band. Moâ hình aâm-taâm lyù chæ söû duïng hieäu quaû che taàn soá (Frequency masking). Layer II: söû duïng 3 frame trong boä loïc (tröôùc, hieän taïi vaø keá tieáp, toång coäng 1152 maãu). Moâ hình aâm-taâm lyù coù söû duïng hieäu quaû che nhaát thôøi (Temporal masking). Layer III: duøng boä loïc baêng giôùi haïn toát hôn, moâ hình aâm-taâm lyù coù söû duïng hieäu quaû che nhaát thôøi, vaø coù duøng boä maõ hoaù Huffman. Phaàn II THIEÁT KEÁ CHÖÔNG TRÌNH CHÖÔNG 6. LÖU ÑOÀ GIAÛI THUAÄT VAØ CAÁU TRUÙC DÖÕ LIEÄU. Thay ñoåi hay giöõ nguyeân caáu hình Caáu hình maëc ñònh Set_default() Ñaët input vaø output file; Môû input file vaø kieåm tra; Wave_open(); Open_bit_stream_w(); Memset(); Duøng moâ hình aâm-taâm lyù ñeå phaân tích döõ lieäu L3_psycho_analise(); Chuaån bò Frame döõ lieäu L3_psycho_initialise(); L3_subband_initialise(); L3_mdct_initialise(); L3_loop_initialise(); Duøng boä loïc nhieàu pha ñeå xöû lyù döõ lieäu L3_window_subband(); L3_filter_subband(); Tính MDCT cho caùc ñöôøng ra nhieàu pha L3_mdct_sub(); Xaùc ñònh soá bit ñeå maõ hoaù moät maãu döõ lieäu L3_interation_loop(); Ghi frame vaøo doøng bit L3_format_bitstream(); Laøm saïch buffer L3_FlushBitstream(); Ñoùng thieát bò ghi Close_bit_stream_w(); Ñoùng file nguoàn Wave_close(); Keát thuùc Chuaån bò vuøng ñeäm Khôûi taïo moâ hình aâm-taâm lyù Tính caùc heä soá cuûa boä loïc taàn soá Khôûi taïo döõ lieäu tính MDCT Khôûi taïo maûng pow43[I].0<I<1024 Start compress () Ñ S wave_get(buffer)0 I. SÔ ÑOÀ KHOÁI. II. CAÁU TRUÙC DÖÕ LIEÄU VAØ ÑÒNH NGHÓA. A. Caáu truùc döõ lieäu. 1. Caùc caáu truùc veà file: - Taäp tin tieâu ñeà : - Söû duïng : truy xuaát caùc taäp tin daïng *.wav vaø *.mp3. Trong chöông trình, caùc caáu truùc naøy söû duïng ôû caùc giai ñoaïn môû file, ñoïc caáu hình file, truy xuaát caùc thoâng tin veà caáu hình file. a. Caáu truùc FILE WAVE : typedef struct { FILE *file; int type; int channels; int bits; long samplerate; long total_samples; long length; } wave_t; b. Caáu truùc FILE MPEG: typedef struct { FILE *file; int type; int layr; int mode; int bitr; int psyc; int emph; int padding; long samples_per_frame; long bits_per_frame; long bits_per_slot; long total_frames; int bitrate_index; int samplerate_index; int crc; int ext; int mode_ext; int copyright; int original; int mode_gr; } mpeg_t; c. Caáu truùc config_t : typedef struct { time_t start_time; char* infile; wave_t wave; char* outfile; mpeg_t mpeg; } config_t; 2. Caáu truùc doøng bit döõ lieäu: bitstream_t - Taäp tin tieâu ñeà : - Söû duïng: duøng trong quaù trình ñoïc hoaëc ghi döõ lieäu töø file leân vuøng ñeäm vaø ngöôïc laïi. typedef struct bit_stream_struc { FILE *pt; /* con troû ñeán file bit döõ lieäu */ unsigned char *buf; /* vuøng ñeäm cho doøng bit döõ lieäu */ int buf_size; /* kích thöôùc vuøng ñeäm tính theo soá byte */ long totbit; /* ñeám bit */ int buf_byte_idx; /* chæ byte treân cuøng trong vuøng ñeäm */ int buf_bit_idx; /* bit treân cuøng cuûa byte treân cuøng trong vuøng ñeäm */ int mode; /* môû doøng bit ôû cheá ñoä ñoïc hay ghi */ int eob; /* chæ ñeán cuoái vuøng ñeäm */ int eobs; /* ñaàu cuoái cuûa côø doøng bit */ char format; /* ñònh daïng file ôû cheá ñoä ñoïc (BINARY/ASCII) */ } bitstream_t; 3. Caùc caáu truùc ñeå ñònh daïng doøng bit döõ lieäu: - Taäp tin tieâu ñeà : a. Kieåu soá nguyeân: typedef unsigned int uint32; /* ñònh nghóa soá nguyeân khoâng daáu 32 bit */ typedef unsigned short uint16; /* ñònh nghóa soá nguyeân khoâng daáu 16 bit */ b. Con troû haøm (*BitsFcnPtr): Ñaây laø moät nguyeân maãu haøm con troû caàn phaûi coù ñeå ghi caùc bit vaøo doøng döõ lieäu. Noù ghi “length” bits töø “value” bits, theo caùch ghi msb-first. Caùc bit trong value giaû ñònh laø right-justified. typedef void (*BitsFcnPtr)( uint32 value, uint16 length ); c. Caáu truùc BF_BitstreamElement: Moät BitstreamElement chöùa ñöïng döõ lieäu ñaõ maõ hoaù seõ ñöôïc ghi vaøo doøng bit. “length” bit trong soá “value” seõ ñöôïc ghi vaøo doøng bit theo msb-first. typedef struct { uint32 value; uint16 length; } BF_BitstreamElement; d. Caáu truùc BF_BitstreamPart: Moät BitstreamPart bao goàm moät nhoùm caùc “nrEntries” cuûa BitstreamElements. Moãi BitstreamElement seõ ñöôïc ghi vaøo doøng bit theo thöù töï maø noù xuaát hieän trong daõy 'element'. typedef struct { uint32 nrEntries; BF_BitstreamElement *element; } BF_BitstreamPart; e. Caáu truùc BF_FrameData Caáu truùc naøy chöùa ñöïng taát caû nhöõng thoâng tin caàn thieát cho boä ñònh daïng doøng bit ñeå maõ hoaù moät frame döõ lieäu. Ta phaûi ñieàn ñaày noù vaø troû tôùi khi ñònh daïng. typedef struct BF_FrameData { BitsFcnPtr putbits; /* your low-level bitstream function */ int frameLength; int nGranules; int nChannels; BF_BitstreamPart *header; BF_BitstreamPart *frameSI; BF_BitstreamPart *channelSI[MAX_CHANNELS]; BF_BitstreamPart *spectrumSI[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *scaleFactors[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *codedData[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *userSpectrum[MAX_GRANULES][MAX_CHANNELS]; BF_BitstreamPart *userFrameData; } BF_FrameData; f. Caùc caáu truùc lieân quan deán boä ñònh daïng: Caáu truùc naøy chöùa ñöïng thoâng tin ñöôïc cung caáp bôûi boä ñònh daïng doøng bit. Ta coù theå söû duïng noù ñeå kieåm tra vaø xem thöû boä maõ cuûa ta coù chaáp nhaän caùc keát quaû cuûa vieäc goïi boä ñònh daïng hay khoâng. typedef struct BF_FrameResults { int SILength; int mainDataLength; int nextBackPtr; } BF_FrameResults; typedef struct BF_PartHolder { int max_elements; BF_BitstreamPart *part; } BF_PartHolder; typedef struct { int frameLength; int SILength; int nGranules; int nChannels; BF_PartHolder *headerPH; BF_PartHolder *frameSIPH; BF_PartHolder *channelSIPH[MAX_CHANNELS]; BF_PartHolder *spectrumSIPH[MAX_GRANULES][MAX_CHANNELS]; } MYSideInfo; 4. Caáu truùc huffcodetab: - Taäp tin tieâu ñeà : - Söû duïng : duøng trong quaù trình maõ hoaù döõ lieäu theo thuaät toaùn Huffman. struct huffcodetab { unsigned int xlen; /*max. x-index+ */ unsigned int ylen; /*max. y-index+ */ unsigned int linbits; /*number of linbits */ unsigned int linmax; /*max number to be stored in linbits */ HUFFBITS *table; /*pointer to array[xlen][ylen] */ unsigned char *hlen; /*pointer to array[xlen][ylen] */ }; 5. Caùc caáu truùc tính MDCT. - Taäp tin tieâu ñeà : - Söû duïng : trong tính toaùn MDCT, ñònh daïng doøng bit, tính toaùn moâ hình taâm lyù, maõ hoaù döõ lieäu.. typedef struct { unsigned part2_3_length; unsigned big_values; unsigned count1; unsigned global_gain; unsigned scalefac_compress; unsigned window_switching_flag; unsigned block_type; unsigned mixed_block_flag; unsigned table_select[3]; int /* unsigned */ subblock_gain[3]; unsigned region0_count; unsigned region1_count; unsigned preflag; unsigned scalefac_scale; unsigned count1table_select; unsigned part2_length; unsigned sfb_lmax; unsigned sfb_smax; unsigned address1; unsigned address2; unsigned address3; double quantizerStepSize; /* added for LSF */ unsigned *sfb_partition_table; unsigned slen[4]; } gr_info; typedef struct { int main_data_begin; /* unsigned -> int */ unsigned private_bits; int resvDrain; unsigned scfsi[2][4]; struct { struct { gr_info tt; } ch[2]; } gr[2]; } L3_side_info_t; typedef struct { double l[2][2][21]; double s[2][2][12][3]; } L3_psy_ratio_t; typedef struct { double l[2][2][21]; double s[2][2][12][3]; } L3_psy_xmin_t; typedef struct { int l[2][2][22]; /* [cb] */ int s[2][2][13][3]; /* [window][cb] */ } L3_scalefac_t; 6. Caáu truùc scalefac_struct: - Taäp tin tieâu ñeà : struct scalefac_struct { int l[23]; int s[14]; }; B. Caùc ñònh nghóa. 1. Caùc ñònh nghóa duøng trong truy xuaát doøng bit döõ lieäu: - Taäp tin tieâu ñeà : #define MINIMUM 4 /* Minimum size of the buffer in bytes */ #define MAX_LENGTH 32 /* Maximum length of word written or read from bit stream */ #define READ_MODE 0 #define WRITE_MODE 1 #define ALIGNING 8 #define BINARY 0 #define ASCII 1 #define TRUE 1 #define FALSE 0 #ifndef BS_FORMAT #define BS_FORMAT ASCII /* BINARY or ASCII = 2x bytes */ #endif #define BUFFER_SIZE 4096 #define MIN(A, B) ((A) < (B) ? (A) : (B)) #define MAX(A, B) ((A) > (B) ? (A) : (B)) 2. Caùc ñònh nghóa duøng trong tính toaùn FFT: - Taäp tin tieâu ñeà : #define BLKSIZE_S 256 #define LOGBLKSIZE_S 8 3. Caùc ñònh nghóa duøng trong ñònh daïng doøng döõ lieäu: - Taäp tin tieâu ñeà: #define MAX_CHANNELS 2 #define MAX_GRANULES 2 4. Caùc ñònh nghóa duøng trong boä maõ hoaù Huffman: - Taäp tin tieâu ñeà: #define HUFFBITS unsigned long int #define HTN 34 #define MXOFF 250 5. Caùc ñònh nghóa duøng trong phaân tích döõ lieäu : - Taäp tin tieâu ñeà: #define e 2.71828182845 #define CBLIMIT 21 #define SFB_LMAX 22 #define SFB_SMAX 13 #define PRECALC_SIZE 1024 /* WAS 256 !!! */ 6. Caùc ñònh nghóa duøng trong moâ hình aâm taâm lyù: - Taäp tin tieâu ñeà: #define HBLKSIZE 513 #define CBANDS 63 #define CBANDS_s 42 #define BLKSIZE_s 256 #define HBLKSIZE_s 129 #define TCBMAX_l 63 #define TCBMAX_s 42 #define SBMAX_l 21 #define SBMAX_s 12 /* #define switch_pe 1800 */ #define NORM_TYPE 0 #define START_TYPE 1 #define SHORT_TYPE 2 #define STOP_TYPE 3 #define maximum(x,y) ( (x>y) ? x : y ) #define minimum(x,y) ( (x<y) ? x : y ) 7. Caùc ñònh nghóa duøng trong truy xuaát döõ lieäu nhaâp: - Taäp tin tieâu ñeà: #define Read32BitsLowHigh(f) Read32Bits(f) #define WriteString(f,s) fwrite(s,strlen(s),sizeof(char),f) #define Read32BitsLowHigh(f) Read32Bits(f) 8. Caùc ñònh nghóa duøng trong caáu truùc file wave vaø file mpeg: #define PI 3.14159265358979 #define PI4 PI/4 #define PI64 PI/64 #define SQRT2 1.41421356237 #define LOGBLKSIZE 10 #define LN_TO_LOG10 0.2302585093 #define BLKSIZE 1024 #define HAN_SIZE 512 #define SCALE_BLOCK 12 #define SCALE_RANGE 64 #define SCALE 32768 #define SBLIMIT 32 #define WAVE_RIFF_PCM 0 #define WAVE_PCM_LOHI 1 #define WAVE_PCM_HILO 2 #define WAVE_PCM_AIFF 3 #define TYPE_MPEG_I 1 #define LAYR_III 2 #define MODE_STEREO 0 #define MODE_JSTEREO 1 #define MODE_DUAL 2 #define MODE_MONO 3 #define PSY_NONE 0 #define PSYC_MUSICAM 1 #define PSYC_ATT 2 LÖU ÑOÀ Thay ñoåi hay giöõ nguyeân caáu hình Caáu hình maëc ñònh Set_default() Ñaët input vaø output file; Môû input file vaø kieåm tra; Wave_open(); Open_bit_stream_w(); Memset(); Config.mpeg.mode_gr=2; Config.mpeg.sample_per_frame=1152; __________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________; Chuaån bò Frame döõ lieäu L3_psycho_initialise(); L3_subband_initialise(); L3_mdct_initialise(); L3_loop_initialise(); Config.wave.bits_per_slot =8; Frames_processed =0; Sideinfo_len =32; Sideinfo_len +=136; Chuaån bò vuøng ñeäm Khôûi taïo moâ hình aâm-taâm lyù Tính caùc heä soá cuûa boä loïc taàn soá Khôûi taïo döõ lieäu tính MDCT Khôûi taïo maûng pow43[I].0<I<1024 StartL3-Compress () Môû thieát bò ghi Config.mpeg.total_frames=(config.wave.total _samples /config.mpeg.samples_per_frame); Sideinfo_len +=256; 1 config,wave.channels=1 Ñ S avg_slots_per_frame = ((double)config.mpeg.samples_per_frame / ((double)config.wave.samplerate / 1000))* ((double)config.mpeg.bitr / (double)config.mpeg.bits_per_slot) ; whole_slots_per_frame = (int) avg_slots_per_frame ; frac_slots_per_frame = avg_slots_per_frame - (double) whole_slots_per_frame ; slot_lag = - frac_slots_per_frame ; config.mpeg.padding = 0 Update_stastus(frames_processed ++); L3_FlushBitstream( ); close_bit_stream_w( ); wave_close( ) ; Keát thuùc buffer_windows[0] = buffer[0]; buffer_windows[1] = buffer[1]; slot_lag -= frac_slots_per_frame; config.mpeg.padding = 0 ; slot_lag -= frac_slots_per_frame; config.mpeg.padding = 0 ; config.mpeg.bits_per_frame = 8*(whole_slot_per_frame + config.mpeg.padding); mean_bit = (config.mpeg.bits_per_frame - sideinfo_len)/ config.mpeg.mode_gr ; 1 4 2 frac_slots_per_frame = 0 wave_get(buffer) 0 frac_slots_per_frame 0 slot_lag > (frac_slots_per_frame - 1) Ñ S Ñ S Ñ S Ñ S gr = 0 ; channel = 0 ; L3_psycho_analise( ) ; channel ++ ; gr ++ ; gr = 0 ; channel = 0 ; i = 0 ; L3_window_subband( ); L

Các file đính kèm theo tài liệu này:

  • docde cuong chi tiet cuoi.doc