Apa cara yang baik untuk mendeteksi kliping sinyal dalam rekaman?

32

Diberikan rekaman saya perlu mendeteksi apakah kliping telah terjadi.

Dapatkah saya menyimpulkan dengan aman ada kliping jika ada (satu) sampel mencapai nilai sampel maksimum, atau haruskah saya mencari serangkaian sampel berikutnya pada tingkat maksimum?

Rekaman dapat diambil dari konverter A / D 16 atau 24-bit, dan dikonversi ke nilai floating point mulai dari . Jika konversi ini mengambil bentuk pembagian dengan 2 15 - 1 atau 2 23 - 1 , maka agaknya puncak negatif dapat sedikit lebih rendah dari -1, dan sampel dengan nilai -1 tidak terpotong?-1 ... 1215-1223-1

Jelas seseorang selalu dapat membuat sinyal khusus untuk mengalahkan algoritma pendeteksian kliping, tapi saya sedang melihat rekaman pidato, musik, gelombang sinus atau noise pink / putih.

Han
sumber
8
Perlu diingat bahwa level kliping tidak selalu maksimum digital. Jika sirkuit analog (atau bahkan sisi analog ADC) memiliki tingkat kliping yang sedikit lebih rendah dari max digital, itu akan klip awal. Jika klip analog dan kemudian melewati beberapa penyaringan, itu bahkan tidak akan menjadi garis lurus. Skenario apa yang perlu Anda deteksi?
endolith
1
Rekaman dibuat dengan perangkat suara PC (biasanya terhubung melalui USB). Kebanyakan mereka adalah respons terhadap rangsangan atau stimulus MLS dan digunakan untuk menghitung respons impuls kamar. Saya tidak mengontrol perangkat keras, sehingga kliping mungkin terjadi pada output stimulus. Tidak memikirkan itu sebelumnya, tetapi saya senang Anda memikirkannya.
Han

Jawaban:

30

Aku sedang mengetik jawaban yang persis seperti jawaban Yoda . Dia mungkin yang paling dapat diandalkan tetapi, saya akan mengusulkan solusi yang berbeda sehingga Anda memiliki beberapa opsi.


Jika Anda mengambil histogram dari sinyal Anda, kemungkinan besar bentuk lonceng atau segitiga tergantung pada jenis sinyal. Sinyal bersih akan cenderung mengikuti pola ini. Banyak studio rekaman menambahkan efek "kenyaringan" yang menyebabkan sedikit tonjolan di bagian atas, tetapi masih terlihat agak halus. Berikut adalah contoh dari lagu asli dari musisi besar:

Histogram

Berikut adalah histogram sinyal yang Yoda berikan dalam jawabannya:

Histogram tanpa Kliping

Dan sekarang kasus kliping mereka:

Histogram dengan Kliping

Metode ini kadang-kadang bisa dibodohi, tetapi setidaknya ada sesuatu untuk dilemparkan ke dalam tas alat Anda untuk situasi yang metode FFT tampaknya tidak berfungsi untuk Anda atau terlalu banyak perhitungan untuk lingkungan Anda.

Kellenjb
sumber
2
Itu adalah pengaruh luar biasa yang gila. Sangat menarik.
Kortuk
Saya senang Anda menyarankan metode ini. Saya seharusnya memasukkannya sendiri ...
PearsonArtPhoto
Saya mengatakan itu secara khusus karena ini tampaknya merupakan metode yang paling dapat diterapkan. Ini adalah bentuk terapan dari opsi lain yang diberikan, tetapi ini sepertinya sinyal "kesalahan" jauh lebih jelas.
Kortuk
1
Boleh juga mengambil nilai absolut dari sinyal terlebih dahulu dan dapatkan histogram satu sisi yang lebih halus
endolith
Jari-jariku gatal mencoba ini pada sinyal saya. Terima kasih.
Han
20

Jawaban paling sederhana jika Anda berurusan dengan rekaman pendek adalah mendengarkannya dan mendeteksi "pops" (suara berduri pendek) dalam pemutaran. Namun, solusi yang lebih kuat adalah menganalisis spektrum frekuensi rekaman.

Ingatlah bahwa ketika sinyal terpotong pada ambang tertentu, secara lokal menyerupai gelombang persegi di daerah terpotong. Ini memperkenalkan harmonik yang lebih tinggi dalam spektrum frekuensi yang pada awalnya tidak ada. Jika sinyal Anda terbatas (sebagian besar sinyal dunia nyata) dan Anda mengambil sampel jauh di atas tingkat Nyquist, maka ini cukup jelas.

