Cách tốt nhất để đánh giá chất lượng của người khác về chế độ tự động?


9

Đây là một chuyến đi phụ từ ứng dụng ngáy của tôi .

Tôi đã có một vết nứt trong việc tạo ra sự tự tương quan tín hiệu âm thanh, để xem liệu điều đó có "tương quan" với ngáy / thở rất tốt không. Tôi có một thuật toán đơn giản (tạo ra 1.0 là phần tử zeroth, đây là một dấu hiệu tốt), nhưng tôi tự hỏi làm thế nào để đánh giá kết quả để xác định xem liệu tự động có mạnh hay không, và có lẽ hơn nữa, làm thế nào để sử dụng nó để phân tách nguồn âm thanh khác nhau có thể.

Câu hỏi số 1: RMS của tự động tương quan (bỏ qua phần tử 0) có phải là một số liệu "chất lượng" tốt như bất kỳ, hoặc có điều gì tốt hơn không?

Để giải thích: Tôi chỉ đơn giản muốn một cách số (so với "nhìn" vào biểu đồ) để phân biệt tín hiệu tương quan cao với tín hiệu tương thích kém hơn.

(Tôi thực sự không biết đủ để biết những câu hỏi khác.)

Một số kết quả ban đầu: Trong một số trường hợp, tự động tương quan (RMS hoặc đỉnh) cho thấy một bước nhảy mạnh mẽ trên ngáy - chính xác là phản ứng tôi muốn thấy. Trong các trường hợp khác, không có chuyển động rõ ràng nào trong các biện pháp này (và đây có thể là hai tiếng ngáy liên tiếp với hai phản ứng) và trong các tình huống tiếng ồn cao, các phép đo thực sự nhúng (hơi) trong khi ngáy.

Cập nhật - 22 tháng 5: Cuối cùng tôi cũng có một chút thời gian để làm việc này thêm một số. (Tôi đã bị loại bỏ trên một ứng dụng khác đúng nghĩa là một nỗi đau.) Tôi đã đưa đầu ra của tự tương quan vào một FFT và đầu ra hơi thú vị - nó cho thấy một đỉnh khá kịch tính gần gốc khi bắt đầu ngáy.

Vì vậy, bây giờ tôi phải đối mặt với vấn đề định lượng đỉnh này bằng cách nào đó. Điều kỳ lạ là các đỉnh cao nhất, về độ lớn tuyệt đối, xảy ra vào thời điểm khác, nhưng tôi đã thử tỷ lệ của cực đại với trung bình số học và điều đó theo dõi khá tốt. Vì vậy, một số cách tốt để đo lường "đỉnh cao" của FFT là gì. (Và xin đừng nói rằng tôi cần phải thực hiện FFT của nó - điều này đã gần với việc nuốt đuôi của chính nó. :))

Ngoài ra, đối với tôi, chất lượng của FFT có thể được cải thiện phần nào nếu tôi phản ánh các kết quả tự tương quan được đưa vào, với số 0 (theo định nghĩa là 1 độ lớn) ở giữa. Điều này sẽ đặt "đuôi" trên cả hai đầu. Đây có phải (có thể) một ý tưởng tốt? Hình ảnh phản chiếu nên được dựng đứng hoặc đảo ngược? (Tất nhiên, tôi sẽ thử nó bất kể bạn nói gì, nhưng tôi nghĩ có lẽ tôi sẽ nhận được một số gợi ý về các chi tiết.)

Đã thử phẳng

Các trường hợp thử nghiệm của tôi có thể được chia thành loại "cư xử đúng mực" và loại "trẻ có vấn đề".

Đối với các trường hợp thử nghiệm "hoạt động tốt", độ phẳng của FFT của sự tự tương quan giảm đáng kể và tỷ lệ cực đại so với mức độ tự tương quan trung bình leo lên trong một tiếng ngáy. Tỷ lệ của hai số đó (tỷ lệ cực đại chia cho độ phẳng) đặc biệt nhạy cảm, thể hiện sự leo lên 5-10 lần trong khi thở / ngáy.

Tuy nhiên, đối với "những đứa trẻ có vấn đề", các con số lại đi theo hướng ngược lại. Tỷ lệ đỉnh / trung bình giảm nhẹ trong khi độ phẳng thực sự tăng 50-100%

Sự khác biệt giữa hai loại này là (hầu hết) ba lần:

  1. Mức độ tiếng ồn (thường) cao hơn trong "trẻ em có vấn đề"
  2. Mức âm thanh (khá nhiều luôn luôn) thấp hơn trong "vấn đề trẻ em"
  3. "Trẻ có vấn đề" có xu hướng bao gồm thở nhiều hơn và ngáy thực tế ít hơn (và tôi cần phát hiện cả hai)

Có ý kiến ​​gì không?

