Apa perbedaan antara transformasi Fourier dan transformasi cosinus?

75

Dalam pengenalan suara, ujung depan umumnya melakukan pemrosesan sinyal untuk memungkinkan ekstraksi fitur dari aliran audio. Discrete Fourier transform (DFT) diterapkan dua kali dalam proses ini. Pertama kali setelah windowing; setelah Mel binning ini diterapkan dan kemudian transformasi Fourier lainnya.

Namun saya perhatikan, bahwa sudah umum di pengenal ucapan (ujung depan default di CMU Sphinx , misalnya) untuk menggunakan diskrit cosine transform (DCT) alih-alih DFT untuk operasi kedua. Apa perbedaan antara kedua operasi ini? Mengapa Anda melakukan DFT pertama kali dan kemudian DCT kedua kalinya?

Nate Glenn
sumber
Jadi beberapa telah menjelaskan perbedaan antara kedua proses. Adakah yang tahu mengapa dft dan dct digunakan pada waktu yang berbeda dalam pengenalan suara? Apakah output dari dft pertama dianggap simetris? Atau apakah kompresi DCT cocok untuk mengemas lebih banyak informasi dalam 13 poin pertama (pemrosesan bicara biasanya hanya menggunakan itu)?
Nate Glenn
Apakah pertanyaan Anda terkait dengan cepstrum frekuensi-Mel , yang ditanyakan dalam pertanyaan lain ?
rwong
Pertanyaan saya adalah 2 bagian: perbedaan antara DCT dan DFT, dan mengapa DCT sering digunakan untuk pemrosesan sinyal setelah DFT dan Mel Binning diterapkan, alih-alih DFT lain.
Nate Glenn
mengapa dalam pemrosesan gambar, kita tidak menggunakan diskrit sinus alih-alih diskrit cosinus transform?
Hai rimondo, ini pertanyaan yang bagus tetapi Anda mempostingnya sebagai jawaban. Anda harus membuat pertanyaan baru untuk menanyakannya.
Nate Glenn

Jawaban:

48

Discrete Fourier Transform (DFT) dan Discrete Cosine Transform (DCT) melakukan fungsi yang sama: keduanya menguraikan vektor waktu diskrit-panjang-terbatas menjadi sejumlah fungsi basis yang diskalakan dan digeser. Perbedaan antara keduanya adalah jenis fungsi basis yang digunakan oleh setiap transformasi; DFT menggunakan serangkaian fungsi eksponensial kompleks yang terkait secara harmonis, sedangkan DCT hanya menggunakan fungsi kosinus (bernilai nyata).

DFT banyak digunakan untuk aplikasi analisis spektral umum yang menemukan jalannya ke berbagai bidang. Ini juga digunakan sebagai blok bangunan untuk teknik yang memanfaatkan properti representasi frekuensi-domain sinyal, seperti tumpang tindih-simpan dan tumpang tindih-tambahkan algoritma konvolusi cepat.

DCT sering digunakan dalam aplikasi kompresi data yang hilang, seperti format gambar JPEG. Sifat DCT yang membuatnya sangat cocok untuk kompresi adalah tingkat tinggi "pemadatan spektral;" pada tingkat kualitatif, representasi DCT sinyal cenderung memiliki lebih banyak energi yang terkonsentrasi di sejumlah kecil koefisien bila dibandingkan dengan transformasi lain seperti DFT. Ini diinginkan untuk algoritma kompresi; jika kira-kira Anda dapat mewakili sinyal asli (waktu-atau spasial-domain) menggunakan set koefisien DCT yang relatif kecil, maka Anda dapat mengurangi kebutuhan penyimpanan data Anda dengan hanya menyimpan output DCT yang mengandung sejumlah besar energi.

