Sau đây là phầm mô tả chi tiết về AAC được định nghĩa trong MPEG-2 và những tính năng được thêm vào AAC trong MPEG-4.
AAC hỗ trợ 3 loại profile. Mỗi loại profile là một hồ sơ miêu tả cấu hình cấu hình khác của các thuật toán cơ bản và các profile này cung cấp các thoả hiệp khác nhau giữa hiệu suất nén và độ phức tạp của bộ mã hoá (ảnh hưởng đến khả năng thực hiện của máy tính). Một chỉ mục 2 bit chỉ profile nào sử dụng sẽ được lưu lại sau khi nén. Index Profile 0 1 2 3 Chính Độ phức tạp thấp Tốc độ lấy mẫu thay đổi Dự trữ Hình 3.17: Ba loại profile của AAC
• Index 0, profile chính (Main Profile). Trong profile này, AAC đưa ra khả năng nén tốt nhất cho bất cứ tốc độ bit và tốc độ lấy mẫu nào. Tất cả các module, các hàm, và các công cụ của đặc tả ( ngoại trừ công cụđiểu chỉnh khuếch đại) đều được miêu tả. Đây là profile thông dụng và nó được thực hiện khi có đủ bộ nhớ và năng lực xử lý (hiện nay thì tất cả các máy tính đều có thể áp dụng được).
• Index 1, profile độ phức tạp thấp (Low Complexity Profile – LC Profile). Điều chỉnh khuếch đại và dựđoán không được sử dụng. Và TNS cũng bị giới hạn còn 12. Mặt khác, LC là một profile con của profile chính cho nên là LC có thểđược giải mã bởi bộ giải mã của profile chính.
• Index 2, profile tốc độ lấy mẫu thay đổi (Scalable Sampling Rate Profile - SSR). Profile này được thiết kếđể làm đơn giản độ phức tạp tính toán khi dữ liệu âm thanh gốc chỉ gồm những khoảng tần số giới hạn (như vậy sẽ làm
giảm băng thông sau khi được mã hoá). Công cụđiều chỉnh khuếch đại được yêu cầu trong SSR và công cụ này chỉđược sử dụng duy nhất trong SSR. Order của TNS và băng thông cũng bị giới hạn. Một luồng nén của LC có thế giải mã được bởi SSR nhưng kết quả của âm thanh sau khi giải mã sẽ bị giới hạn
• Index 3 được dự trữ cho profile trong tương lai.
Điều chỉnh khuếch đại là công cụ tiền xử lý và chỉ được sử dụng trong profile SSR. Nó bao gồm nhiều module lọc, nhận dạng độ khuếch đại, thay đổi độ khuếch đại. Điều chỉnh khuếch đại bắt đầu bằng việc lọc dữ liệu đầu vào tạo thành bốn băng tần rộng 6 KHz. Các hệ số phổ của mỗi dải tần số được kiểm tra bởi bộ nhận dạng dộ khuếch đại, Bộ nhận dạng tìm kiếm các thay đổi mạnh trong độ khuếch đại của tín hiệu (nghĩa là các hệ số liên tục nhau rất khác nhau về kích thước). Bộ thay đổi độ khuếch đại sử dụng các kết quả này để thêm vào các hệ số này nhằm làm tăng khả năng nén tín hiệu âm thanh đầu vào.
Hình 3.20: Module mã hoá và giải mã điều chỉnh khuếch đại
Filtering, bộ mã hoá AAC chuyển đổi các mẫu âm thanh thành các hệ số tần số bằng biến đổi cosin rời rạc cải biên (MDCT). Quá trình xử lý giống với mp3, nhưng với độ phân giải tần số cao hơn và có nhiều cải tiến hơn. Bộ mã hoá sử dụng hai loại cửa sổ: dài và ngắn. Cửa sổ dài gồm có 2048 mẫu liên tục nhau và được biến đổi để tạo ra 1024 hệ số tần số (biến đổi dài). Một cửa sổ ngắn hơn có 256 mẫu và đưa ra kết quả là 128 hệ số (biến đổi ngắn). Một khi hệ số của một cửa sổ đã được tính toán thì bộ mã hoá chuyển vào thêm một số mẫu mới bằng với ½ kích thước của cửa sổ.
Cửa sổ dài tạo ra nhiều hệ số, do đó mỗi hệ số sẽ tương ứng với một dải tần số hẹp hơn. Điều này dẫn tới việc lượng tử sẽ chính xách hơn và giúp ích cho việc làm giảm băng thông vì sẽ có thể bỏ nhiều đoạn âm thanh nằm trong vùng tần số mà không có tác động tới tai người.
Độ rộng của dải tần số tuỳ thuộc vào tốc độ lấy mẫu (số lượng mẫu âm thanh trong một giây), số lượng kênh (hai cho âm thanh nổi) và số lượng dải tần số. AAC cung cấp đặc tả và bảng thống kê cho 12 loại tốc độ lấy mẫu sau (tính bằng Hz): 96000, 88200, 64000, 48000, 44100, 32000, 24000, 16000, 12000, 11025, 8000. Đối với tốc độ lấy mẫu 48000 Hz và có 2 kênh, mỗi kênh được lấy mẫu ở tốc độ 24000 Hz.
Hình 3.21: Tập 12 dải tần số và đặc tả
Công thức cho MDCT của bộ mã hoá được cho như sau:
Trong đó Zi,n là một mẫu âm thanh, i là chỉ số khối, n là mẫu âm thanh ở cửa sổ hiện tại, k là chỉ số của hệ số tần số X, N là kích thước cửa sổ (2048 hoặc 256) và n0= (N/2+1)/2.
Lượng tử trong AAC cũng giống như những tính năng khác của AAC đều cải tiến từ mp3. Quy tắc lượng tử như sau:
Trong đó sign là bit dấu của hệ số x(i), nint là hàm làm tròn số nguyên gần nhất và sf liên quan tới hệ số tỉ lệ. Thêm vào đó, giá trị lượng tử giới hạn trong vòng 8191 giá trị.
Quy tắc lượng tử bao gồm hệ số tỉ lệ. Mỗi hệ số tần số đều được co giãn trong suốt quá trình lượng tử bởi một đại lượng liên quan tới hệ số tỉ lệ. Hệ số này là một số nguyên không dấu 8 bit. Khi 1024 hệ số tần số của một cửa sổ dài được lượng tử, chúng được gom nhóm thành các dải hệ số tỉ lệ, mỗi dải là tập hợp hệ số tần sốđược tỉ lệ bởi một hệ số tỉ lệ.
Mã hoá Huffman không nhiễu. khi hệ số tần sốđã được lượng tử, chúng sẽ được thay thế bởi mã Huffman. Điều này làm tăng tỉ lệ nén nhưng không hao hụt, do đó nó được gọi là “không nhiễu”. Có 12 bảng mã Huffman. Một khối 1024 hệ số đã được lượng tử sẽ được chia thành nhiều vùng mà mỗi vùng chứa một hoặc nhiều dải hệ số tỉ lệ. Một bảng mã được sử dụng cho tất cả các hệ số của một vùng, nhưng các vùng khác nhau có thể sẽ sử dụng các bảng mã khác nhau. Độ dài của mỗi vùng (theo đơn vị dải hệ số tỉ lệ) và một chỉ mục cho bảng mã Huffman sử dụng để mã hoá cho vùng phải được thêm vào luồng dữ liệu kết quả.
Cũng có ý kiến cho rằng trong mỗi vùng cần sử dụng thuật toán mà hoá Huffman thích ứng để giảm thiểu tổng số lượng bit khi mã hoá một khối. Do đó, bộ mã hoá phải hoạt động một thuật toán phức tạp hơn.
Temporal Noise Shaping (TNS). Module này của AAC nhằm giải quyết vấn đề pre-echo, một vấn đề được tạo ra khi tín hiệu âm thanh khi được nén có thời gian xuất hiện ngắn, thay đổi nhanh chóng. Một cửa sổ lọc dài chứa 2048 mẫu. Cửa sổ này biểu diễn được một khoảng thời gian rất ngắn. Với tốc độ lấy mẫu 44100
mẫu/giây, thì 2048 mẫu tương đương với khoảng thời gian 0.46 giây, một khoảng thời gian rất ngắn. Nếu âm thanh gốc không thay đổi nhiều trong suốt khoảng thời gian này, bộ mã hoá AAC sẽ quyết định đúng ngưỡng che và thực hiện lượng tử đúng. Tuy nhiên nếu tín hiệu âm thanh thay đổi nhiều trong suốt khoảng thời gian này, thì quá trình lượng tử sẽ sai vì nhiễu lượng tử sẽ xuất hiện trong mỗi cửa sổ lọc. module TNS làm giảm bớt vấn đề preecho bằng cách nắn lại và điều chỉnh cấu trúc của nhiễu lượng tử. Nguyên lý làm việc của TNS dựa trên sự tương đồng giữa các mẫu âm thanh cũng giống như các điểm ảnh gần nhau. Đối với âm thanh ngắn, các mẫu âm thanh sẽ không tương đồng.
Dựđoán. Công cụ này tăng khả năng nén bằng cách dựđoán hệ số tần số từ những hệ số tương ứng trong 2 cửa sổ trước và lượng tử, mã hoá sự trên sự khác nhau khi dự đoán. Dự đoán này được sử dụng khi có sự tương đồng giữa các mẫu âm thanh. Trong AAC, cửa sổ ngắn được sử dụng khi bộ mã hoá cho rằng âm thanh đang được nén thì không ổn định. Do đó, dựđoán chỉđược sử dụng cửa sổ dài.
Thuật toán dự đoán thì khá phức tạp và yêu cầu nhiều khả năng tính toán. Nên bộ mã hoá cho thuật toán dự đoán thường thì rất phức tạp, và nó chỉ được sử dụng trong profile chính. Ở mỗi cửa sổ dài, dựđoán được thực hiện ở những tần số thấp và sẽ dừng ở tần số cực đại nào đó phụ thuộc vào tốc độ lấy mẫu.
Trong bảng chỉ ra rằng nếu tốc độ lấy mẫu là 48 kHz, dự đoán có thể được sử dụng ở 40 dải tần số tỉ lệđầu tiên và dừng tại tần số 15.75 kHz.