Cập nhật - 25/05/2012: Đó là một chút sớm để có một điệu nhảy chiến thắng, nhưng khi tôi phản ánh sự tự kỷ về một điểm, đã lấy FFT về điều đó, và sau đó làm phẳng quang phổ, sơ đồ tỷ lệ kết hợp của tôi cho thấy một bước nhảy tốt trong một số môi trường khác nhau. Phản ánh sự tự tương quan dường như cải thiện chất lượng của FFT.

Tuy nhiên, một điểm nhỏ là, vì "thành phần DC" của "tín hiệu" phản xạ bằng 0, kết quả FFT của zeroth luôn bằng 0 và loại này phá vỡ một ý nghĩa hình học bao gồm 0. Nhưng bỏ qua phần tử zeroth dường như hoạt động.

Kết quả tôi nhận được không đủ để xác định ngáy / hơi thở, nhưng dường như đó là một "xác nhận" khá nhạy cảm - nếu tôi không nhận được "bước nhảy" thì có lẽ đó không phải là tiếng ngáy / hơi thở.

Tôi đã không phân tích kỹ, nhưng tôi nghi ngờ rằng những gì đang xảy ra là âm thanh huýt sáo xảy ra ở đâu đó trong khi thở / ngáy, và tiếng còi đó là thứ được phát hiện.


Theo như mức độ tương quan của 'sức mạnh', điều bạn cần làm là bình thường hóa hai tín hiệu của mình được tương quan, trước khi thực hiện tương quan. (Sau khi chuẩn hóa, tổng của mỗi tín hiệu phải là 1). Sau đó, đỉnh tương quan sẽ luôn tồn tại giữa -1 và 1. Đây là điểm mạnh của bạn. Tôi không chắc chắn về phần còn lại của câu hỏi của bạn, có lẽ bạn có thể chỉnh sửa một chút.
Spacey

Tôi đang xử lý tự động tương quan, vì vậy hai tín hiệu là một và giống nhau, và theo định nghĩa "bình thường hóa" so với nhau. "Sức mạnh" ý tôi là có bao nhiêu sự tự tương quan.
Daniel R Hicks

Tôi không hiểu bạn muốn gì, nhưng tôi nghĩ bạn muốn đo giá trị tối đa của đỉnh tự tương quan, chứ không phải giá trị RMS của toàn bộ.
endolith

@endolith Tôi nghĩ rằng anh ta có thể hỏi về một mức độ 'cực đại' của chức năng tự tương quan của bạn, để phân biệt tín hiệu với một delta, (tự động tương quan nhiễu) với tín hiệu của nhiều đỉnh? (tự tương quan tín hiệu với sóng hài). Có lẽ sử dụng thước đo độ phẳng phổ cũng có thể được sử dụng ở đây ...
Spacey

Nghe có vẻ như độ phẳng phổ là những gì anh ấy muốn. Daniel: Bạn có muốn xác định tín hiệu khác với nhiễu trắng như thế nào không?
Emre

Câu trả lời:


3

Sơ bộ

Cuộc biểu tình này là dễ dàng hơn với gói MATLAB audioread , mà cho phép đọc / ghi tập tin MP3. Ngoài ra, bạn có thể chuyển đổi tệp MP3 trong ví dụ sang WAV theo cách thủ công.

Trường hợp dễ dàng

Trước khi chúng tôi kiểm tra tệp có vấn đề của bạn, hãy tìm đến SoundCloud và chộp lấy một tiếng ngáy đàng hoàng để chúng tôi biết những gì sẽ xảy ra khi SNR cao. Đây là một MP3 44.1KHz âm thanh nổi 52s. Tải nó xuống một thư mục trong đường dẫn của MATLAB.

Bây giờ hãy tính toán phổ (tôi đã chọn cửa sổ Hann mẫu 8192) và độ phẳng phổ:

[snd1,fs1]=mp3read('snoring - brobar.mp3'); % use wavread if you converted manually
[s1,f,t,p1]=spectrogram(mean(snd1,2),hann(8192));
sf1=10*log10(geomean(p1)./mean(p1)); % spectral flatness
plot(linspace(0,length(snd1)/fs1,length(sf1)),sf1); axis tight

Độ phẳng phổ của ngáy của brobar

Các chấm lớn trong độ phẳng của quang phổ (nghĩa là lệch khỏi nhiễu trắng) hét lên "Tôi đang ngáy". Chúng ta có thể dễ dàng phân loại nó bằng cách nhìn vào độ lệch so với đường cơ sở (trung vị):

stem(linspace(0,length(snd1)/fs1,length(sf1)),median(sf1)-sf1>2*std(sf1)); axis tight

Độ phẳng phổ phân loại của ngáy của brobar

Chúng tôi đã có nhiều hơn hai độ lệch chuẩn của khoảng không. Biến thể tiêu chuẩn, để tham khảo, là 6.8487 .

Trường hợp khó khăn

Bây giờ hãy xem tập tin của bạn . Đó là tệp WAV 10 phút, 8KHz. Vì mức quá thấp, nó giúp tín hiệu.

