1 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
很長(zhǎng)一段時(shí)間后,并沒(méi)有得到滿意的賞金,我自己找到了答案。
MATLAB 函數(shù)spectrogram()
輸出一個(gè)時(shí)間向量,該向量對(duì)應(yīng)于每個(gè)窗口的中間,同時(shí)省略最后一個(gè)窗口。例如,具有 3 個(gè)樣本窗口和 1 個(gè)樣本重疊的 10 個(gè)樣本長(zhǎng)度的信號(hào)將產(chǎn)生以下 4 個(gè)窗口:
1:3
, 3:5
, 5:7
, 7:9
, 其中m:n
表示一個(gè)窗口,包括從m
到n
包括第n
th 個(gè)樣本的樣本。
因此,窗戶的中心將是:2,4,6,8
。請(qǐng)注意,不包括第 10 個(gè)樣本。
似乎 MATLAB 需要number_of_windows
對(duì)(number_of_windows-1)*hop_length+window_size<=number_of_samples
.
另一方面,在 python 版本liberosa.core.stft()
上,t 是每個(gè)幀的第一個(gè)樣本的時(shí)間,幀覆蓋的比輸入信號(hào)多。例如,具有 3 個(gè)樣本窗口和 2 個(gè)樣本跳(跳和不重疊)的 10 個(gè)樣本長(zhǎng)度的信號(hào)將產(chǎn)生以下 4 個(gè)窗口:
1:3
, , 3:5
, 5:7
, 7:9
, 9:11
, 其中m:n
表示一個(gè)窗口,包括從m
到n
包括第n
th 個(gè)樣本的樣本。
因此,窗口的開(kāi)頭將是:1,3,5,7,9
。請(qǐng)注意,包括第 11 個(gè)不存在的樣本。
似乎 liberosa 需要最小number_of_windows
化到number_of_windows*hop_length>number_of_samples
.
就我而言:
(2999-1)*960+1920=2880000<=2880000 對(duì)于 MATLAB。3001*960=2880960>2880000 而 30000*960=2880000 !> 2880000 在 python 中。
請(qǐng)注意,時(shí)間可以通過(guò)設(shè)置center=True
標(biāo)志以 python 為中心。
這是我能找到的最好的解釋。歡迎任何其他解釋作為答案。
添加回答
舉報(bào)