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?
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.
audio
algorithms
Han
sumber
sumber
Jawaban:
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:
Berikut adalah histogram sinyal yang Yoda berikan dalam jawabannya:
Dan sekarang kasus kliping mereka:
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.
sumber
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)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.
sumber
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.
sumber
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.
sumber