Tiếng ồn ở khắp mọi nơi. Cho dù bạn đang ở trong nhà hay đang đi bộ xuống phố, tiếng ồn từ môi trường bên ngoài vẫn có thể nhanh chóng trở thành mối phiền toái. Đặc biệt là trong thời đại kỹ thuật số, tất cả những tiếng ồn này đều được micrô thu lại và cản trở quá trình liên lạc trực tuyến. Vậy làm thế nào để loại bỏ chúng?
Khử nhiễu nền (Background noise removal) là khả năng tăng cường tín hiệu giọng nói bằng cách cô lập âm thanh chi phối. Công nghệ này có thể ứng dụng ở mọi nơi, từ phần mềm chỉnh sửa âm thanh/video, nền tảng hội nghị truyền hình hay tai nghe khử tiếng ồn. Vì vậy, đây được đánh giá là công nghệ phát triển nhanh chóng, đặc biệt với thâm nhập ngày càng sâu rộng của AI trong việc giải quyết bài toán này.
Trong FriData tuần này, hãy cùng khám phá cách thức hoạt động của kỹ thuật khử nhiễu, bằng cách xem xét các phương pháp truyền thống và phương pháp dựa trên học máy.
Phương pháp truyền thống để loại bỏ tiếng ồn
Hầu hết các thuật toán khử nhiễu đều có tính chất trừ, xác định các tần số nhất định có mức nhiễu nền cao hơn và trừ các dải đó khỏi tín hiệu gốc. Nhiều cách tiếp cận như vậy sử dụng các bộ lọc tĩnh như bộ lọc thông thấp, thông cao và thông dải được thiết kế với các tham số cụ thể để tách tín hiệu chiếm ưu thế. Các thuật toán này hoạt động tốt nhất với các tín hiệu xác định, trong đó có rất ít sự không chắc chắn về loại nhiễu đang được lọc và loại nhiễu đang được tách. Trên thực tế, các bộ lọc này cực kỳ kém hiệu quả trong các điều kiện khác nhau, cụ thể là trong các tình huống khi các thuộc tính của nhiễu nền trùng với tín hiệu sạch cần cách ly. Norbert Wiener đã thực hiện một cách tiếp cận khác, từ bỏ giả định rằng một tín hiệu nhiễu là xác định.
Wiener filtering là một tiêu chuẩn công nghiệp để xử lý tín hiệu động và được sử dụng rộng rãi trong máy trợ thính và các thiết bị biên khác như điện thoại và thiết bị liên lạc. Bộ lọc thích ứng hoạt động tốt nhất với hai tín hiệu âm thanh: một tín hiệu có cả giọng nói và tiếng ồn xung quanh và tín hiệu còn lại chỉ đo tiếng ồn xung quanh. Các nhà thiết kế điện thoại thông minh thường đặt hai micrô cách xa nhau sao cho một micrô được đặt gần miệng của người nói để ghi lại lời nói và micrô còn lại có thể đo tiếng ồn xung quanh để khử nhiễu.
Bạn có thể thắc mắc, nếu chúng ta có tín hiệu tách biệt giữa tiếng ồn nền và lời nói, tại sao chúng ta không thể đơn giản trừ tiếng ồn xung quanh khỏi lời nói để có được phần tiếng nói trong trẻo? Mặc dù cách tiếp cận này có vẻ trực quan, nhưng kết quả không hoàn toàn như chúng ta mong đợi. Có nhiều lý do khiến điều này không hiệu quả. Khoảng cách giữa các micrô khiến chúng được đặt trong các môi trường hơi khác nhau. Vì vậy, ta không thể thực hiện phép trừ tín hiệu đơn giản để loại bỏ hầu hết các yếu tố nhiễu vì nhiễu do một số yếu tố gây ra bao gồm điện tích tĩnh điện trong các thành phần phần cứng và các rung động nhỏ trong môi trường, tất cả đều thay đổi rất nhiều chỉ với sự thay đổi nhỏ nhất trong môi trường.
Tuy nhiên, bộ lọc wiener sử dụng các thuộc tính của hai tín hiệu đó để tạo ra các ước tính về tiếng nói sạch. Một lỗi, được gọi là lỗi bình phương trung bình (mean squared error) sau đó được tính toán và giảm thiểu, để tạo ra ước tính tốt nhất cho giọng nói sạch.
Song, hạn chế của bộ lọc wiener là ở chỗ:
- Đầu tiên, cần có hai tín hiệu âm thanh riêng biệt. Trong nhiều tình huống chẳng hạn như trong buồng lái hoặc điện thoại thông minh, dễ dàng có được hệ thống micrô kép, nhưng trong các trường hợp tổng quát khác, việc xử lý tiếng ồn từ một luồng duy nhất là hữu dụng hơn.
- Thứ hai, có thể có sự biến dạng giọng nói trong trường hợp các thuộc tính phổ của tiếng ồn xung quanh trùng lặp với các thuộc tính của giọng nói. Tính chất trừ của bộ lọc có thể loại bỏ các phần của giọng nói có âm thanh tương tự như tiếng ồn xung quanh. Với sự phát triển của deep learning, nhiều vấn đề trong số này đã được giải quyết.
Phương pháp ứng dụng AI để loại bỏ tiếng ồn
Mạng lưới thần kinh nhân tạo là một ý tưởng không mới, nhưng gần đây đã bùng nổ dưới hình thức học sâu. Mặc dù có nhiều cách tiếp cận học sâu khác nhau để loại bỏ tiếng ồn, nhưng tất cả chúng đều hoạt động bằng cách học từ bộ dữ liệu đào tạo.
- Bộ dữ liệu đào tạo để loại bỏ tiếng ồn
Bước đầu tiên để xây dựng một mô hình khử nhiễu chính xác là xây dựng một tập dữ liệu huấn luyện chất lượng. Vì mục tiêu là loại bỏ tiếng ồn xung quanh nên tập dữ liệu phải bao gồm các bản ghi lời nói rõ ràng được ghép nối với biến thể chứa nhiễu.
Trước khi tập hợp một tập dữ liệu, điều quan trọng là phải xem xét trường hợp sử dụng của mô hình. Ví dụ: khi đào tạo thuật toán khử nhiễu cho các tín hiệu từ micrô của phi công trực thăng, cần đào tạo mạng bằng các mẫu âm thanh bị biến dạng bởi các biến thể của âm thanh trực thăng. Đối với một mô hình khử nhiễu có mục đích sử dụng chung, cần thu thập các mẫu âm thanh nền hàng ngày như tiếng nói chuyện ồn ào, điều hòa không khí, đánh máy, tiếng chó sủa, xe cộ, âm nhạc,…
Khi đã tìm ra loại dữ liệu muốn đào tạo, ta phải thực sự xây dựng tập dữ liệu. Cách tốt nhất là tìm một lượng lớn các tín hiệu giọng nói rõ ràng và tín hiệu thuần nhiễu, sau đó kết hợp chúng theo mọi cách. Ví dụ: bạn có thể kết hợp một mẫu chất lượng cao của tiếng một người đang nói và một mẫu tiếng chó sủa để tạo ra mẫu mới, chứa yếu tố nhiễu. Vì vậy, bằng cách cung cấp cả mẫu gốc của người đang nói và mẫu kết hợp cả giọng nói cùng tiếng chó sủa, mạng thần kinh có thể liên tục so sánh tín hiệu giọng nói sạch ước tính của nó với tín hiệu giọng nói sạch thực tế để sau đó tự điều chỉnh và thử lại.
Cuối cùng, giờ đây ta có thể cung cấp tập dữ liệu cho một mạng lưới thần kinh để nó có thể học cách tách tiếng ồn xung quanh và tạo ra tiếng nói sạch. Một trong những cách phổ biến và hiệu quả nhất để xử lý âm thanh là Mạng thần kinh hồi quy (Recurrent Neural Network).
- Mạng thần kinh hồi quy (RNN)
Mạng thần kinh hồi quy là các mô hình có thể nhận dạng và hiểu dữ liệu tuần tự. Dữ liệu tuần tự bao gồm âm thanh, văn bản hoặc vị trí của một đối tượng theo thời gian.
RNN đặc biệt hiệu quả trong việc loại bỏ tiếng ồn vì chúng có thể học các mẫu theo thời gian, đây là điều cần thiết để hiểu âm thanh.
Vậy RNN hoạt động như thế nào? Trước tiên, chúng ta hãy xem một mạng thần kinh truyền thẳng (feedforward neural network) có 3 lớp chính: lớp đầu vào, lớp ẩn và lớp đầu ra. RNN cho ta thấy một vòng phản hồi được gọi là trạng thái ẩn, từ lớp ẩn tự cập nhật khi mô hình xử lý mọi mục theo trình tự nhất định.
Để hiểu điều này, ta hãy quan sát một RNN được đào tạo để tách tiếng ồn ra khỏi một mẫu âm thanh chứa nhiễu. Ta có thể chia mẫu âm thanh thành một chuỗi các khoảng thời gian cách đều nhau. Khi từng mẫu riêng lẻ của chuỗi được chuyển vào RNN, trạng thái ẩn sẽ được cập nhật trong mỗi lần lặp lại, giữ lại bộ nhớ của các bước trước đó trong mỗi lần. Khi kết thúc quá trình lặp lại, đầu ra được gửi qua mạng thần kinh truyền thẳng để tạo ra luồng âm thanh mới loại bỏ hoàn toàn tạp âm.
Tuy nhiên, RNN cũng đi kèm với một số hạn chế. Vấn đề quan trọng nhất là chúng không hiệu quả trong việc lưu giữ thông tin trong thời gian dài. Điều này là do vấn đề gradient biến mất trong một quá trình được gọi là lan truyền ngược.
Việc thiếu bộ nhớ dài hạn này làm cho RNN kém hiệu quả hơn trong các quy trình mà bộ nhớ dài hạn rất hữu ích. Vì vậy, các nhà nghiên cứu đã phát minh ra các biến thể của RNN truyền thống sử dụng cổng để giải quyết vấn đề này. Cổng là các hoạt động có thể tìm hiểu thông tin nào cần thêm hoặc xóa ở trạng thái ẩn. Hai mạng thần kinh chính sử dụng các cổng này là Bộ nhớ ngắn-dài hạn (LSTM) và Nút hồi tiếp có cổng (Gated Recurrent Unit – GRU). Cả hai đều chuyên sâu về mặt tính toán hơn nhiều so với các mạng hồi quy đơn giản, nhưng lại phù hợp hơn với bài toán loại bỏ nhiễu.
Từ đây, có thể thấy một số hướng mà ta có thể phát triển để xây dựng mô hình khử nhiễu. Một số mô hình được thiết kế để thực hiện nhiệm vụ loại bỏ tiếng ồn xung quanh từ đầu đến cuối, nhưng điều đó cũng có nghĩa là chúng cần nhiều tính toán hơn và lớn hơn về kích thước. Những mô hình này cực kỳ mạnh mẽ và thường được sử dụng trong nhận dạng giọng nói. Trong một số trường hợp khác, người ta áp dụng một cách tiếp cận hỗn hợp hơn, sử dụng loại bỏ nhiễu trừ truyền thống để xử lý trước dữ liệu, sau đó áp dụng mạng thần kinh để xử lý bất kỳ nhiễu nền nào vẫn tồn tại trong mẫu. Mặc dù cả hai phương pháp đều hiệu quả, nhưng việc sử dụng chúng phụ thuộc vào tài nguyên tính toán của nhà phát triển và độ chính xác mong muốn.
Vậy phương pháp nào tốt hơn?
Khử nhiễu là một lĩnh vực được quan tâm chính trong xử lý âm thanh kể từ khi micrô ra đời. Có hàng trăm phương pháp truyền thống để lọc âm thanh, nhưng nhiều phương pháp, nếu không muốn nói là tất cả, gây ra hiện tượng méo tiếng khi tiếng ồn xung quanh hòa trộn với tiếng nói chính. Với sự gia tăng sức mạnh tính toán và khả năng xây dựng các mô hình học sâu có thể ghi nhớ các mẫu phức tạp trong thời gian dài, ta đã có thể huấn luyện máy tính trở nên xuất sắc trong các tác vụ cụ thể. Bằng cách đào tạo một mô hình học sâu với lượng dữ liệu lớn, máy tính đã có khả năng loại bỏ tiếng ồn trong âm thanh một cách đặc biệt hiệu quả.
Vì vậy, phương pháp nào tốt hơn? Nếu bạn không quan tâm quá nhiều đến tài nguyên tính toán và độ trễ, thì phương pháp AI sẽ vượt trội hơn rất nhiều so với phương pháp truyền thống. Điều này là do chúng mang tính tổng quát, trong khi các mô hình truyền thống mang tính loại trừ. Các phương pháp tiếp cận AI có thể tạo ra tín hiệu âm thanh hoàn toàn mới với tiếng ồn nền được loại bỏ và giọng nói ít bị biến dạng nhất.
Nếu tài nguyên tính toán và độ trễ là một mối quan tâm, thì với công nghệ ngày nay, các phương pháp tiếp cận AI có thể không thực tế để triển khai. Thời gian xử lý của các mô hình đôi khi gây ra độ trễ cho quá trình xử lý, điều này có thể không mong muốn trong một số trường hợp. Tuy nhiên, đây chắc chắn sẽ không phải là một trở ngại lớn trong tương lai gần. Mạng thần kinh đang ngày một trở nên nhanh hơn, hiệu quả hơn, có thể truy cập được mỗi ngày, và cuối cùng chúng sẽ trở thành tiêu chuẩn.