I know how NMF works by itself (unsupervised), but I am now interested in learning how it works in the supervised way.
Suppose I have a clean isolated time domain signal of about 3 seconds in length that sounds like a piano, I want to train this as a model to use in the supervised separation of a mixture that contains a piano (not the same piano sound) and some drums.
I am still learning, so help me understand the following.
For this to even work, I am assuming I need a NMF algorithm that allows switching of W basis updates to true/false. I think it is set to true when we learn the model (piano), but set to false (fixed) when doing supervised separation, correct? In the separation stage, the H vector is not needed from the training correct?
Then, how does this work in terms of window lengths and hop size selection between signals? If I trained with 4096 and 2048 as pair of win:hop, do I need the same pair for the supervised separation step? or can they be different?
Also, how does it work with the truncation of samples for training vs separation? Is it possible to train a sample of 30 seconds and apply it on a mixture of only 10 seconds? or does the training always have to be less than the mixture?
And even then, in the scenario of training sample being less, how does that fit in with the framework of NMF, considering that when I do a Short Time Fourier Transform of the training sample at given win:hop pair, it will surely be different than the win:hop pair of the STFT from the mixture, so how does it work to "fit" the sizes, or does this not matter in the separation stage?
But then again, if I am using a pre-trained W basis vector, it comes with a size, for example 2049 x 1, and if my mixture is different than that, how will it work?
I am just confused about the logic of how all of this supervision works for NMF. I am currently using MATLAB, so showing me a demo would be fantastic. Or just explain me the quick rundown of how all of this makes sense based on what I said above.