我正在将Python代码转换为MATLAB。Python代码使用以下命令:
stft_ch = librosa.core.stft(audio_input[:, ch_cnt], n_fft=self._nfft,
hop_length=self._hop_len, win_length=self._win_len,
window='hann')
当 audio_input.shape=(2880000, 4)
,self._nfft=2048
,self._hop_len=960
和 self._win_len=1920
时。
转换为MATLAB时,我使用了:
stft_ch = spectrogram(audio_input(:, ch_cnt), hann(win_len), win_len-hop_len, nfft);
在验证过程中,我发现音频输入的大小为2880000, 4
,win_len=1920
,win_len-hop_len=960
,以及nfft=2048
。
从MATLAB中获得的输出结果是size(stft_ch)=1025, 2999
,而Python中则显示stft_ch.shape=(1025, 3001)
。其中MATLAB输出结果中的2999
符合文档说明,因为当window是一个向量时,k = ⌊(Nx – noverlap)/(length(window) – noverlap)⌋
。
然而,我并没有在Python文档中找到如何设置t
长度的方法。
为什么会出现大小不同的差异?我的转换是否正确?
是否有一种Python函数可以产生类似于MATLAB的spectrogram()
的输出结果,从而使我能够获得相同大小的复杂输出结果?