Berikut adalah contoh singkat dalam MATLAB yang menunjukkan ini. Di sini, saya membuat sinyal bandlimited durasi 1s, sampel pada 1000Hz, dan kemudian klip ke antara ±0.8(lihat plot atas pada gambar di bawah)

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

masukkan deskripsi gambar di sini

Anda dapat dengan jelas melihat bahwa spektrum frekuensi dari bentuk gelombang asli yang tidak dijepit itu bersih dan bergerak ke nol di luar lebar pita (kiri bawah), sedangkan pada sinyal terpotong, ada distorsi kecil umum dari spektrum (diharapkan jika terpotong) dan sebagian besar yang penting, kontribusi harmonik / paku / non-nol yang lebih tinggi dalam spektrum di luar lebar pita sinyal (kanan bawah).

Ini biasanya bisa menjadi pendekatan yang lebih baik, karena mendeteksi kliping dengan melihat nilai-nilai umumnya tidak akurat kecuali jika Anda merancang sendiri peralatan dan tahu persis nilai ambangnya.

Lorem Ipsum
sumber
1
Beberapa sinyal saya (terutama MLS) langsung naik ke frekuensi Nyquist. Jadi metode ini mungkin tidak selalu berlaku untuk saya.
Han
@yoda Dengan spektrum di tangan, lalu bagaimana orang mengatakan bahwa spektrum itu 'kotor' seperti yang Anda tunjukkan? Tes apa yang bisa dilakukan seseorang?
Spacey
9

Sedikit ini tergantung pada metode pencatatan. Sepertinya Anda hanya menggunakan 1 konverter, yang menyederhanakan banyak hal.

Anda harus mencari apa pun di atas ambang tertentu, dan secara khusus untuk lebih dari satu titik di samping satu sama lain. Biasanya, konverter A / D tidak benar-benar membaca nilai maksimumnya kecuali Anda mengujinya dengan sangat tepat, jadi sadari bahwa nilai maks mungkin lebih rendah daripada yang mungkin terlihat.

Dengan parameter Anda, saya akan mencari sinyal berturut-turut di atas .98 atau di bawah -.98, dengan beberapa penyesuaian untuk menentukan apa ambang batas optimal seharusnya (saya tidak akan membawanya di bawah .9). Mungkin bijaksana untuk mendeteksi satu di max, dan yang lain dekat dengan sesuatu seperti .8.

Alasan untuk mengabaikan 1 pengukuran spesifik adalah bahwa umum terjadi paku yang tidak ada hubungannya dengan sinyal sama sekali. Ini akan berkurang jika Anda menggunakan konverter A / D yang bagus. Kemungkinan jika Anda menggunakan array detektor, atau gambar, beberapa detektor akan menjadi buruk, berpotensi sering terpotong.

PearsonArtPhoto
sumber
Saran yang sangat praktis di sini. Bersama dengan pendekatan @ Kellenjb, ini seharusnya memberi saya cukup untuk bekerja pada implementasi.
Han
3

MLS (urutan panjang maksimum) sangat sulit untuk dianalisis untuk kliping. Faktor puncak mereka (= puncak / rms) sangat dekat dengan 1, yang bahkan tiga dB lebih kecil daripada gelombang sinus. Banyak konverter D / A dirancang untuk mengambil gelombang sinus sebagai kasus terburuk dan MLS yang dimainkan pada amplitudo penuh dapat dengan mudah memotong sirkuit interpolasi output dari D / A.

Masalah selanjutnya adalah bahwa MLS yang terpotong terlihat hampir identik dengan yang tidak terpotong karena amplitudo hampir semuanya + -peak di tempat pertama. Juga analisis PDF tidak berfungsi karena PDF dari MLS hanyalah dua puncak besar di tepinya.

Dalam pengukuran respons impuls ruang tipikal, titik kliping yang paling mungkin sebenarnya adalah D / A, amp, atau speaker. Setelah melewati ruangan itu terlihat jauh lebih seperti MLS dan karenanya lebih mudah untuk menilai kliping dengan metode yang dijelaskan di atas.

Di hampir semua pengukuran akustik, lantai kebisingan ditentukan oleh noise diri mikrofon atau suara latar belakang dan bukan A / D. Oleh karena itu, tidak terlalu penting untuk mengoptimalkan penguatan input ke A / D dan meninggalkan ruang kepala yang cukup sebelum memotong (10dB atau lebih) baik-baik saja.

Biasanya merupakan ide yang baik untuk mengukur dengan sejumlah tingkat eksitasi yang berbeda dan melihat SNR pengukuran. Pada level rendah, suara latar akustik mendominasi dan pada level tinggi sesuatu akan membatasi, memampatkan, atau memotong. Trik untuk membuat pengukuran yang baik adalah menemukan tempat yang bagus di antaranya.

Hilmar
sumber