Jason R
sumber
4
@JasonR "pada tingkat kualitatif, representasi DCT sinyal cenderung memiliki lebih banyak energi yang terkonsentrasi di sejumlah kecil koefisien bila dibandingkan dengan transformasi lain seperti DFT." Hmmmm ... Saya tidak yakin saya sepenuhnya setuju dengan Anda tentang hal ini - jika hanya karena DFT sudah termasuk kosinus yang akan diproyeksikan sinyal terhadap - bagaimana DFT kemudian tidak menunjukkan sebanyak kekuatan proyeksi itu dan DCT bisa? Terima kasih.
Spacey
3
Ini adalah fitur yang sangat terkenal dari DCT, yang menjelaskan penggunaannya dalam banyak algoritma kompresi. Saya percaya itu ada hubungannya dengan kondisi batas yang diasumsikan oleh DCT di tepi sinyal, yang berbeda dari DFT.
Jason R
23

Saya menemukan bahwa beberapa detail dalam wiki DCT (juga dibagikan oleh Pearsonartphoto) menunjukkan bahwa DCT sangat cocok untuk aplikasi kompresi. Akhir dari bagian Tinjauan Informal sangat membantu (huruf tebal adalah milikku).

Secara khusus, diketahui bahwa setiap diskontinuitas dalam suatu fungsi mengurangi laju konvergensi seri Fourier ... semakin halus fungsinya, semakin sedikit istilah dalam DFT atau DCT yang diperlukan untuk mewakilinya secara akurat, dan semakin banyak dapat dikompresi ... Namun, periodisitas implisit DFT berarti bahwa diskontinuitas biasanya terjadi pada batas-batas ... Sebaliknya, DCT di mana kedua batas bahkan selalu menghasilkan ekstensi terus-menerus pada batas. Inilah sebabnya mengapa DCT ... umumnya berkinerja lebih baik untuk kompresi sinyal daripada DFT dan DST. Dalam praktiknya, DCT tipe-II biasanya lebih disukai untuk aplikasi seperti itu, sebagian karena alasan kenyamanan komputasi.

Selain itu, Anda mungkin menemukan bahwa jawaban ini juga berguna (dari math.stackexchange.com). Ini menyatakan:

Transformasi cosine tidak lebih dari jalan pintas untuk menghitung transformasi Fourier dari suatu urutan dengan simetri khusus (misalnya jika urutan tersebut mewakili sampel dari fungsi genap).

semacam robot
sumber
19

Alasan mengapa Anda melihat transformasi Fourier diterapkan dua kali dalam proses ekstraksi fitur adalah bahwa fitur didasarkan pada konsep yang disebut cepstrum. Cepstrum adalah permainan pada spektrum kata - pada dasarnya idenya adalah untuk mengubah sinyal ke domain frekuensi oleh Fourier transform, dan kemudian melakukan transformasi lain seolah-olah spektrum frekuensi adalah sinyal.

Sementara spektrum frekuensi menggambarkan amplitudo dan fase dari setiap pita frekuensi, cepstrum mencirikan variasi antara pita frekuensi. Fitur-fitur yang diturunkan dari cepstrum ditemukan untuk lebih menggambarkan pembicaraan daripada fitur-fitur yang diambil langsung dari spektrum frekuensi.

Ada beberapa definisi yang sedikit berbeda. Transformasi cepstrum awalnya didefinisikan sebagai Transformasi Fourier -> logaritma kompleks -> Transformasi Fourier [1]. Definisi lain adalah transformasi Fourier -> logaritma kompleks -> invers Transformasi Fourier [2]. Motivasi untuk definisi yang terakhir adalah kemampuannya untuk memisahkan sinyal yang berbelit-belit (ucapan manusia sering dimodelkan sebagai konvolusi dari eksitasi dan saluran vokal).

Pilihan populer yang terbukti berkinerja baik dalam sistem pengenalan ucapan adalah menerapkan bank filter non-linear dalam domain frekuensi (binning yang Anda maksud) [3]. Algoritme tertentu didefinisikan sebagai transformasi Fourier -> kuadrat besarnya -> bank filter mel -> logaritma nyata -> transformasi kosinus diskrit.

Di sini DCT dapat dipilih sebagai transformasi kedua, karena untuk input bernilai nyata, bagian nyata dari DFT adalah jenis DCT. Alasan mengapa DCT lebih disukai adalah bahwa outputnya kira-kira terkait dengan dekorasi. Fitur yang terkait dengan dekorasi dapat dimodelkan secara efisien sebagai distribusi Gaussian dengan matriks kovarians diagonal.

[1] Bogert, B., Healy, M., dan Tukey, J. (1963). The Quefrency Alanysis dari Time Series untuk Echoes: Cepstrum, Pseudo-Autocovariance, Cross-Cepstrum dan Saphe Cracking. Dalam Prosiding Simposium tentang Analisis Rangkaian Waktu, hal. 209-243.

[2] Oppenheim, A., dan Schafer, R. (1968). Analisis Homomorfik Pidato. Dalam Transaksi IEEE pada Audio dan Electroacoustics 16, hal. 221-226.

[3] Davis, S., dan Mermelstein, P. (1980). Perbandingan Representasi Parametrik untuk Pengakuan Kata Bersuku Satu dalam Kalimat yang Diucapkan Terus-menerus. Dalam Transaksi IEEE pada Akustik, Pidato dan Pemrosesan Sinyal 28, hal. 357-366.

Seppo Enarvi
sumber
Kembali. PCA dalam ekstraksi fitur: PCA sejati tidak ada gunanya di sini karena akan bergantung pada data! Jika Anda menghitung PCA dari koefisien log frekuensi-mel dari satu dataset, dan kemudian dari yang lain, Anda akan menemukan dasar yang berbeda - yang berarti bahwa jika PCA digunakan dalam proses ekstraksi fitur, fitur-fitur yang diekstraksi pada satu sinyal tidak akan "berarti" sama dengan fitur yang diekstraksi pada sinyal lainnya. Sekarang lakukan percobaan ini: hitung PCA pada set log Mel Mel. diekstrak dari 10 jam audio yang paling beragam. Dasar yang akan Anda temukan sangat mirip dengan basis DCT.
pichenettes
3
Dengan kata lain: agar berguna dalam aplikasi pengenalan, transformasi dekorelasi pada akhir proses ekstraksi fitur harus menjadi semacam kompromi yang cocok untuk "audio" secara umum, daripada spesifik data. Ternyata basis DCT sangat dekat dengan apa yang Anda dapatkan ketika Anda menjalankan PCA pada set audio yang besar!
pichenettes
Baru-baru ini saya melihat PCA digunakan pada akhir proses ekstraksi fitur dalam sistem pidato eksperimental. Sistem itu menghitung proyeksi PCA dari data pelatihan dan menggunakan dasar yang sama sesudahnya.
Seppo Enarvi
8

Perbedaan antara Transformasi Fourier Diskrit dan transformasi Discrete Cosine adalah bahwa DCT hanya menggunakan bilangan real, sedangkan transformasi Fourier dapat menggunakan bilangan kompleks. Penggunaan DCT yang paling umum adalah kompresi. Ini setara dengan FFT dua kali panjangnya.

PearsonArtPhoto
sumber
1
Namun dimungkinkan untuk membayangkan DCT / DST dari urutan yang kompleks, di mana orang secara terpisah mengambil DCT / DST dari bagian nyata dan imajiner.
jadi dapatkah kita mengatakan bahwa jika saya menghitung DFT saya mendapatkan DCT gratis, semua yang perlu saya lakukan adalah menghapus bagian imajiner dari vektor. Harap perbaiki saya jika saya salah.
Marek
1
Ini sedikit lebih kompleks dari itu, tetapi dimungkinkan untuk mengkonversi antara FFT dan DCT dengan cukup mudah.
PearsonArtPhoto