Hướng dẫn nén file âm thanh theo chuẩn MPEG bằng Wave Form Audio

MỤC LỤC

MULTIMEDIA WINDOWS

Các nhà cung cấp phần cứng chỉ cần cung cấp một bộ điều khiển thiết bị (device driver) cho Windows, nhờ đó một ứng dụng trên Windows có thể điều khiển phần cứng thông qua Windows API. Loại thứ nhất microsoft gọi là “Wave Form Audio” (Aâm thanh dạng sóng), dựa trên nguyên tắc số hóa sóng âm, MPC lưu chúng trên bộ nhớ hay tập tin .WAV trên đĩa.

CAÁU TRUÙC WAVE FILE

Điều này không có nghĩa là file wave 16 bits sẽ nghe to hơn 256 lần file wave 8 bits, mà nó có nghĩa là âm thanh được lượng tử hóa chính xác hơn, nghe trung thực hôn. Với stereo 8 bits, mỗi mẫu gồm 2 bytes, dữ liệu sẽ được sắp xếp xen kẽ (interleave), với byte đầu (byte chẵn) là mẫu âm thanh của kênh bên trái, byte sau (byte lẻ) là của kênh bên phải.

ĐỌC RIFF FILES

Nếu định vị thành công, hàm này trả về zero và đối tượng MMCKINFO truyền cho hàm sẽ được điền vào các thông tin về chunk. Chú ý rằng giá trị cksize trả về bởi mmioDescend được sử dụng để xác định kích thước vùng đệm cần cấp phát để chứa dữ liệu.

LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ

PHÉP BIẾN ĐỔI FOURIER RỜI RẠC

Ta có thể khôi phục lại tín hiệu xa(t) bằng cách cho tín hiệu lấy mẫu đi qua một mạch lọc (tương tự) thông thấp lý tưởng (low-pass filter) có đáp ứng tần số Hlp(f) với tần số cắt là fc = Fs/2. Đây là loại tín hiệu tồn tại trong thực tế vì chúng ta chỉ có thể quan sát mọi tín hiệu trong một khoảng thời gian là hữu hạn từ N1 đến N2.

GIỚI THIỆU VỀ MPEG

GIỚI THIỆU

MPEG-3 định nghĩa một tiêu chuẩn cho High Difinition Television (HDTV), là thế hệ tiếp theo của công nghệ truyền hình theo định dạng số đầy đủ. Đặc biệt nó định nghĩa tiêu chuẩn truyền cho dòng phức tạp các hình ảnh, âm thanh và dữ liệu đồ hoạ và việc tái hợp chúng trên thiết bị thu. Chuẩn MPEG-4 định nghĩa các đối tượng hình ảnh mà trong đó các phần của một cảnh có thể được thao tác trong khi những phần khác vẫn không đổi.

Một người có nghe được âm thanh hay không tùy thuộc vào tần số của âm và độ to của âm đó ở trên hay dưới ngưỡng nghe tại tần số đó. Tuy nhiờn, cũng cuộc trò chuyện đó nằm trong vùng lân cận của những tiếng ồn lớn, như là tiếng ồn do một chiếc phản lực bay ngang bên trên, là hoàn toàn không thể nghe được do lúc này ngưỡng nghe đã bị sai lệch. Nhưng chúng ta có thể chuyển những khuyết điểm của nó thành ưu điểm : đó là đặc tính phi tuyến của ngưỡng nghe và khả năng thích hợp của nó.

Dựa trên nghiên cứu về nhận thức âm thanh của con người, bộ mã hóa sẽ quyết định những thông tin nào là căn bản và những thông tin nào có thể bỏ qua.

Hình 4.6     5. Hoạt động:
Hình 4.6 5. Hoạt động:

CÁC KHÁI NIỆM CƠ BẢN VỀ MPEG

Mỗi tín hiệu “subband” được lượng tử hóa theo cách mà sự lượng tử hóa tiếng ồn được bắt đầu bởi việc mã hóa sẽ không vượt qúa đường cong che của subband đó. Sự lượng tử hóa phổ tiếng ồn vì thế thích nghi động với phổ của tín hiệu.Thông tin trên bộ số hóa được dùng trong mỗi subband được truyền dọc theo các mẫu subband được mã hóa. Điều này cho phép bộ mã hóa hoạt động với những mức độ khác nhau về chất lượng và độ phức tạp, và cũng cho phép sự phát triển trong tương lai của bộ mã hóa.

Hiệu qủa che có ý nghĩa rằng ta có thể gia tăng mức ồn nền xung quanh một âm mạnh mà vẫn không nghe được tiếng ồn vì chúng sẽ bị che hoàn toàn. Để các bộ lọc đỡ phức tạp, người ta thêm FFT (Fast Fourie Transform) vào song song với bộ lọc và sử dụng các thành phần phổ từ FFT như là các thông tin thêm vào bộ mã hóa. Tùy thuộc vào mức độ phức tạp của bộ mã hóa, một âm thanh chất lượng cao (gần với âm thanh CD) yêu cầu tốc độ bit khoảng 256 - 384 kb/s trên một chương trình stereo.

Tùy thuộc vào mức độ phức tạp của bộ mã hóa, một âm thanh chất lượng cao (gần với âm thanh CD) yêu cầu tốc độ bit khoảng 256 - 384 kb/s trên một chương.

Hình 4.8 Sau đây là chi tiết về các lớp.
Hình 4.8 Sau đây là chi tiết về các lớp.

CÁC THÔNG SỐ DÙNG TRONG MPEG

