Apakah ini interpretasi yang benar dari langkah DCT dalam perhitungan MFCC?


9

Ini adalah kelanjutan dari diskusi di sini . Saya akan berkomentar di sana, tetapi saya tidak memiliki 50 perwakilan jadi saya mengajukan pertanyaan baru.

Inilah cara saya memahami langkah DCT dalam proses perhitungan MFCC: Alasan di baliknya adalah untuk memisahkan korelasi dalam besaran log-spektral (dari bank filter) karena tumpang tindihnya filter. Pada dasarnya, DCT menghaluskan representasi spektrum yang diberikan oleh besaran log-spektral ini.

Apakah benar untuk mengatakan bahwa garis biru pada gambar di bawah ini mewakili spektrum sebagaimana diwakili oleh vektor besaran log-spektral, dan garis merah adalah vektor yang dulunya merupakan DCT-ified?

DCT-ified magnitudo log-spektral (yaitu MFCCs) vs. magnitudo log-spektral saja ???


di mana saya dapat mengunduh kode Anda untuk pengujian?
auraham

Gambar di bawah ini? Tidak ada gambar di pos.
Eric Platon

Jawaban:


16

Biarkan saya mulai dari awal. Cara standar menghitung cepstrum adalah sebagai berikut:

C(x(t))=F1[log(F[x(t)])]

Dalam kasus kasus koefisien MFCC agak berbeda, tetapi masih serupa.

Setelah pra-penekanan dan windowing, Anda menghitung DFT dari sinyal Anda dan menerapkan bank filter dari filter segitiga yang tumpang tindih, dipisahkan dalam skala mel (meskipun dalam beberapa kasus skala linier lebih baik daripada mel):

masukkan deskripsi gambar di sini

Sehubungan dengan definisi cepstrum, Anda sekarang mewakili amplop spektrum (spektrum dikurangi) dalam skala frekuensi mel. Jika Anda menyatakan itu, maka Anda akan melihat bahwa itu mirip dengan spektrum sinyal asli Anda.

Langkah selanjutnya adalah menghitung logaritma koefisien yang diperoleh di atas. Ini disebabkan oleh fakta bahwa cepstrum seharusnya merupakan transformasi homomorfik yang memisahkan sinyal dari respons impuls saluran vokal, dll. Bagaimana?

s(t)h(t)

s^(t)=s(t)h(t)

Konvolusi domain frekuensi adalah perkalian spektrum:

S^(f)=S(f)H(f)

catatan(Sebuahb)=catatan(Sebuah)+catatan(b)

Kami juga berharap bahwa tanggapan impuls tidak berubah seiring waktu, sehingga dapat dengan mudah dihilangkan dengan mengurangi rata-rata. Sekarang Anda tahu mengapa kami mengambil logaritma dari energi band kami.

F-1ifft

masukkan deskripsi gambar di sini

Jadi sekarang Anda melihat bahwa sekarang agak sulit untuk memahami bagaimana spektrum aslinya terlihat. Selain itu, kami biasanya mengambil hanya 12 MFCC pertama, karena yang lebih tinggi menggambarkan perubahan cepat dalam energi log, yang biasanya membuat tingkat pengenalan lebih buruk. Jadi alasan untuk melakukan DCT adalah sebagai berikut:

  • Awalnya Anda harus melakukan IFFT, tetapi lebih mudah untuk mendapatkan koefisien nilai sebenarnya dari DCT. Selain itu, kami tidak lagi memiliki spektrum penuh (semua tempat frekuensi), tetapi koefisien energi dalam bank filter mel, oleh karena itu penggunaan IFFT sedikit berlebihan.

  • Anda lihat pada gambar pertama bahwa bank filter tumpang tindih, sehingga energi dari yang bersebelahan tersebar antara dua - DCT memungkinkan untuk menghiasnya. Ingat bahwa ini adalah properti yang baik misalnya dalam kasus Model Campuran Gaussian, di mana Anda dapat menggunakan matriks kovarian diagonal (tidak ada korelasi antara koefisien lainnya), bukan yang penuh (semua koefisien berkorelasi) - ini menyederhanakan banyak hal.

  • Cara lain yang berhubungan dengan koefisien frekuensi mel adalah PCA (Principal Component Analysis), teknik yang hanya digunakan untuk tujuan ini. Untuk keberuntungan kami, terbukti bahwa DCT adalah pendekatan yang sangat baik untuk PCA ketika datang ke sinyal yang berhubungan dengan dekorasi, karenanya keuntungan lain dari menggunakan Discrete Cosine Transform.


Beberapa literatur:

Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio dan Selebihnya: Pengindeksan dan Pengambilan Konten Audio


1
Mengapa kita tidak bisa mengambil nilai absolut dari bilangan kompleks dari IFFT? Jika bilangan kompleks jauh lebih sulit untuk ditangani, mengapa kita pernah mengambil IFFT ketika menghitung cepstrum dan tidak selalu selalu melakukan DCT? Terima kasih untuk penjelasannya. Angka itu sangat membantu.
acannon828

1
@ acannon828: Silakan lihat 3 poin terakhir dari jawaban saya yang diedit. Saya harap sekarang ini menjelaskan semuanya.
jojek

Respons yang bagus .. Literatur apa saja yang bisa Anda lampirkan.
Bob Burt

1
@ BobBurt: Ini dia!
jojek

Terima kasih untuk bukunya. Sebagian besar hal tampaknya dijelaskan dalam hal itu. Apakah buku itu juga membahas teori tentang saluran vokal - sepertinya saya tidak dapat menemukan apa pun yang berhubungan dengan itu.
Bob Burt

3

Lebih dari menghaluskan DCT mengurangi jumlah dimensi yang dibutuhkan untuk mewakili spektrum. DCT baik untuk pengurangan dimensi karena cenderung memadatkan sebagian besar energi spektrum dalam beberapa koefisien pertama.


Terima kasih. Ini membantu saya memahami apa yang dimaksud @pichenettes dengan pengurangan dimensi.
acannon828

3

Alasan di baliknya adalah untuk memisahkan korelasi dalam besaran log-spektral (dari bank filter) karena tumpang tindih filter. Pada dasarnya, DCT menghaluskan representasi spektrum yang diberikan oleh besaran log-spektral ini.

Ini salah. Ada korelasi antara magnitudo log-spektral bukan hanya karena tumpang tindih, tetapi juga karena tidak ada urutan angka yang mewakili serangkaian "bermakna" (seperti yang terjadi dalam ucapan dan suara alami) besaran log-spektral. Log-spektral magnitudo "bermakna" cenderung agak halus, dengan penurunan keseluruhan energi dalam frekuensi yang lebih tinggi, dll. Seseorang akan mengatakan bahwa dimensi ruang semua vektor log-spektral magnitudo "bermakna" lebih kecil dari 40 atau berapa pun band yang Anda gunakan; dan DCT dapat dilihat sebagai pengurangan dimensionalitas untuk memetakan data 40 saluran ke ruang yang lebih kecil ini.

Pada dasarnya, DCT menghaluskan representasi spektrum yang diberikan oleh besaran log-spektral ini.

DCT tidak melakukan smoothing. Anda melihat smoothing ketika merekonstruksi dari data DCT - smoothing menjadi karena hilangnya informasi oleh DCT dan pemotongan koefisien yang mengikutinya.

Tetapi koefisien MFCC tidak menyimpan spektrum yang dihaluskan - ia menyimpan serangkaian koefisien DCT yang tidak berkorelasi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.