我有一个30秒的语音信号,它以44.1 kHz的频率采样。现在,我想展示一下语音的频率。但是,我不确定这样做的最佳方法是什么。似乎有时会计算傅立叶变换的绝对值,有时会计算功率谱密度。如果我理解正确,后者的工作原理就是将信号分成几部分,逐部分进行FFT,然后以某种方式将它们相加。窗口函数以某种方式涉及。您能为我澄清一下吗?我是DSP的新手。

评论

将信号分成多个部分,找到每个部分的频谱,然后平均频谱可以帮助减少噪声,但同时也降低分辨率。参见en.wikipedia.org/wiki/Welch%27s_method

#1 楼


现在,我想展示一下语音的频率。但是,
我不确定什么是最好的方法。似乎有时会
计算傅立叶变换的绝对值,并且有时会
计算功率谱密度。然后选择功率谱密度(PSD)。这是因为这将简单地为您提供每个频带中的信号功率。另一方面,如果您不想/不在乎物理意义,但是想知道每个频段的傅立叶振幅如何相对变化,则可以坚持绝对幅度。

实际上,您可以将PSD计算为简单的傅立叶变换平方的绝对大小。例如,如果您的信号为$ x [n] $,其DFT为$ X(f)$,则DFT的绝对大小为$ | X(f)| $,而PSD为$ | X( f)| ^ 2 $。


如果我理解正确,后者的工作原理就是将信号划分为多个部分,逐个进行FFT,然后以某种方式将它们相加。 Window
函数以某种方式涉及。您能为我澄清一下吗?我是DSP新手。


不,这不是事实。您在这里所说的是指短时傅立叶变换(STFT)。这只是将您的时域信号切碎,旋转它,然后采用傅立叶变换。到最后,您仍然会有一个复杂的矩阵。如果选择其绝对值,则将具有绝对值傅立叶变换矩阵。如果将其绝对大小平方,则将有一个功率谱密度矩阵。

#2 楼

了解诸如语音信号之类的重要信息是其频率分量随时间变化。为了在频域中表示语音,我们通常采用足够短的信号窗口,在该窗口内我们可以假设语音频谱变化不大(通常为10 ms)。因此,我们使用STFT(通常在窗口之间有些重叠)为每个连续的10 ms窗口计算功率谱,并将每个连续的谱视为该特定时间语音频率分量的“快照”。通常,将连续光谱绘制在3D图中,例如在频谱图上,在X轴上显示时间,在Y轴上显示频率,并在每个X,Y位置将幅度绘制为假彩色或灰度强度。