Những cách tốt để phát hiện cắt tín hiệu trong một bản ghi là gì?


32

Đưa ra một bản ghi tôi cần phát hiện xem có bất kỳ sự cắt xén nào đã xảy ra không.

Tôi có thể kết luận một cách an toàn rằng đã cắt nếu có bất kỳ (một) mẫu nào đạt giá trị mẫu tối đa hay tôi nên tìm một loạt các mẫu tiếp theo ở mức tối đa?

Bản ghi có thể được lấy từ các bộ chuyển đổi A / D 16 hoặc 24 bit và được chuyển đổi thành các giá trị dấu phẩy động trong khoảng từ . Nếu chuyển đổi này có dạng chia cho 2 15 - 1 hoặc 2 23 - 1 , thì có lẽ các đỉnh âm có thể thấp hơn -1 và các mẫu có giá trị -1 không bị cắt bớt?-1 ... 1215-1223-1

Rõ ràng người ta luôn có thể tạo ra một tín hiệu đặc biệt để đánh bại thuật toán phát hiện cắt, nhưng tôi đang xem các bản ghi âm lời nói, âm nhạc, sóng hình sin hoặc nhiễu hồng / trắng.


8
Hãy nhớ rằng mức độ cắt không phải luôn luôn là mức tối đa kỹ thuật số. Nếu mạch tương tự (hoặc thậm chí là phía tương tự của ADC) có mức cắt thấp hơn một chút so với max kỹ thuật số, nó sẽ cắt sớm. Nếu nó cắt tương tự và sau đó chuyển qua một số bộ lọc, nó thậm chí sẽ không phải là một đường thẳng. Những kịch bản nào bạn cần phát hiện?
endolith

1
Các bản ghi được thực hiện với một sounddevice PC (thường được kết nối qua USB). Chủ yếu là các phản ứng với một kích thích quét hoặc MLS và được sử dụng để tính toán một phản ứng thúc đẩy phòng. Tôi không kiểm soát phần cứng, do đó việc cắt thậm chí có thể xảy ra ở đầu ra kích thích. Không nghĩ về điều đó sớm hơn, nhưng tôi vui vì bạn đã nghĩ về nó.
Hân

Câu trả lời:


30

Tôi đang ở giữa gõ một câu trả lời khá giống hệt như của Yoda . Anh ấy có lẽ là đáng tin cậy nhất, nhưng, tôi sẽ đề xuất một giải pháp khác để bạn có một số lựa chọn.


Nếu bạn lấy biểu đồ tín hiệu của mình, nhiều khả năng bạn sẽ có hình dạng giống hình chuông hoặc hình tam giác tùy thuộc vào loại tín hiệu. Tín hiệu sạch sẽ có xu hướng theo mô hình này. Nhiều phòng thu âm thêm hiệu ứng "âm lượng" gây ra một vết sưng nhỏ gần đỉnh, nhưng nó vẫn có vẻ hơi trơn tru. Đây là một ví dụ từ một bài hát thực sự từ một nhạc sĩ lớn:

Biểu đồ

Dưới đây là biểu đồ tín hiệu mà Yoda đưa ra trong câu trả lời của mình:

Biểu đồ không cắt

Và bây giờ là trường hợp của họ bị cắt:

Biểu đồ với Clipping

Đôi khi phương pháp này có thể bị đánh lừa, nhưng ít nhất có một cái gì đó để bỏ vào túi công cụ của bạn cho các tình huống mà phương pháp FFT dường như không hiệu quả với bạn hoặc quá nhiều tính toán cho môi trường của bạn.


2
Đó là một ảnh hưởng tuyệt vời điên rồ. Rất thú vị.
Kortuk

Tôi rất vui vì bạn đã đề xuất phương pháp này. Tôi nên tự đưa nó vào ...
PearsonArtPhoto

Tôi nói điều đó cụ thể bởi vì đây dường như là phương pháp dễ thực hiện nhất. Đây là một hình thức áp dụng của các tùy chọn khác được đưa ra, nhưng có vẻ như tín hiệu "lỗi" rõ ràng hơn nhiều.
Kortuk

1
Cũng có thể lấy giá trị tuyệt đối của tín hiệu trước và có được biểu đồ một phía mượt mà hơn
endolith

Ngón tay của tôi đang ngứa để thử điều này trên tín hiệu của tôi. Cảm ơn.
Hân

20

Câu trả lời đơn giản nhất nếu bạn đang xử lý các bản ghi ngắn là nghe nó và phát hiện "pops" (âm thanh phát ra ngắn) trong phát lại. Tuy nhiên, một giải pháp mạnh mẽ hơn là phân tích phổ tần số của bản ghi.

Hãy nhớ lại rằng khi tín hiệu bị cắt ở một ngưỡng nào đó, nó sẽ giống với sóng vuông trong vùng bị cắt. Điều này giới thiệu sóng hài cao hơn trong phổ tần số mà ban đầu không có ở đó. Nếu tín hiệu của bạn được giới hạn băng tần (hầu hết các tín hiệu trong thế giới thực) và bạn đang lấy mẫu cao hơn tốc độ Nyquist, thì điều này nổi bật như ban ngày.

