Factorisasi matriks non-negatif untuk pemisahan audio - mengapa ia bekerja?


8

Matriks Faktor Non-Negatif bertujuan untuk memfaktisasi matriks ke dalam produk dari dua matriks, , di mana mewakili seperangkat vektor basis dan aktivasi atau bobotnya. Diterapkan pada pemisahan sumber audio, \ mathbf V adalah spektrogram (yang diketahui oleh kami), dan \ mathbf W adalah basis spektrum non-negatif, \ mathbf H adalah aktivasi temporal mereka.VV=WHWHVWH

Ini sepertinya saya dapat mengekspresikan spektogram sebagai jumlah dari nampan frekuensi yang berbeda dan besarnya - yang akan membantu untuk menyaring atau memisahkan pitch yang berbeda (tampaknya melakukan pekerjaan filter band-pass normal?). Saya tidak mengerti bagaimana ini akan benar-benar memisahkan, katakanlah, piano dan penyanyi menyanyikan nada yang sama atau serupa.


untuk not musik dengan harmonik, mungkin bank filter sisir akan lebih baik daripada bank filter band-pass yang hanya akan menyelaraskan fundamental (atau mungkin harmonik lain). gigi frekuensi rendah dari filter sisir akan diubah ke frekuensi yang sama dengan BPF. sehingga spektogram dapat dianggap sebagai jumlah frekuensi nada berbeda dengan harmoniknya. akan ada beberapa tumpang tindih.
robert bristow-johnson

Jawaban:


7

Ingat bahwa kolom dapat dianggap sebagai vektor "basis" (atau elemen kamus - blok penyusun sinyal apa pun) dan elemen di setiap kolom dalam memberikan bobot yang sesuai (yang bervariasi dari waktu ke waktu). Ini memungkinkan kita untuk menguraikan spektrogram berdasarkan tidak hanya komponen frekuensi tetapi juga informasi awal temporal; jadi itu lebih dari apa yang bandpass filter atau filter sisir sederhana akan lakukan.WH

Factisasi matriks non-negatif dari spektogram tidak akan secara ajaib memisahkan piano dan penyanyi bernyanyi dalam nada yang sama. Namun itu memberikan perkiraan yang berguna dalam hal jumlah vektor basis tertimbang yang (mudah-mudahan) dapat dibagi menjadi kontribusi dari sumber yang berbeda karena tidak mungkin bagi setiap sumber untuk menempati persis tempat frekuensi yang sama pada saat yang bersamaan.

Lebih konkret, mari menjadi , menjadi dan menjadi . Jadi kami memiliki tempat frekuensi , sampel waktu dan komponen teruraiJika adalah kolom dari dan adalah baris dari kita dapat menulis: VM×NWM×KHK×NMNKwiWhiH

Vi=1KwihiT.
Jika kita tahu hanya ada dua sumber dalam rekaman (piano dan penyanyi) kita dapat mencoba untuk membagi kontribusi mereka dengan memilih himpunan bagian dari kolom dan subset yang sesuai dari baris . Jadi, jika maka bagian yang disumbangkan oleh piano dapat dilambangkan dengan: dan bagian yang dikontribusikan oleh penyanyi adalah: WHS{1,,K}
Vpiano=iSwihiT
Vsinger=i{1,,K}SwihiT

Pada kenyataannya, kita mungkin akan berakhir dengan dekomposisi yang tidak pernah mencapai pemisahan ini dengan tepat. Artinya, akan ada yang memiliki kontribusi dari penyanyi dan piano sehingga sulit untuk memisahkan keduanya.wi

Berikut ini adalah notebook Python yang menunjukkan prosedur ini untuk campuran drum dan gitar: http://nbviewer.jupyter.org/gist/ingle/93de575aac6a4c7fe9ee5f3d5adab98f (Atau jika itu tidak berhasil, di sini: https://gist.github.com / ingle / 93de575aac6a4c7fe9ee5f3d5adab98f )

