Vì hầu hết chúng ta đang làm công việc của mình hoặc đi học/đại học ảo, chúng ta thường phải tham gia các cuộc họp trực tuyến và chúng ta không thể mong đợi mỗi nơi của chúng ta luôn yên tĩnh. Một số người trong chúng ta có thể sống trong một môi trường ồn ào, nơi chúng ta có thể nghe thấy tiếng còi hoặc giọng nói của người khác hoặc thậm chí đôi khi tai nghe của chúng ta bị lỗi, điều này chắc chắn là điều không mong muốn đối với người nhận ở đầu bên kia. Sẽ tốt hơn nếu chúng ta loại bỏ tiếng ồn ở đầu người gửi bằng cách sử dụng mô hình học sâu?
Mục lục
- Khử nhiễu âm thanh là gì?
- Sơ lược về lịch sử của các phương pháp khử nhiễu khác nhau
- Phép trừ quang phổ
- Bộ lọc Wiener
- Cổng quang phổ
- Các mô hình dựa trên Deep Learning
- Facebook Denoiser – Một mô hình Deep Learning
- Thiết lập mô hình FB Denoiser
Khử nhiễu âm thanh là gì?
Định nghĩa rất đơn giản và dễ hiểu, nó sẽ diễn ra như thế này,
Khử nhiễu âm thanh là quá trình loại bỏ tiếng ồn khỏi bài phát biểu mà không ảnh hưởng đến chất lượng bài phát biểu
Ở đây, tiếng ồn là bất kỳ phân đoạn âm thanh không mong muốn nào đối với thính giác của con người như tiếng còi xe, tiếng gió hoặc thậm chí là tiếng ồn tĩnh
Nó còn được gọi là tăng cường giọng nói vì nó nâng cao chất lượng lời nói. Cải thiện giọng nói là một nhiệm vụ quan trọng và nó được sử dụng như một bước tiền xử lý trong các ứng dụng khác nhau như cuộc gọi âm thanh/video, thiết bị trợ thính, Nhận dạng giọng nói tự động [ASR] và nhận dạng người nói. Chúng ta sẽ xem cách loại bỏ nhiễu trong tín hiệu âm thanh trong phần còn lại của bài viết này
Sơ lược về lịch sử các phương pháp khử nhiễu khác nhau
Trong phần này, hãy tóm tắt các kỹ thuật khử nhiễu âm thanh khác nhau được sử dụng-
- Phép trừ quang phổ
- Bộ lọc Wiener
- Cổng quang phổ
- Các mô hình dựa trên Deep Learning
Phép trừ quang phổ
Sự phát triển của các phương pháp tăng cường giọng nói bắt nguồn từ năm 1979 khi Boll S đề xuất một phương pháp khử nhiễu dựa trên Phép trừ Quang phổ. Nhưng, phép trừ quang phổ là gì?
Điều đầu tiên họ làm là chuyển đổi tín hiệu âm thanh sang miền tần số. Đối với điều này, họ đã sử dụng một trong những thuật toán có ảnh hưởng trong xử lý tín hiệu số, Biến đổi Fourier nhanh [FFT] và một số biến thể của FFT như Biến đổi Fourier thời gian ngắn [STFT] sẽ trích xuất cả các tính năng liên quan đến thời gian và tần số. Sau đó, họ sẽ chỉ cần trừ các thành phần tần số của tiếng ồn khỏi âm thanh ồn ào để có được giọng nói được làm sạch/nâng cao và do đó có tên Phép trừ quang phổ
Nhưng phép trừ quang phổ có hai thiếu sót lớn-
- Chúng tôi phải chọn một nhiễu từ tín hiệu âm thanh để loại bỏ nó, điều này không thực tế chút nào
- Tiếng ồn phải có mặt trong toàn bộ âm thanh. Vì vậy, loại phương pháp này không hoạt động tốt đối với các tín hiệu âm thanh có tiếng ồn hiếm gặp như tiếng còi ô tô, khiến nó không hiệu quả đối với các ứng dụng trong thế giới thực
Bộ lọc Wiener
Tiếp theo là lọc Wiener, đây là tiêu chuẩn công nghiệp để khử nhiễu âm thanh và được sử dụng rộng rãi trong máy trợ thính, điện thoại thông minh và thiết bị liên lạc. Quá trình lọc này cũng yêu cầu cả giọng nói ồn ào và một mẫu tiếng ồn có trong giọng nói. Bộ lọc Wiener tìm ước tính thống kê về lời nói rõ ràng từ lời nói ồn ào và chính tiếng ồn để giảm thiểu lỗi bình phương trung bình theo các giả định nhất định về tiếng ồn
Tuy nhiên, bộ lọc Wiener có ích trong trường hợp điện thoại thông minh nơi chúng ta có thể có hai micrô, một micrô để ghi lại lời nói của chúng ta có tiếng ồn và một micrô khác chỉ dành cho tiếng ồn. [Trong điện thoại thông minh của bạn, micrô ở phía dưới dùng để ghi âm lời nói và micrô ở trên cùng dùng để ghi âm]. Vì vậy, chúng tôi đang sử dụng một số loại bộ lọc Wiener mỗi ngày mà không hề nhận ra. Điều này thật tuyệt vời phải không?
Cổng quang phổ
Dưới đây là dạng sóng âm thanh của một bài phát biểu ồn ào và bài phát biểu nâng cao. Những kết quả này được tạo ra từ mô-đun python giảm tiếng ồn, sử dụng cổng quang phổ dưới mui xe – cũng là một phương pháp truyền thống. Các loại bộ lọc tiếng ồn truyền thống này hoạt động tốt trong việc lọc tiếng ồn tĩnh nhưng không lọc được một số tiếng ồn hiếm gặp, đó là một trong những lý do để phát triển các mô hình Học sâu để tăng cường giọng nói
Các mô hình Deep Learning ngày nay đang trở nên phổ biến vì khả năng khái quát hóa của chúng để tìm hiểu và giải quyết một nhiệm vụ [theo cách từ đầu đến cuối] mà không gặp rắc rối về kỹ thuật tính năng. Điều này bao gồm cả khử nhiễu âm thanh và có một số mô hình tốt thậm chí sẽ hoạt động trong thời gian thực. Các mô hình Deep Learning để khử nhiễu âm thanh có thể được chia thành các danh mục, dựa trên mặt nạ và dựa trên ánh xạ
Các mô hình dựa trên mặt nạ tính toán mặt nạ [mảng boolean] trong miền thời gian/tần số dựa trên lời nói nhiễu đầu vào để làm giảm nhiễu trong tín hiệu. Mặt khác, các phương pháp dựa trên ánh xạ nhằm mục đích loại bỏ lời nói rõ ràng khỏi lời nói ồn ào nếu chúng tôi được cung cấp nhiều lời nói ồn ào và rõ ràng [nhiều dữ liệu đào tạo. ]
Tiếp theo, hãy thảo luận về Facebook Denoiser, một trong những mô hình State Of The Art [SOTA] để cải thiện giọng nói
Tăng cường giọng nói theo thời gian thực trong miền dạng sóng – Facebook Denoiser
Mô hình này được đề xuất bởi Alexandre Défossez et al. trong Nghiên cứu AI của Facebook [FAIR] vào năm 2020. Điểm đặc biệt của mô hình là nó có thể chạy trong thời gian thực trên CPU máy tính xách tay. Hãy nhớ rằng kiến trúc được đề xuất sẽ đơn giản nhất có thể để hoạt động trong các hệ thống thời gian thực. Tôi sẽ trình bày cách sử dụng mô hình này trong thời gian thực ở cuối bài viết này
Mô hình này có kiến trúc U-Net của bộ giải mã-bộ mã hóa với các kết nối bỏ qua và mạng mô hình trình tự được áp dụng cho đầu ra của bộ mã hóa. Nhưng tại sao phần mã hóa-giải mã này lại có các kết nối bỏ qua ở giữa chúng? . Bạn cũng có thể tham khảo bài viết này để tìm hiểu thêm về bỏ qua kết nối. Dưới đây là kiến trúc tổng thể của mô hình
Kiến trúc của Facebook Denoiser
Mỗi lớp trong bộ mã hóa có lớp tích chập 1D, sau đó là kích hoạt ReLU. Nó cũng có tích chập 1⨯1 để nhân đôi số lượng kênh tại bộ mã hóa với kích hoạt GLU [Gated Linear Unit]. Mỗi lớp trong bộ giải mã có cấu trúc tương tự như bộ mã hóa ngoại trừ việc nó có tích chập chuyển đổi 1D [giải mã] thay cho lớp tích chập
Lớp mô hình trình tự ở giữa kiến trúc có thể là LSTM một chiều hoặc LSTM hai chiều dựa trên độ phức tạp của mô hình. Kiến trúc được đề xuất trong bài viết này được gọi là DEMUCS. Khá đơn giản phải không?
Không giống như hầu hết các mô hình trong xử lý âm thanh, mô hình này hoạt động với các tệp sóng thô trong chính miền thời gian và do đó có tên là Tăng cường giọng nói trong miền dạng sóng. Tuy nhiên, mô hình tối ưu hóa trong cả miền thời gian và tần số, đây là cách
Các tác giả đã sử dụng tổn thất L1 trên dạng sóng, đây là sự khác biệt tuyệt đối giữa âm thanh nhiễu và âm thanh được làm sạch dưới dạng tổn thất [điều này hoạt động trong miền thời gian]. Họ cũng đã tính toán Biến đổi Fourier thời gian ngắn [STFT] cho âm thanh ồn ào và được làm sạch, đồng thời thu được tổn thất từ STFT được tính toán [điều này hoạt động trong miền tần số thời gian]
Mô hình hoạt động thực sự tốt trong thực tế vì các tác giả đã tuyên bố rằng nó có thể được coi là một trong những mô hình SOTA để cải thiện giọng nói. Đây là kết quả từ bài báo,
Kết quả so sánh của mô hình khử nhiễu FB
Tôi nghĩ rằng chỉ cần biết thang đo của từng chỉ số đánh giá được sử dụng trong bài báo là đủ hơn là lý thuyết phức tạp đằng sau các chỉ số đánh giá. Hãy nghĩ về PESQ như một thước đo đánh giá với thang điểm 0. 5 đến 4. 5, 0 đến 100 cho STOI, 1 đến 5 cho các biện pháp MOS. Hãy thiết lập và chạy mô hình này trong hệ thống cục bộ của chúng tôi. Tôi sẽ hướng dẫn bạn từng bước để thiết lập mô hình này trong hệ thống cục bộ của bạn
Thiết lập Mô hình khử nhiễu FB
Trước hết, chúng ta cần cài đặt mô-đun khử nhiễu từ pypi. Nếu bạn có bất kỳ bản phân phối Linux hoặc Mac OS nào, bạn đang ở bên may mắn. Hiện tại, các tác giả không cung cấp bất kỳ hỗ trợ chính thức nào cho các hệ điều hành khác như Windows
Đây là kho lưu trữ GitHub của mô hình khử nhiễu mà chúng tôi sẽ sử dụng. Nếu bạn có bất kỳ nghi ngờ nào trong quá trình cài đặt, vui lòng để lại nhận xét bên dưới
Bước 1
Họ đã cung cấp mô hình trong pypi chỉ là "bộ khử nhiễu cài đặt pip" sẽ hoạt động. Nếu bạn không muốn làm rối tung các thư viện Python mà bạn đã có, chỉ cần tạo một môi trường ảo [venv] rồi cài đặt bộ khử nhiễu. Tôi sẽ chỉ cho bạn cách làm điều này
Bạn có thể bỏ qua dòng thứ nhất và dòng thứ hai nếu không muốn tạo một môi trường riêng để cài đặt bộ khử nhiễu
Bước 2.
Người dùng Linux nên kiểm tra xem bạn đã cài đặt PulseAudio trong hệ thống chưa. Nếu không, hãy cài đặt bằng lệnh,
Đồng thời cài đặt Điều khiển âm lượng PulseAudio bằng lệnh,
Người dùng Mac OS phải cài đặt SoundFlower trên hệ thống của họ để sử dụng mô hình này. Theo liên kết này để cài đặt SoundFlower và bạn có thể bỏ qua Bước 3
Bước 3
Chạy các lệnh để tạo luồng ảo chính xác là chúng ta sẽ sử dụng,
Thao tác này sẽ thêm “Màn hình đầu ra không có giá trị” vào danh sách micrô sẽ sử dụng. Chọn nó làm đầu vào trong phần mềm của bạn. Mở một thiết bị đầu cuối khác và chạy “pavucontrol”. Thao tác này sẽ mở cửa sổ bộ điều khiển âm lượng
Bước 4
Người dùng Mac có thể chạy lệnh,
Thao tác này sẽ tải mô hình và thêm micrô, bạn có thể chọn tùy chọn này và đầu bên kia có thể thưởng thức bài phát biểu nâng cao của bạn ngay bây giờ
Đối với người dùng Linux, hãy chạy lệnh,
Mô hình sẽ bắt đầu khử nhiễu âm thanh đầu vào từ micrô. Tôi đã thử nghiệm nó trên một máy tính xách tay chạy trên Intel i5 thế hệ thứ 8 với 8 GB RAM nhưng kiểu máy này cho thấy một số độ trễ đáng chú ý trong việc tạo đầu ra khử nhiễu. Bạn cũng có thể sử dụng mô hình này để khử nhiễu ở đầu thu. Bạn có thể tham khảo kho mô hình để biết cách làm
Ghi chú cuối
Trong bài viết này, chúng ta đã tìm hiểu khử nhiễu âm thanh là gì cùng với mô hình học sâu của nó. Chúng ta cũng đã biết sơ lược về lịch sử của các kỹ thuật cải thiện giọng nói truyền thống và mô hình học sâu-Facebook Denoiser cũng như cách thiết lập chúng trong hệ thống của chúng tôi
Hy vọng bạn thích đọc bài viết của tôi về mô hình học sâu – Audio Denoiser. Chúc bạn ngày mới tốt lành
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả.