Làm thế nào bạn có thể biết liệu có tín hiệu hay không (khi tín hiệu của bạn trông rất giống nhiễu)?


11

Đây là máy dò ngáy của tôi một lần nữa.

Tôi đã khá giỏi trong việc phát hiện tín hiệu khi có bất cứ thứ gì ở đó - có thể theo dõi từ tiếng ngáy bong tróc xuống đến hơi thở mà bạn thậm chí không thể nghe thấy trong bản ghi âm. Vấn đề là, tôi không thể biết khi nào tín hiệu đã giảm xuống dưới mức có thể phát hiện được và ứng dụng chỉ là "nghe thấy". Và thật không may, ngáy / thở thường không đủ để một chế độ tự tương quan đơn giản hoặc sơ đồ thời gian tương tự không có khả năng giúp ích nhiều. (Và thực tế có khả năng trong một số trường hợp, tiếng ồn thường xuyên hơn nhịp thở.)

Vì vậy, có bất kỳ thủ thuật nào tôi thiếu để tìm ra khi không có tín hiệu? Có vẻ như tôi đang chống lại một nơi khó khăn ở đây, với "tín hiệu" rất giống tiếng ồn bắt đầu.

(Và có lẽ điều này có liên quan đến một vấn đề khác mà tôi gặp phải: Thật kỳ lạ, tôi không thể đo chính xác (hoặc thậm chí xấp xỉ) mức tín hiệu ngay cả khi khá to. Vì tôi cần phải sử dụng các đường trung bình và tỷ lệ để phát hiện tín hiệu, loại thông tin cấp độ bị mất. Tôi đang tìm kiếm một số thủ thuật để khôi phục nó.)

Kỹ thuật cơ bản

(Dành cho Yoda)

Tín hiệu âm thanh được lấy mẫu (thường là 8000Hz, vì nhiều lý do), sau đó được FFT trong 1024 khối. (Trong các thử nghiệm của tôi, các bộ lọc Hamming và các khối chồng lấp dường như không có tác dụng gì, mặc dù chúng có thể được xem xét lại sau.)

FFT được chia thành các "dải" (hiện tại là 5, có kích thước hơi lệch để đặt chi tiết hơn ở đầu thấp) và "mức chênh lệch phổ" và mức độ của từng dải được tính tổng. Trung bình dài hạn của các giá trị giới hạn cực đại được sử dụng làm "ngưỡng" và các điều chỉnh sai lệch tiếp theo được sử dụng để duy trì tỷ lệ "vượt ngưỡng" khoảng 20%.

Mỗi giá trị "vượt ngưỡng" được đặt trọng số 1 (dưới ngưỡng được đặt trọng số 0), nhưng sau đó trọng số đó được điều chỉnh bằng "độ biến thiên" rõ ràng (ở khoảng 2Hz) trong dải, để tăng thêm trọng lượng cho các dải mang tín hiệu rõ ràng hơn.

Trọng lượng của các dải được tính tổng và sau đó trọng số tổng của các khối tiếp theo được cộng lại trong khoảng một giây để tạo ra "điểm số" đang chạy. Điều này một lần nữa được so sánh với ngưỡng trung bình đang chạy (cộng với một số phương pháp phỏng đoán) để phát hiện khởi phát / bù ngáy.

Cập nhật

Tôi chợt nhận ra rằng nếu thuật toán của tôi duy trì hiệu quả tín hiệu ở mức không đổi (theo vấn đề về mức tín hiệu của tôi), cách để đo SNR hiệu quả là bằng cách đo nhiễu khi không có tín hiệu.

Thuận tiện, ngáy là không liên tục, với rất nhiều "không khí chết" ở giữa. Và tôi đã phát hiện ra phong bì ngáy. Vì vậy, bất cứ điều gì bên ngoài phong bì (giữa cuối một ngáy và bắt đầu tiếp theo) có lẽ là tiếng ồn! Điều này tôi có thể (với một số mức độ chính xác / độ lặp lại khiêm tốn). (Tất nhiên, phải mất ba lần thử với một thuật toán khá nửa chừng - thực tế không bao giờ phù hợp với lý thuyết.)