Perhatikan bahwa algoritma NMF hanya menghasilkan dekomposisi. Itu tidak dapat memilih himpunan bagian dari sesuai dengan masing-masing sumber. Dalam contoh Python, ada langkah manual untuk mencari tahu yang mana paling mirip dengan gitar v / s drum. Orang mungkin dapat mengotomatiskan langkah ini dengan mencatat bahwa vektor drum memiliki lebih banyak barang dalam frekuensi yang lebih rendah.{wi}wiwi

Menganalisis setiap kolom (bingkai) spektogram menggunakan bank filter bandpass adalah cara lain untuk menguraikan spektogram tersebut. Namun, perhatikan bahwa dekomposisi yang dihasilkan oleh NMF adalah peringkat rendah yaitu pelit. Dalam contoh Python, itu jauh lebih mudah untuk secara manual memilih himpunan bagian dari 16 kolom sesuai dengan dua sumber. Dengan setumpuk bandpass filter, kami harus memutar lebih banyak tombol (# filter, lokasi pass-band untuk setiap frame) dan jumlah kombinasi parameter dapat tumbuh dengan sangat cepat.W

Referensi:

https://ccrma.stanford.edu/~njb/teaching/sstutorial/part2.pdf

http://musicinformationretrieval.com/nmf.html


1
Tautan notebook Pyhton tidak berfungsi
soultrane

1
ketika penyanyi dan piano menyanyikan nada yang sama (kelas nada dan oktaf yang sama), bagaimana hal itu mengatur dan mengatur set yang sesuai untuk penyanyi (yang Anda nyatakan sebagai ) akan berbeda? S{1,,K}S
robert bristow-johnson

@ robertbristow-johnson, Anda benar - dalam hal ini deskripsi saya tidak akurat. Namun, saya membuat asumsi bahwa sangat tidak mungkin bahwa penyanyi dan piano menyanyikan nada yang persis sama pada saat yang sama instan / onset identik. Jadi ada harapan bahwa kita dapat membaginya menjadi subset terpisah. Jika tidak, akan ada yang akan memiliki kontribusi dari kedua sumber. wi
Atul Ingle

@sinkran tautan diperbaiki.
Atul Ingle

1
Ini berbeda karena menggunakan bank filter bandpass akan memberikan dekomposisi "lebih padat" sedangkan NMF memberikan dekomposisi "lebih jarang". Dekomposisi yang dihasilkan oleh NMF adalah peringkat rendah dan pelit. Dalam contoh Python, itu jauh lebih mudah untuk secara manual memilih himpunan bagian dari 16 kolom sesuai dengan dua sumber. Dengan setumpuk bandpass filter, kami harus memutar lebih banyak tombol (# filter, lokasi pass-band untuk setiap frame) dan jumlah kombinasi parameter dapat tumbuh dengan sangat cepat. W
Atul Ingle

0

Tujuan: perkiraan yang baik untuk memisahkan satu penyanyi dari satu piano. Sekarang beberapa pemikiran tentang persyaratan untuk pemisahan yang akurat dari sumber suara yang diberikan itu tidak mungkin untuk memiliki SEMUA informasi input yang diperlukan untuk melakukan pemisahan yang akurat (mungkin "vektor basis" Anda):
- untuk setiap volume setiap nada piano yang dihasilkan distribusi frekuensi disampling dari waktu ke waktu (karena serangan kemudian memudar). - untuk setiap nada X volume X fonem penyanyi menyuarakan distribusi frekuensi (dan variasinya dengan berbagai tingkat vibrato). - untuk semua hal di atas, efek reverb harus dipertimbangkan. - lirik lagu (untuk mencocokkan fonem penyanyi)

Ada juga batasan waktu-domain seperti setiap not piano harus dimulai dengan serangan, dan efek dari pedal piano bertahan (tiba-tiba peredam simultan dekat nada yang "berdering" meskipun tombol yang sesuai telah dirilis)

Mengingat hal di atas pencarian adalah untuk jumlah "paling pas" dari satu set spektrum nada piano dan satu spektrum volume nada fonem tunggal penyanyi untuk memperkirakan suara yang dihasilkan.

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.