Angenommen, ich habe zwei Eingangssignale f1
und f2
. Ich könnte diese Signale hinzufügen, um ein drittes Signal f3 = f1 + f2
zu erzeugen. Ich würde dann das Spektrogramm von f3
als log(|stft(f3)|^2)
berechnen.Spektrogramm von zwei Audiodateien (zusammen addiert)
Leider habe ich nicht die ursprünglichen Signale f1
und f2
. Ich habe jedoch ihre Spektrogramme und B = log(|stft(f2)|^2)
. Was ich suche, ist eine Möglichkeit, log(|stft(f3)|^2)
so genau wie möglich mit A
und B
anzunähern. Wenn wir etwas tun Mathe können wir ableiten:
log(|stft(f1 + f2)|^2) = log(|stft(f1) + stft(f2)|^2)
stft(f1) = x1 + i * y1
& stft(f2) = x2 + i * y2
express
... = log(|x1 + i * y1 + x2 + i * y2|^2)
... = log((x1 + x2)^2 + (y1 + y2)^2)
... = log(x1^2 + x2^2 + y1^2 + y2^2 + 2 * (x1 * x2 + y1 * y2))
zu schreiben
an dieser Stelle So konnte ich die Annäherung verwenden:
log(|stft(f3)|^2) ~ log(exp(A) + exp(B))
aber ich würde den letzten Teil 2 * (x1 * x2 + y1 * y2)
ignorieren. Meine Frage ist also: Gibt es eine bessere Annäherung dafür?
Irgendwelche Ideen? Vielen Dank.
Quadratische Operation ist nicht linear, und als Ergebnis erhalten Sie einen Cross-Term, der nicht separierbar ist (wie Sie herausgefunden haben). – SleuthEye
Also gibt es keinen Weg? Kennst du eine kluge Annäherung? Oder etwas, das ich verwenden könnte, weil ich mit echten Audiodateien zu tun habe? – user667804
Wenn die zwei Eingänge nicht korreliert sind, verschwindet der Kreuzterm. – SleuthEye