gpt4 book ai didi

python - STFT 生成的重叠帧数

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:19 26 4
gpt4 key购买 nike

我使用scipy.signal.stft来获取音频的stft。没问题,我正在得到结果。但我不明白的是,当使用采样率为fs=44100 Hz169600个样本的音频来计算stft时,我得到 3 个返回,分别为 f、tZxx。这里Zxx的形状是(2049, 84)

为了计算 stft,我使用大小为 4096 的窗口,并使用 hanning 窗口 作为窗口类型。默认情况下,scipy.signal.stft 在帧之间使用 window_size//2 重叠。

我的问题:是否有 2049 重叠的框架?如果是或不是,如何计算stft中重叠帧的数量?如果2049不是重叠样本的数量,那么这个数字意味着什么?

最佳答案

实值信号的 FFT 产生具有埃尔米特对称性的频谱。这意味着可以从下半部分获得频谱的上半部分。此外,当 FFT 大小 N 为偶数时,中点是其自身的对称性。因此,频谱完全由 N//2 + 1 个频率点(即 scipy.signal.stft 返回的频谱大小)决定。在您的情况下,N4096,因此您会得到 4096//2 + 12049 点的频谱沿着频率轴。您应该能够确认 f 确实是一个 2049 频率值数组(从 0 到 44100/2 Hz,以 44100/4096 或 ~10.77Hz 增量)。

就时间值的数量而言,您可以将其计算为

number_of_samples = 169600
number_time_values = (number_of_samples+window_size)//(window_size - window_size//2)
% = (169600 + 4096)//(4096 - 2048)
% = 84

分子中的 +window_size (在您的情况下为 +4096)项是由于 boundary = 'zeros' 默认选项导致的在实际 169,600 个输入样本之前和之后用零填充输入。

关于python - STFT 生成的重叠帧数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com