Đây là một ví dụ ngắn trong MATLAB chứng minh điều này. Ở đây, tôi tạo tín hiệu được giới hạn trong khoảng thời gian 1 giây, được lấy mẫu ở 1000Hz, sau đó kẹp nó vào giữa ±0.8(xem sơ đồ trên cùng trong hình bên dưới)

time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);

nhập mô tả hình ảnh ở đây

Bạn có thể thấy rõ rằng phổ tần số của dạng sóng gốc, không bị cắt là sạch và đi về 0 bên ngoài băng thông (phía dưới bên trái), trong khi trong tín hiệu bị cắt, có một biến dạng nhỏ của phổ (dự kiến ​​nếu bị cắt) và hầu hết quan trọng, các sóng hài / gai / đóng góp khác không cao hơn trong phổ ngoài băng thông của tín hiệu (phía dưới bên phải).

Điều này thường có thể là một cách tiếp cận tốt hơn, bởi vì phát hiện cắt bằng cách xem các giá trị thường không chính xác trừ khi bạn tự thiết kế thiết bị và biết chính xác giá trị của ngưỡng.


1
Một số tín hiệu của tôi (đặc biệt là MLS) đi đúng với tần số Nyquist. Vì vậy, phương pháp này có lẽ không phải lúc nào cũng áp dụng cho tôi.
Hân

@yoda Với các quang phổ trong tay, làm thế nào người ta nói rằng một quang phổ là 'bẩn' như bạn đã chỉ ra? Thử nghiệm nào người ta có thể thực hiện?
Spacey

9

Một chút về điều này phụ thuộc vào phương pháp ghi. Có vẻ như bạn đang sử dụng chỉ 1 bộ chuyển đổi, điều này giúp đơn giản hóa mọi thứ.

Bạn nên tìm kiếm bất cứ điều gì trên một số ngưỡng, và đặc biệt cho nhiều hơn một điểm cạnh nhau. Thông thường, bộ chuyển đổi A / D không thực sự đọc đến giá trị tối đa của chúng trừ khi bạn kiểm tra nó rất chính xác, vì vậy nhận ra rằng giá trị tối đa có thể thấp hơn dường như có thể.

Dựa vào các tham số của bạn, tôi sẽ tìm kiếm các tín hiệu liên tiếp ở trên .98 hoặc dưới -.98, với một số điều chỉnh để xác định ngưỡng tối ưu sẽ là gì (tôi sẽ không đưa nó xuống dưới .9). Có thể là khôn ngoan khi phát hiện một cái ở mức tối đa, và một cái khác gần bằng một cái gì đó như .8.

Lý do để bỏ qua 1 phép đo cụ thể là thông thường các xung đột xảy ra không liên quan gì đến tín hiệu. Điều này sẽ được giảm trong trường hợp bạn đang sử dụng một bộ chuyển đổi A / D tốt đã biết. Có khả năng là nếu bạn đang sử dụng một loạt các máy dò, hoặc một hình ảnh, một số máy dò sẽ bị hỏng, có khả năng bị cắt thường xuyên.


Lời khuyên rất thiết thực ở đây. Cùng với cách tiếp cận của @ Kellenjb, điều này sẽ cho tôi đủ để bắt tay vào thực hiện.
Hân

3

MLS (chuỗi độ dài tối đa) đặc biệt khó phân tích để cắt. Hệ số đỉnh của chúng (= đỉnh / rms) rất gần với 1, thậm chí nhỏ hơn ba dB so với sóng hình sin. Nhiều bộ chuyển đổi D / A được thiết kế để lấy sóng hình sin là trường hợp xấu nhất và một MLS được phát ở biên độ đầy đủ có thể dễ dàng cắt mạch nội suy đầu ra của D / A.

Vấn đề tiếp theo là một MLS bị cắt trông giống hệt như không bị cắt bởi vì biên độ gần như toàn bộ + -peak ở vị trí đầu tiên. Ngoài ra, phân tích PDF không hoạt động vì PDF của MLS chỉ đơn giản là hai đỉnh lớn ở các cạnh.

Trong phép đo đáp ứng xung phòng điển hình, điểm cắt có khả năng cao nhất thực sự là D / A, amp hoặc loa. Khi nó đi qua phòng, nó trông giống như một MLS và do đó dễ dàng hơn để đánh giá việc cắt bằng các phương pháp được mô tả ở trên.

Trong gần như tất cả các phép đo âm thanh, sàn tạp âm được xác định bởi tiếng ồn của micrô hoặc tiếng ồn nền và không phải là A / D. Do đó, việc tối ưu hóa mức tăng đầu vào vào A / D không phải là rất quan trọng và để lại khoảng trống rộng rãi trước khi cắt (10dB hoặc hơn) là hoàn toàn tốt.

Thông thường nên đo bằng một số mức kích thích khác nhau và xem xét SNR của phép đo. Ở mức thấp, tiếng ồn nền âm thanh chiếm ưu thế và ở mức cao, một cái gì đó sẽ hạn chế, nén hoặc clip. Bí quyết để thực hiện một phép đo tốt là tìm một điểm tốt ở giữa.

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.