Đồ án Nén âm thanh file *.wav theo chuẩn mpeg - Đỗ Văn Tuấn
Bạn đang xem tài liệu "Đồ án Nén âm thanh file *.wav theo chuẩn mpeg - Đỗ Văn Tuấn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- do_an_nen_am_thanh_file_wav_theo_chuan_mpeg_do_van_tuan.ppt
Nội dung text: Đồ án Nén âm thanh file *.wav theo chuẩn mpeg - Đỗ Văn Tuấn
- TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐẠI HỌC THUỶ SẢN KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐềĐề tài:tài: NÉNNÉN ÂMÂM THANHTHANH FILEFILE *.WAV*.WAV THEOTHEO CHUẨNCHUẨN MPEGMPEG Giáo viên hướng dẫn : TS Dư Thanh Bình Sinh viên thực hiện : Đỗ Văn Tuấn
- PHẦN I LÝ THUYẾT CHƯƠNG1 CÁC KIẾN THỨC CƠ BẢN VỀ ÂM THANH I SÓNG ÂM CHƯƠNG 2 WAVE FILE I CẤU TRÚC WAVE FILE CHƯƠNG 3 LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ I PHÉP BIẾN ĐỔI FOURIER RỜI RẠC CHƯƠNG 4 GIỚI THIỆU VỀ MPEG I CÁC KHÁI NIỆM TRONG ÂM THANH MPEG II CÁC THÔNG SỐ CHƯƠNG 5 CÁC GIẢI THUẬT NÉN ÂM THANH I CÁC GIẢI THUẬT NÉN KHÔNG CÓ TỔN THẤT II CÁC GIẢI THUẬT NÉN CÓ TỔN THẤT PHẦN II THIẾT KẾ CHƯƠNG TRÌNH CHƯƠNG 6 SƠ ĐỒ KHỐI CỦA GIẢI THUẬT I SƠ ĐỒ KHỐI CHƯƠNG 7 GIAO DIỆN VÀ THUYẾT MINH CHƯƠNG TRÌNH I GIAO DIỆN II KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI
- Sóng âm. SóngSóng âmâm làlà mộtmột loạiloại sóngsóng cơcơ cócó biênbiên độđộ daodao độngđộng nhỏnhỏ màmà thínhthính giácgiác nhậnnhận biếtbiết đượcđược ThíThí dụdụ daodao độngđộng phátphát rara từtừ dâydây đànđàn,, mặtmặt trốngtrống đangđang rungrung độngđộng TrongTrong khôngkhông khíkhí cũngcũng nhưnhư trongtrong mọimọi chấtchất khíkhí kháckhác,, nhữngnhững daodao độngđộng truyềntruyền điđi dướidưới dạngdạng sóngsóng dọcdọc,, khikhi đếnđến taitai ngườingười nhữngnhững daodao độngđộng cócó tầntần sốsố từtừ 1616 đếnđến 2000020000 HzHz sẽsẽ gâygây cảmcảm giácgiác đặcđặc biệtbiệt vềvề âmâm CácCác daodao độngđộng đànđàn hồihồi cócó tầntần sốsố f>20.000f>20.000 HzHz làlà sóngsóng siêusiêu âmâm CácCác daodao độngđộng đànđàn hồihồi cócó tầntần sốsố f<16f<16 HzHz làlà sóngsóng hạhạ âm.âm. Mỗi Mỗi âmâm cócó mộtmột tầntần sốsố riêngriêng,, đơnđơn vịvị củacủa tầntần sốsố làlà héchéc (Hz)(Hz) vớivới địnhđịnh nghĩanghĩa:”:”HécHéc làlà tầntần sốsố củacủa mộtmột qúaqúa trìnhtrình daodao độngđộng âmâm trongtrong đóđó mỗimỗi giâygiây thựcthực hiệnhiện đượcđược mộtmột daodao độngđộng”.”. 11 HécHéc (Hz)(Hz) == 11 daodao độngđộng // 11 giâygiây
- Cấu trúc của Wave File như sau typedef struct { WORD wFormatTag; WORD nChannels; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; WORD nBlockAlign; } WAVEFORMAT;
- Biến đổi Fourier của tín hiệu rời rạc: Biến đổi Fourier của dãy rời rạc. Đối với tín hiệu tuần hoàn. Phép biến đổi Fourier thuận. Phép biến đổi Fourier nghịch. Phép biến đổi nhanh Fourier(FFT).
- Các khái niệm trong âm thanh MPEG. HiệuHiệu ứngứng cheche (masking):(masking): nóinói đơnđơn giảngiản làlà âmâm lớnlớn átát âmâm bébé,, âmâm mạnhmạnh átát âmâm yếuyếu NgưỡngNgưỡng nghenghe vàvà mứcmức nhạynhạy cảmcảm ““NgưỡngNgưỡng nghenghe”” làlà mứcmức màmà dướidưới nónó 11 âmâm thanhthanh khôngkhông thểthể nghenghe đượcđược HầuHầu hếthết mọimọi ngườingười đềuđều nhạynhạy cảmcảm ởở mứcmức 22 đếnđến 55 kHz.kHz. MộtMột ngườingười cócó nghenghe đượcđược âmâm thanhthanh hayhay khôngkhông tùytùy thuộcthuộc vàovào tầntần sốsố củacủa âmâm vàvà độđộ toto củacủa âmâm đóđó ởở trêntrên hayhay dướidưới ngưỡngngưỡng nghenghe tạitại tầntần sốsố đóđó TaiTai nhạynhạy cảmcảm ởở mứcmức 22 đếnđến 55 kHzkHz CheChe tầntần sốsố (Frequency(Frequency Masking)Masking) CheChe nhấtnhất thờithời ((cheche thờithời giangian))
- Lược đồ mã hóa Perceptual Subband.
- Các thông số: ChuẩnChuẩn MPEGMPEG chocho phépphép tata chọnchọn lựalựa cáccác thôngthông sốsố chocho việcviệc nénnén âmâm thanhthanh tốttốt nhấtnhất phùphù hợphợp vớivới ứngứng dụngdụng màmà tata sửsử dụngdụng LượcLược đồđồ mãmã hóahóa chocho cáccác loạiloại làlà tổngtổng quátquát CácCác thôngthông sốsố cócó thểthể chọnchọn lựalựa trongtrong bộbộ mãmã hóahóa MPEGMPEG baobao gồmgồm:: Mode,Mode, SamplingSampling frequency,frequency, bitratebitrate,, vàvà Layer.Layer.
- 1. Các giải thuật nén không có tổn thất 1.1. MãMã hóahóa HuffmanHuffman KhởiKhởi tạo:tạo: đưađưa tấttất cảcả cáccác nodenode vàovào danhdanh sáchsách OPENOPEN theotheo thứthứ tựtự tạitại mọimọi thờithời điểm.điểm. Lặp Lặp lạilại chocho đếnđến khikhi danhdanh sáchsách OPENOPEN chỉchỉ còncòn mộtmột nodenode bênbên tráitrái nhưnhư sau:sau: TừTừ danhdanh sáchsách OPEN,OPEN, chọnchọn haihai nodenode cócó xácxác suấtsuất thấpthấp nhất,nhất, tạotạo nodenode chacha chocho chúng.chúng. GánGán tổngtổng cáccác xácxác suấtsuất chocho nodenode chacha vàvà đưađưa nodenode chacha vàovào danhdanh sáchsách OPEN.OPEN. GánGán cáccác mãmã 0,10,1 vàovào cáccác nhánhnhánh củacủa cây,cây, xóaxóa cáccác nodenode concon khỏikhỏi danhdanh sáchsách OPEN.OPEN.
- 2.2. MãMã HuffmanHuffman sửasửa đổiđổi Bộ mã hóa Bộ giải mã Initialize_model(); Initialize_model(); while ((c = getc while ((c = decode (input)) != eof) (input)) != eof) { { encode(c, output); putc(c, output); update_model(c); update_model(c); } }
- 3.3. MãMã hóahóa sốsố họchọc ÝÝ tưởng:tưởng: giảgiả sửsử mẫumẫu tựtự làlà [X,Y][X,Y] vàvà P(X)P(X) == 2/32/3 P(Y)P(Y) == 1/3.1/3. NếuNếu tata chỉchỉ quanquan tâmtâm vớivới chiềuchiều dàidài mãmã hóahóa làlà 22 thôngthông điệp,điệp, thìthì tata cócó thểthể ánhánh xạxạ tấttất cảcả thôngthông điệpđiệp cócó thểthể cócó vàovào nhữngnhững đoạnđoạn trongtrong phạmphạm vivi [0 1][0 1] Để Để mãmã hóahóa thôngthông điệp,điệp, chỉchỉ dùngdùng vừavừa đủđủ sốsố bitbit cầncần thiếtthiết chocho mỗimỗi đoạn.đoạn. TươngTương tự,tự, tata cócó thểthể ánhánh xạxạ tấttất cảcả chiềuchiều dàidài 33 thôngthông điệpđiệp vàovào cáccác đoạnđoạn trongtrong [0 1].[0 1]. NóiNói chung,chung, sốsố bitbit đượcđược xácxác địnhđịnh bằngbằng kíchkích thướcthước củacủa đoạn.đoạn.
- 4.4. GiảiGiải thuậtthuật Lempel-Ziv-Welch(LZW).Lempel-Ziv-Welch(LZW). GiảGiả sửsử chúngchúng tata muốnmuốn mãmã hóahóa chocho mộtmột cuốncuốn từtừ điểnđiển TiếngTiếng AnhAnh 159,000159,000 từ.từ. NhưNhư vậyvậy mỗimỗi từtừ cầncần 1818 bitbit đểđể mãmã hóa.hóa. Nhược:DùngNhược:Dùng qúaqúa nhiềunhiều bit.bit. ChỉChỉ làmlàm việcviệc chocho kýký tựtự tiếngtiếng Anh.Anh. GiảiGiải pháp:Cầnpháp:Cần phảiphải tìmtìm mộtmột cáchcách mãmã hóahóa cuốncuốn từtừ điểnđiển chocho thíchthích hợp.hợp. GiảiGiải thuật:thuật: w = NIL; while (read a character k) { if wk exists in the dictionary w = wk; else add wk to the dictionary; output the code for w; w = k; }
- • Các giải thuật nén có tổn thất. 1.1. CácCác phươngphương pháppháp nénnén âmâm thanhthanh đơnđơn giản:giản: NénNén “silence”:“silence”: dòdò cáccác khoảngkhoảng “yên“yên lặng”,lặng”, giốnggiống nhưnhư mãmã hoáhoá run-run- length.length. LPCLPC (Linear(Linear PredictivePredictive Coding).Coding). CELPCELP (Code(Code ExcitedExcited LinearLinear Predictor).Predictor). 2.2. NénNén âmâm thanhthanh dùngdùng mômô hìnhhình ââmââm tâmtâm lýlý a.a. HệHệ thốngthống nghenghe vàvà phátphát âmâm củacủa concon ngườingười PhạmPhạm vivi nghenghe đượcđược từtừ 2020 HzHz đếnđến 2020 kHz,kHz, nhạynhạy cảmcảm ởở 2-2- 5kHz.5kHz. PhạmPhạm vivi phátphát âmâm bìnhbình thườngthường từtừ 500500 HzHz đếnđến 22 kHz.kHz. b.b. CheChe tầntần sốsố (Frequency(Frequency masking)masking) “Ngưỡng“Ngưỡng che”che” (Threshold(Threshold masking):sinhmasking):sinh rara từtừ hiệuhiệu ứngứng che,che, mỗimỗi âmâm vớivới mộtmột tầntần sốsố vàvà mứcmức toto (dB)(dB) xácxác địnhđịnh sẽsẽ cócó mộtmột “ngưỡng“ngưỡng che”che” c.c. BăngBăng giớigiới hạnhạn BăngBăng giớigiới hạnhạn cócó độđộ rộngrộng làlà 100Hz100Hz đốiđối vớivới cáccác tầntần sốsố cheche 500Hz.>500Hz. d.d. CheChe nhấtnhất thờithời (Temporal(Temporal masking):masking): cheche theotheo thờithời gian.gian.
- 3. 3. GiảiGiải thuậtthuật NénNén âmâm thanhthanh MPEG.MPEG. DùngDùng bộbộ lọclọc thôngthông đểđể chiachia tíntín hiệuhiệu âmâm thanhthanh thànhthành cáccác sub-bandsub-band theotheo tầntần số,số, tươngtương ứngứng vớivới 3232 băngbăng giớigiới hạnhạn lọclọc sub-band.sub-band. XácXác địnhđịnh sốsố lượnglượng cheche củacủa mỗimỗi bandband gâygây bởibởi cáccác bandband lânlân cậncận bằngbằng cáccác kếtkết qủaqủa bướcbước 11 mômô hìnhhình âmâm tâmtâm lý.lý. NếuNếu mứcmức toto củacủa mộtmột băngbăng màmà nhỏnhỏ hơnhơn ngưỡngngưỡng cheche thìthì khôngkhông mãmã hóahóa nó.nó. NgượcNgược lại,lại, xácxác địnhđịnh sốsố bitbit cầncần thiếtthiết đểđể mãmã hóahóa saosao chocho nhiễunhiễu sinhsinh rara bởibởi việcviệc lượnglượng tửtử hóahóa nàynày thấpthấp hơnhơn đườngđường congcong che.che. ĐịnhĐịnh dạngdạng dòngdòng dữdữ liệuliệu bitbit ::
- Cấu hình mặc định SƠ ĐỒ KHỐI. Set_default() Thay đổi hay giữ nguyên cấu hình Đặt input và output file; Mở input file và kiểm tra; Wave_open(); Start compress () Open_bit_stream_w(); Memset(); Chuẩn bị vùng đệm L3_psycho_initialise(); Khởi tạo mô hình âm-tâm lý L3_subband_initialise(); Tính các hệ số của bộ lọc tần số L3_mdct_initialise(); Khởi tạo dữ liệu tính MDCT L3_loop_initialise(); Khởi tạo mảng pow43[i].0 0 Đ Làm sạch buffer Dùng mô hình âm-tâm lý để phân tích dữ liệu L3_FlushBitstream() L3_psycho_analise(); Đóng thiết bị ghi Dùng bộ lọc nhiều pha để xử lý dữ liệu Close_bit_stream_w(); L3_window_subband(); L3_filter_subband(); Đóng file nguồn Wave_close(); Tính MDCT cho các đường ra nhiều pha L3_mdct_sub(); Xác định số bit để mã hoá một mẫu dữ liệu Kết thúc L3_interation_loop(); Ghi frame vào dòng bit L3_format_bitstream();
- Giao diện chương trình
- KẾT QUẢ ĐẠT ĐƯỢC Đồ án tốt nghiệp đã hoàn thành các nhiệm vụ đề ra trong phạm vi cho phép. Do điều kiện về thời gian cũng như trình độ còn hạn chế nên đồ án này dừng lại ở mức nghiên cứu một số phương pháp nén âm thanh. Trên cơ sở đó xây dựng phần mềm thử nghiệm nén âm thanh theo chuẩn MPEG_I layer3. Mặt khác, do mới chỉ đánh giá âm thanh theo phương pháp chủ quan nên chất lượng âm thanh sau khi nén chưa được như mong muốn. Thế nhưng những gì đạt được trong đồ án này chủ yếu là nhằm giúp em có thể nắm bắt được vững hơn về mặt lý thuyết. Các kết quả này rất quan trọng và hữu ích cho mọi hoạt động nghiên cứu sau này. Hướng phát triển Từ những kết quả đạt được là cơ sở để em nghiên cứu tiếp và áp dụng không chỉ nén âm thanh mà còn ứng dụng để nén nhiều dạng dữ liệu khác. Cuối cùng em xin bày tỏ lòng biết ơn sâu sắc đến Thầy giáo: TS Dư Thanh Bình và các thầy cô trong khoa CNTT-ĐHBKHN và ĐHTS đã hướng dẫn và giúp đỡ tận tình để em hoàn thành đề tài này.