Giảm tiếng ồn từ âm thanh rất ồn


8

Tôi đang cố gắng viết một thuật toán sẽ tự động phân đoạn một đoạn âm thanh với các bản ghi âm cuộc gọi chim. Dữ liệu đầu vào của tôi là các tệp sóng dài 1 phút và trên đầu ra tôi muốn nhận các cuộc gọi riêng để phân tích thêm. Vấn đề là tỷ lệ tín hiệu trên tạp âm khá khủng khiếp do điều kiện môi trường và chất lượng kém của micrô (lấy mẫu đơn âm, 8 kHz).

Tôi sẽ rất biết ơn về bất kỳ lời khuyên nào về cách tiến hành giảm tiếng ồn.

Dưới đây là một ví dụ về đầu vào của tôi, ghi âm một phút ở định dạng sóng: http://goo.gl/16fG8P

Đây là cách tín hiệu trông như thế nào:

Tín hiệu đầu vào của tôi (8 kHz).  Các khu vực được đánh dấu chỉ ra các cuộc gọi chim

Lọc băng thông, trong đó tôi chỉ giữ bất cứ thứ gì trong khoảng 1500 - 2500 Hz, sẽ cải thiện tình hình, nhưng vẫn không như mong đợi. Trong phổ này vẫn còn rất nhiều tiếng ồn.

Chương trình quang phổ

Tôi cũng đã vẽ năng lượng trung bình dài hạn (trên 32 mẫu) và loại bỏ một số nhấp chuột từ nó. Đây là kết quả:

Năng lượng trung bình dài hạn

Với tất cả các tạp âm còn lại, tôi phải đặt ngưỡng rất thấp cho thuật toán phát hiện khởi phát để chọn 10 giây gọi chim cuối cùng. Vấn đề là nếu tôi điều chỉnh nó theo cách như vậy thì trong lần ghi tiếp theo tôi có thể tải được các kết quả dương tính giả.

Di chuyển bộ lọc trung bình giúp một chút với tiếng ồn gió. Còn ý tưởng nào khác không? Tôi đã nghĩ đến "Phép trừ phổ", nhưng ở đây dường như tôi gặp vấn đề về gà và trứng - để tìm khu vực chỉ có tiếng ồn, tôi phải phân đoạn âm thanh và phân đoạn âm thanh tôi cần để loại bỏ tiếng ồn. Bạn có biết bất kỳ thư viện nào có thuật toán này hoặc một số triển khai trong mã giả không? Methinks Audacity sử dụng phương pháp như vậy để loại bỏ tiếng ồn. Nó rất hiệu quả, nhưng nó được để lại cho người dùng để đánh dấu khu vực chỉ có tiếng ồn.

Tôi đang viết bằng Python và nó là một dự án nguồn mở miễn phí.

Cảm ơn vì đã đọc!


Chào mừng đến với DSP.SE. Đây là một câu hỏi tuyệt vời! Tôi hy vọng bạn có thể nhận được một số dẫn tốt ở đây.
Phonon

@Lukasz Tracewski Kính thưa ông: Mặc dù đã quá muộn nhưng tôi đang làm việc trên cùng một dự án nên tôi gặp vấn đề như làm thế nào tôi có thể tạo ra phổ từ tệp wav. Bạn có thể tiết kiệm thời gian hơn nữa khi tôi cố gắng giải quyết vấn đề này từ 2 tháng trước. Cảm ơn trước. Mọi người sẽ được đánh giá cao
Mubeen Khan

@MubeenKhan Ý bạn là giúp đỡ trong việc tạo ra phổ từ một tệp âm thanh? Có hàng tá công cụ và thư viện phù hợp với mục đích, bạn có cần đề xuất gì không? Hay bạn đang hỏi về việc giảm tiếng ồn?
Lukasz Tracewski

Câu trả lời:


4

Cuối cùng, điều được chứng minh là giải pháp tốt nhất là phát hiện khởi phát dựa trên hàm lượng năng lượng hoặc tần số cao. Trước khi nó có thể hoạt động, tôi phải sử dụng bộ lọc thông cao để cắt ra 1 kHz đầu tiên, vì nó chứa quá nhiều tiếng ồn.

Khi tôi có khu vực chỉ có tiếng ồn, tôi có thể sử dụng cấu hình của nó để giảm tiếng ồn từ phần còn lại của mẫu.

Một thư viện tôi thấy đặc biệt hữu ích là Aubio . Nó có một tập hợp các ví dụ tốt và cung cấp rất nhiều thuật toán để lựa chọn để phát hiện khởi phát.


0

Tôi không biết nhiều về việc giảm tiếng ồn âm thanh nhưng sau khi trừ tiếng ồn nhanh và bẩn từ dải thông được lọc (khoảng 1500-3000 hz) tôi nhận được điều này:

https://dl.dropboxusercontent.com/u/98395391/signal_denoised.wav

Tôi nghĩ rằng âm thanh tốt hơn một chút so với các tín hiệu gốc và được lọc.

Với bộ lọc Wiener đơn giản, tôi nhận được kết quả rất giống nhau.


Trừ khi tôi hiểu lầm bạn, thì có vẻ như bạn đang đề cập đến điều gì đó tôi đã làm trong đoạn thứ hai của câu hỏi của tôi (ngay bên dưới biểu đồ đầu tiên). Với phương pháp được mô tả trong câu trả lời của tôi, tôi đã có thể tìm thấy tất cả các bộ dữ liệu và sau đó áp dụng phép trừ phổ, cho kết quả tốt hơn nữa. Đáng tiếc nó cũng tạo ra cái gọi là "giai điệu âm nhạc", mà bây giờ là mối quan tâm chính của tôi. Dù sao cũng cảm ơn bạn!
Lukasz Tracewski
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.