Chế độ Stereo hay kênh Dual là hoàn toàn đồng nhất khi chúng cùng sinh ra một file duy nhất cho tín hiệu stereo. Tuy nhiên một bit chỉ thị sẽ nhận dạng xem một file là ở chế độ nào và có thể được dùng cho những áp dụng nào. Nếu không bắt buộc, Digigram yêu cầu lấy mẫu ở 48 kHz hoặc 44.1 kHz cho phát thanh hay ứng dụng multimedia.

Băng thông tín hiệu là hẹp hơn nếu tốc độ bit thấp, khiến cho nó không thực tế đối với một số ứng dụng. Tốc độ thấp hơn 128 kbps/kênh được dùng trong các ứng dụng yêu cầu tỉ số nén lớn hơn do giới hạn của băng thông truyền hay thiết bị lưu trữ. • Dùng Layer I thì việc chọn lọc chính xác hơn Layer II bởi vì độ phân giải của Layer I gấp ba lần Layer II.

Chuẩn mã hóa âm thanh MPEG chỉ định việc ghi một số cố định các mẫu (384 cho Layer I và 1152 cho Layer II) để tạo ra một chuỗi các bytes gọi là “frame”.

CÁC GIẢI THUẬT NÉN ÂM THANH

NỀN TẢNG LÝ THUYẾT THÔNG TIN

• Tính chất tiền tố duy nhất: không có mã nào là tiền tố cho một mã khác (tất cả cỏc ký hiệu đều là node lỏ) → rừ ràng là lớn đối với bộ giải mó. (b) Ngay cả khi nếu điều đó là có thể làm được thì chi phí cho nó khá nặng, đặc biệt khi có nhiều bảng phải được truyền mà mô hình non-order() được sử dụng, nghĩa là việc đưa vào tính toán sự ảnh hưởng của các ký hiệu trước đó với xác suất của ký hiệu hiện hành (ví dụ: “qu” thường đi với nhau,.). Như ví dụ, việc mã hóa Huffman sửa đổi được khảo sát sau đây với ý tưởng là làm thế nào có thể áp dụng vào các giải thuật nén thích hợp khác.

- Trong suốt qúa trình cập nhật, cây Huffman sẽ được duy trì tính kế thừa, các nodes (node trong và lá) được sắp xếp theo thứ tự tăng dần của trọng lượng. - Khi cần thiết trao đổi (swapping), node xa nhất với trọng lượng W được trao đổi với node mà trọng lượng của nó tăng lên 1 đơn vị W+1. • Nếu ta chỉ quan tâm với chiều dài mã hóa là 2 thông điệp, thì ta có thể ánh xạ tất cả thông điệp có thể có vào những đoạn trong phạm vi [0.1].

• Layer III: dùng bộ lọc băng giới hạn tốt hơn, mô hình âm-tâm lý có sử dụng hiệu quả che nhất thời, và có dùng bộ mã hoá Huffman.

Hình 5.4 Vớ duù:
Hình 5.4 Vớ duù:

LƯU ĐỒ GIẢI THUẬT VÀ CẤU TRÚC DỮ LIỆU

SƠ ĐỒ KHỐ

CẤU TRÚC DỮ LIỆU VÀ ĐỊNH NGHĨA

- Sử dụng: dùng trong quá trình đọc hoặc ghi dữ liệu từ file lên vùng đệm và ngược lại. Đây là một nguyên mẫu hàm con trỏ cần phải có để ghi các bit vào dòng dữ liệu. Một BitstreamElement chứa đựng dữ liệu đã mã hoá sẽ được ghi vào dòng bit.

Mỗi BitstreamElement sẽ được ghi vào dòng bit theo thứ tự mà nó xuất hiện trong dãy 'element'. Cấu trúc này chứa đựng tất cả những thông tin cần thiết cho bộ định dạng dòng bit để mã hoá một frame dữ liệu. Ta có thể sử dụng nó để kiểm tra và xem thử bộ mã của ta có chấp nhận các kết quả của việc gọi bộ định dạng hay không.

- Sử dụng : trong tính toán MDCT, định dạng dòng bit, tính toán mô hình tâm lý, mã hoá dữ liệu.

GIAO DIỆN VÀ THUYẾT MINH CHƯƠNG TRÌNH I. Giới thiệu

Khi đã chọn được tập tin nguồn trong phần 2 hoặc 3 thì trong ô này sẽ tự động xuất hiện đường dẫn và tên tập tin đích. Phím này được nhấn sau khi đã chọn các tập tin nguồn và đích để cập nhật các thông số chuẩn bị cho quá trình nén và kích hoạt phím Compress. Chương trình có nền là hộp thoại MP3 COMPRESSOR hiển thị các phím nhấn cho người sử dụng lựa chọn và chạy ứng dụng.

Hàm này khởi tạo một số giá trị mặc định cho hộp thoại, nhằm giúp cho người sử dụng có một cái nhìn toàn cục và hiểu được ngay ứng dụng, để từ đó có thể chọn lựa các thông số thích hợp cho ứng dụng. Hàm mở hộp thoại Open của Windows để chọn file nguồn có phần mở rộng mặc định là .wav, gán cho biến m_file_in đường dẫn và tên file đã chọn. Hàm mở hộp thoại Save của Windows để chọn đường dẫn và tên tập tin đích trong trường hợp không muốn đường dẫn và tên file mặc định do hàm OnFileOpen( ) tạo ra, và gán nó cho biến m_file_out.

Hàm mở file nguồn và kiểm tra xem định dạng file có hợp lệ không, nếu không thì sẽ hiện thông bào và chọn lại file khác.