[snd,fs]=wavread('recordedFile20120408010300_first_ten_minutes');
cmp=compand(snd,255,1);
wavwrite(cmp,'companded'); % used for listening purposes
[s,f,t,p]=spectrogram(snd,hann(8192));
sf=10*log10(geomean(p)./mean(p));
plot(linspace(0,600,length(sf)),sf);

Độ phẳng phổ của tệp nhiễu

Xem những giọt tốt đẹp đi kèm với mỗi ngáy? Tôi cũng vậy. Làm thế nào về các đỉnh đẹp? Họ không ngáy, nhưng âm thanh của đối tượng chuyển động. Độ lệch chuẩn là 0,9388

Phần kết luận

Bạn cần phải thu được tín hiệu sạch hơn nếu bạn muốn dựa vào độ phẳng của quang phổ! Tôi đã buộc nó chỉ để nghe bất cứ điều gì. Nếu phát hiện SNR thấp, prod người dùng đặt điện thoại gần hơn hoặc sử dụng micrô như điện thoại đi kèm với tai nghe.

Tin tốt có thể phát hiện ngáy ngay cả trong trường hợp có vấn đề. Tuy nhiên, vì câu hỏi này không chỉ là về phát hiện ngáy, tôi sẽ dừng lại ở đây và giải thích cách thực hiện điều đó trong câu hỏi khác của bạn .


Bây giờ bạn đã có ý thức về những gì tôi đang chống lại. Mẫu đó có chất lượng "trung bình" trong số các mẫu tôi phải làm việc - còn tệ hơn nhiều. Và tôi có thể đọc mẫu đó khá tốt với các thuật toán hiện có của tôi.
Daniel R Hicks

Những thuật toán đó là gì?
Emre

Tóm lại: Âm thanh được chạy qua FFT 8 lần một giây, phổ được cắt thành 5 dải tần số, công suất và độ lệch phổ cho mỗi dải được tính toán, sau đó kết quả được ghi theo cách mang lại trọng lượng hơn cho các dải xuất hiện được thay đổi ở mức phù hợp.
Daniel R Hicks

@Emre Tôi đang theo dõi các liên kết của bạn, đã tạo một tài khoản soundcloud, nhưng không thể biết chính xác bạn đã tải về tiếng ngáy đó như thế nào. Không có nút tải xuống bên cạnh nó hoặc bất cứ nơi nào khác.
Spacey

@Mohammad: Tôi đã cung cấp một liên kết tải xuống.
Emre

1

Tự động tương quan có liên quan trực tiếp đến DFT nghịch đảo của mật độ phổ công suất của tín hiệu của bạn. Theo nghĩa đó, bất kỳ thông tin nào chứa trong bình phương độ lớn của DFT của bạn cũng được chứa trong hàm tự tương quan.

Tuy nhiên, điều đó nói rằng một điều mà tự tương quan có thể cho bạn biết là sự hiện diện của sóng hài. (Khoảng cách từ đỉnh trung tâm đến cao nhất tiếp theo). Có lẽ ngáy thở VS có các sóng hài cơ bản khác nhau, và nếu vậy, 'phương pháp tự tương quan' chắc chắn sẽ là điểm khởi đầu tốt để các tính năng, (trong trường hợp này là sóng hài), có thể được trích xuất.

Do đó, sự tự tương quan của nhiễu trắng, sẽ là một hàm delta và sẽ không có bất kỳ đỉnh thứ cấp nào (hoặc bất kỳ đỉnh nào khác cho vấn đề đó) ngoài đỉnh trung tâm của nó. Ngược lại, nếu tín hiệu không có sóng hài, thì hàm tự tương quan của nó sẽ chứa các đỉnh thứ cấp và bậc ba, tương xứng với hiện tại sóng hài cơ bản. Khoảng cách từ đỉnh chính (giữa) đến đỉnh thứ cấp khoảng thời gian của tần số cơ bản của bạn.

BIÊN TẬP:

Tôi nghĩ những gì bạn đang theo là một thước đo - một con số - mã hóa mức độ tương tự của hàm tự tương quan với một delta, VS một hàm tự tương quan trông giống như nó có nhiều đỉnh trong đó. Cuối cùng, phép đo độ phẳng phổ có thể được áp dụng, hoặc trong trường hợp tổng quát hơn, phép đo trung bình hình học của bạn với trung bình số học.


Tôi có ấn tượng rằng sự tự tương quan sẽ phân biệt tốt hơn tín hiệu (nhịp điệu) với nhiễu (ngẫu nhiên) - nhiễu sẽ tự động tương quan gần bằng không. Một DFT, OTOH, sẽ biểu thị nhiễu dưới dạng nhiễu - phổ trải rộng. Ít nhất đây là "lý thuyết" như tôi hiểu.
Daniel R Hicks

Xin vui lòng xem các chỉnh sửa của tôi.
Spacey
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.