Quote:
Originally Posted by
AVSC
โก๏ธ
Hmmn Kurtosis Maximization Independent Component Analysis I do not know.
Off to read, may be some time.
Example MATLAB code is below [1]. But, the approach requires a separate mic in the array for each signal source we want separated, and itโs not particularly suitable for music productionโas we are separating sources. . .and are not chasing aesthetic room acoustics.
More directly promising to me is smart application of diffusion models. Here Karpathy mentions recent progress in LLMs. . .
https://x.com/karpathy/status/1894923254864978091
Of course, what I have in mind for upscaling channels is a significantly different workflow.
[1] MATLAB Kurtosis Maximization ICA :
% Basically, we whiten the data to second order. This makes the unmixing matrix always orthogonal.
% Next we map the fourth order statistics down into a matrix such that the inner
% product of a unit vector with this matrix gives (roughly) the kurtosis in that direction.
% The maximal eigenvectors of this new matrix are the (orthogonal) directions of maximum kurtosis
% which for supergaussian sources are pretty good guesses at the unmixing directions.
%
[x1, Fs1] = audioread('mix1.wav');
[x2, Fs2] = audioread('mix2.wav');
xx = [x1, x2]';
yy = sqrtm(inv(cov(xx')))*(xx-repmat(mean(xx,2),1,size(xx,2)));
[W,s,v] = svd((repmat(sum(yy.*yy,1),size(yy,1),1).*yy)*yy');
a = W*xx; %W is unmixing matrix
subplot(2,2,1); plot(x1); title('mixed audio - mic 1');
subplot(2,2,2); plot(x2); title('mixed audio - mic 2');
subplot(2,2,3); plot(a(1,

, 'g'); title('unmixed wave 1');
subplot(2,2,4); plot(a(2,

,'r'); title('unmixed wave 2');
audiowrite('unmixed1.wav', a(1,

, Fs1);
audiowrite('unmixed2.wav', a(2,

, Fs1);
Note : smiles happily inserted by Gearspace over colon close parentheses.
Attribution EDIT: The code sample came from Yair Weiss and Eero Simoncelli. However, the URL where I originally found it published is no longer publicly accessible.