假設我有兩個輸入信號f1
和f2
。我可以添加這些信號來產生第三個信號f3 = f1 + f2
。然後我將計算f3
的譜圖爲log(|stft(f3)|^2)
。兩個音頻文件的頻譜圖(加在一起)
很抱歉,我還沒有原始信號f1
和f2
。然而,我有他們的光譜圖A = log(|stft(f1)|^2)
和B = log(|stft(f2)|^2)
。我正在尋找的是一種儘可能接近log(|stft(f3)|^2)
的方法,使用A
和B
。如果我們做一些數學我們可以推導出:
log(|stft(f1 + f2)|^2) = log(|stft(f1) + stft(f2)|^2)
表達stft(f1) = x1 + i * y1
& stft(f2) = x2 + i * y2
寫
... = 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))
... = log(|stft(f1)|^2 + |stft(f2)|^2 + 2 * (x1 * x2 + y1 * y2))
所以在這一點上,我可以使用近似:
log(|stft(f3)|^2) ~ log(exp(A) + exp(B))
,但我會忽略的最後一部分2 * (x1 * x2 + y1 * y2)
。所以我的問題是:是否有更好的近似值?
任何想法?謝謝。
平方運算不是線性的,因此你將得到一個不可分的交叉項(就像你發現的那樣)。 – SleuthEye
所以沒有辦法?你知道任何聰明的近似嗎?或者我可以使用的東西,因爲我正在處理真實世界的音頻文件? – user667804
如果兩個輸入不相關,則交叉項將消失。 – SleuthEye