Vì vậy, tôi chưa có câu trả lời đầy đủ, nhưng tôi đã đạt được tiến bộ.

(Mặc dù kỹ thuật trên mang lại cho tôi một proxy khá tốt cho SNR, tôi vẫn gặp khó khăn trong việc ước tính mức tín hiệu thực tế. Chỉ báo "mức tương đối" của tôi có thể vượt quá mức cho một hơi thở khó nghe và vì vậy đối với một trình điều khiển cửa sổ. Tôi cần một số loại proxy cho mức tuyệt đối.)


"Đây là máy dò ngáy của tôi một lần nữa" - bạn có thể vui lòng liên kết với câu hỏi trước đó của bạn (nơi mà bạn có thể đã mô tả chi tiết) hoặc thêm một số chi tiết về máy dò của bạn trong câu hỏi này?
Lorem Ipsum

Câu trả lời:


5

Cho đến nay bạn dường như xác định ngáy thông qua sự hiện diện của một mô hình định kỳ mạnh mẽ trong âm thanh. Nếu bạn nói với tôi rằng có thể có các nguồn khác có cùng thuộc tính, đã đến lúc bạn tiếp tục và tập trung vào một thuộc tính của tín hiệu cụ thể hơn là ngáy; và tôi sẽ đề nghị nhìn chính xác hơn vào âm sắc của âm thanh được ghi. Cho rằng một người nghe có thể tránh được tiếng ngáy khi thở, bạn có thể sử dụng phương pháp phân loại tín hiệu âm thanh truyền thống. Tính toán các tính năng như MFCC và các mẫu biến động trên dữ liệu âm thanh của bạn và huấn luyện bộ phân loại bayes (hoặc phức tạp hơn) để phân biệt ngáy khi thở.

Có lẽ cũng đến lúc xem lại tài liệu về chủ đề này ... Ví dụ tôi đã tìm thấy điều này: http://web.itu.edu.tr/kamasak/pub/pdf/pm7_8_007.pdf


Một vấn đề là bản chất của âm thanh thay đổi rất nhiều từ cá nhân sang cá nhân và thậm chí đối với một cá nhân trong suốt một đêm. Nhưng cảm ơn vì những manh mối - tôi sẽ xem xét chúng.
Daniel R Hicks

Nếu tập huấn luyện của bạn đủ lớn, điều này vẫn có thể khả thi khi sử dụng các kỹ thuật học máy.
pichenettes

Tôi có hơn 50 bộ dữ liệu. Thật không may, một thuật toán hoạt động hoàn hảo trên một bộ thất bại thảm hại ở bộ tiếp theo. Một số có TV ở chế độ nền, một số có xử lý không khí ầm ầm, vv Hơi thở / tiếng ngáy có thể nghe thấy hoặc lột sơn. Một đối tượng có thể thay đổi vị trí và thay đổi hoàn toàn bản chất ngáy của anh ta. Một số loại sơ đồ tự điều chỉnh rõ ràng là cần thiết.
Daniel R Hicks

Những tính năng bạn đang sử dụng để phân loại?
pichenettes

Chủ yếu chỉ là "sự khác biệt phổ" (còn được gọi là "thông lượng phổ") để phát hiện "khởi phát" và "bù". Nhưng sơ đồ hiện tại của tôi chia phổ thành các dải và "trọng số" mỗi dải dựa trên cường độ tín hiệu rõ ràng trong dải đó (được đánh giá bằng mức độ biến thiên của chênh lệch phổ xảy ra ở khoảng 1/2 Hz). Điều này hoạt động tốt để phát hiện hơi thở / ngáy trên toàn bộ phạm vi âm lượng, ngay cả với tiếng ồn đáng kể, nhưng nó thực sự làm mất tất cả các dấu hiệu của âm lượng thực tế. Và chỉ cần nhìn vào tổng mức âm thanh đồng thời không hoạt động do vấn đề tiếng ồn.
Daniel R Hicks

0

Bạn có thể cần xây dựng một bộ phân loại động, có thể thích ứng với chủ đề hiện tại, giai đoạn ngủ và môi trường âm thanh, thay vì điều chỉnh theo tập huấn luyện cố định.


Đó là những gì tôi đang nghĩ.
Daniel R Hicks
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.