3.3.1. Số hóa âm thanh
Nếu muốn thực hiện truyền âm thanh trên mạng số, trước tiên cần phải số hóa nó bằng cách dùng bộ chuyển đổi tín hiệu từ tín hiệu tương tự sang tín hiệu số (A/D Analog-to-Digital).Để đạt độ chính xác cao khi khôi phục tín hiệu âm thanh thì tần số lấy mẫu phải lớn hơn hai lần tần số của tín hiệu âm thanh. Trong mạng thoại người ta thường sử dụng tần số lấy mẫu là 8 KHz nhưng để phục vụ cho việc hội chẩn từ xa thì cần sử dụng tần số lấy mẫu cao hơn 11 KHz, 22 KHz,…bởi vì âm thanh trong hội chẩn từ xa không chỉ là giọng nói của bác sĩ mà có thể là nhịp tim, nhịp thở của bệnh nhân nên cần phải được truyền một cách chính xác.
Chuẩn được sử dụng để nén âm thanh là HE-AAC được phát triển từ chuẩn AAC. Chuẩn này cung cấp khả năng nén âm thanh với hiệu suất cao nhưng vẫn đáp ứng được chất lượng tốt.
3.3.2. Chuẩn AAC 3.3.2.1 Giới thiệu 3.3.2.1 Giới thiệu
Chuẩn nén AAC trước đây là một phần của MPEG-2, nhưng sau này được mở rộng và bổ sung thêm như là một phần của MPEG-4. AAC[5] là kết quả của một nỗ lực lớn có tính chất quốc tế của nhiều công ty và cá nhân. Dự án phát triển AAC được khởi động 1994 khi có số lượng lớn đề nghị được đệ trình lên uỷ ban của MPEG. Uỷ ban này sau đó đã tiến tới xây dựng một cấu trúc cho chuẩn AAC bao gồm nhiều module khác nhau mà các module này đóng vai trò như là các thành phần độc lập nhau. Các module này được phát triển và kiểm tra một cách riêng biệt trước khi hợp lại thành sản phẩm cuối cùng. Các module chính bao gồm:
• Bộ lọc (FilterBank)
• Dựđoán (Prediction)
• Lượng tử (Quantization)
• Mã hoá Huffman (Noiseless Huffman Coding)
• Ghép luồng bit (Bitstream Multiplexing)
• Nắn nhiễu (Temporal Noise Shaping - TNS)
• Mid/side (M/S) stereo coding
• Mã hoá cường độ (Intensity Stereo Coding)
3.3.2.2 Đặc tính âm học của tai người
Các nhà khoa học, các kĩ sư và các chuyên gia đã áp dụng đặc tính của hệ thống cảm nhận âm thanh của con người để thực hiện việc nén âm thanh. Các nhà khoa học khi nén âm thanh đã làm giảm hoặc loại bỏ hoàn thành những phần âm thanh mà con người không cảm nhận được. Hình sau đây mô tả chi tiết vềđặc tính cảm nhận âm thanh của tai người. Trong hình có một đường cong biểu diễn ngưỡng nghe của tai người. Nếu âm thanh có các đặc tính âm học nằm phía dưới đường cong này thì tai người không cảm nhận được. Theo như hình, đặc tính cảm nhận âm thanh của tai người phụ thuộc nhiều vào tần số. Ngưỡng dưới biên độ của âm thanh cao ở cả tần số cao và tần số thấp. Để âm thanh ở các tần số này có thể nghe được, thì nó cần phải được khuếch đại lên cao hơn mức ngưỡng. Ngưỡng mà tai người có thể nghe được thấp nhất ở trong khoảng tần số từ 3KHz – 5KHz, điều này cho thấy rằng tai người rất nhạy cảm với âm thanh ở tần số này và có thể nhận biết những âm thanh dù là nhỏ nhất
Hình 3.13: Ngưỡng âm thanh của tai người phụ thuộc vào tần số
Tuy nhiên vẫn còn có những điểm mà tại đó tai người cũng không thể nghe thấy được mặc dù cường độ âm thanh lớn hơn mức ngưỡng. Trên hình có một đường cong đứt nét chỉ ra rằng với những âm thanh ở khoảng tần số này, tai người không thể nghe thấy được những âm thanh có cường độ cao hơn mức biểu diễn của đường cong đứt nét này.
Thời gian cũng là một nhân tố ảnh hưởng tới khả năng cảm nhận âm thanh. Hình sau đây biểu diễn một ngưỡng khác về khả năng cảm nhận âm thanh của tai. Lúc đầu một âm thanh 60dB (ở một tần số f nào đó) kéo dài trong vòng 5ms, tai người có thể cảm nhận được âm thanh này. Nhưng nếu âm thanh “x” 30 dB xuất hiện sau đó 5ms thì không thể nghe được vì nó bị lấn át bởi âm thanh 60dB xuất hiện trước đó. Nhưng cũng với âm thanh “x” 30 dB này xuất hiện sau đó 10ms thì tai có thể nghe được. Như vậy, tai người cũng có thể bị lấn át bởi các âm thanh lớn trong vòng một khoảng thời gian mà trong khoảng thời gian này tai người không thể bị kích thích bởi các âm thanh khác nữa.
Hình 3.14: Ngưỡng âm thanh của tai người phụ thuộc vào thời gian
Tiếp theo sau đây là hình biểu diễn tính chất âm học của tai ở các khía cạnh tần số thời gian và biên độ.
Hình 3.15: Ngưỡng âm thanh theo tần số, thời gian, và biên độ
3.3.2.3 Hoạt động của thuật toán nén âm thanh AAC
Dựa vào tính chất này của tai, thuật toán nén mất âm thanh theo tần số và thời gian làm việc theo các bước sau.
Hình 3.16: Biểu đồ hoạt động của thuật toán nén âm thanh
• Đầu tiên các tin hiệu âm thanh sau khi đã lấy mẫu được gom thành những nhóm gối lên nha (tức là dùng những cửa sổ trượt) rồi đưa vào bộ lọc
(Filter Bank). Tại bộ lọc, mỗi cửa sổ sẽđược chuyển thành các giá trị tần số. Các giá trị này tương ứng với một khoảng của tần số (dải tần số) và chỉ ra cường độ của âm thanh ở dải tần số này.
• Sử dụng các giá trị này để quyết định nhưng âm thanh bị che (loại bỏ). Khi quyết định âm thanh nào bị che, một mô hình cảm giác (Perceptual model) được sử dụng. Mô hình này đưa ra các thông số về ngưỡng cụ thể cho từng loại tần sốđể quyết định xem những giá trị tần số nào là không quan trọng.
• Các giá trị tần số sẽđược lượng tử rồi được mã hoá bằng loại mã có chiều dài thay đổi. Các từ mã này là kết quả của cả quá trình trên.
Nhiệm vụ đầu tiên của bộ mã hoá là lấy các mẫu âm thanh rồi tính toán ra các tần số của sóng âm thanh biểu diễn những âm thanh này. Trên thực tế là các khoảng âm thanh (hay dải âm thanh) được tính toán ra, và một hệ số tần số ( hay hệ số phổ) được tính toán cho một dải âm thanh. Độ rộng của dải phải không được vượt quá bộ rộng của dải âm thanh của tai người. Điều này được hoàn thành bởi ngân hàng bộ lọc. Đối với mp3, 512 mậu được lưu trong bộđệm và được tính toán cho 32 dải tần số. Sau đó 32 mẫu âm thanh tiếp theo được chuyển vào bộ đệm và quá trình được lặp lại. Còn đối vời AAC cũng thực hiện như trên nhưng sử dụng 2048 mẫu âm thanh, tính toán cho 1024 hệ số phổ, mỗi hệ số biểu diễn cho một dải băng tần rộng 23.4 Hz, và sau đó 1024 mẫu âm thanh tiếp theo được chuyển vào trong bộđệm.
Thành phần tiếp theo là mô hình cảm giác. Nó quyết định độ cao của ngưỡng cho mỗi dải tần số. Trong mp3, mô hình này không được đặc tả chi tiết và do đó mỗi nhà thiết kế lại cho ra những mô hình của riêng họ. Sự thành công của mỗi mô hình phụ thuộc nhiều vào sự chi tiết và sự giống nhau của nó với mô hình của tai người. Còn AAC cũng tương tự với mô hình cảm giác mà không đặc tả hoạt động chính xác của nó.
Đối với mỗi dải tần số, bộ mã hoá so sánh hệ số của phổ so với ngưỡng của dải tần số. Nếu hệ số phổ nhỏ hơn ngưỡng thì hệ số được lượng tử theo dải tần số tương ứng. Nếu lượng tứ quá nhiều sẽ làm giảm chất lượng của âm thanh và nhiễu rất cao. Ngược lại nếu lượng tử không đủ thì sẽ không đáp ứng được tốc độ bit đề ra.
Do đó AAC bổ sung thêm một số công cụ phục vụ cho việc tăng chất lượng của quá trình lượng tử:
• TNS là một thuật toán tinh vi mà làm giảm thiểu ảnh hưởng của “trải rộng thời gian” Điều này làm tăng hầu hết khả năng lượng tử của các tín hiệu giọng nói.
• Module dựđoán tăng hiệu suất của bộ lượng tử trong trường hợp âm thanh gốc giống với mẫu cò sẵn, như là âm giọng cao (âm thanh có dạng hình sin).
Bước kế tiếp là mã hoá (coding). Hệ số phổ sau được lượng tử sẽ được mã hoá. Bước này cũng đóng góp vào việc làm tăng khả năng nén bởi vì hệ số được thay thế bởi các từ mã có kích thước thay đổi, nhưng với cách mã hoá này thì không làm mất dữ liệu. Cả mp3 và AAC đều sử dụng mã Huffman.
Như vậy, AAC chia sẻ những điểm mạnh của mp3 dồng thời có nhưng cải tiến như sau:
Ngân hàng bộ lọc lớn hơn với 1023 hệ số phổ được tao ra từ cửa sổ 2048 mẫu âm thanh, dẫn tới dải tần số hẹp hơn do đó có chất lượng âm thanh khi giải nén tốt hơn mp3.
Temporal noise shaping (TNS) một thuật toán mới cho phép giải thiểu đến thấp nhất ảnh hưởng của … điều này đặc biệt hữu dụng đối với nén tín hiệu giọng nói.
Module dự đoán làm tăng khả năng lượng tử cho nhưng âm thanh theo chu kì hoặc những âm thanh theo mẫu có sẵn.
3.3.2.4 Mô tả chi tiết về AAC
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ổ