我是靠谱客的博主 爱笑人生,最近开发中收集的这篇文章主要介绍【语音信号处理】时频分析与傅里叶变换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

时频分析与傅里叶变换

变换

变换是一种常用的数学工具

例如:

变换

其中 e x e_x ex e y e_y ey 构成标准正交基,满足如下条件:
{ ∣ ∣ e x ∣ ∣ = ∣ ∣ e y ∣ ∣ = 1 ⟨ e x , e y ⟩ = 0 begin{cases} ||e_x||=||e_y||=1 \ langle{e_x,e_y}rangle=0 end{cases} {ex=ey=1ex,ey=0
前面的系数表示平面中的点在这个基向量方向上有多少个单位长度。


傅里叶变换

傅里叶变换本质上也是一种标准正交变换。 在傅里叶变换中的标准正交基,是由一系列的正余弦函数构成。

傅里叶级数基本思想: 对于任何一个周期性函数,都可以用一组正余弦函数的求和来模拟出来。

直观理解:

傅里叶级数

在时域方向看,只能看到一个随时间变化的时域信号,看不到信号背后包含多少个正余弦函数;

从频域方向看,我们可以看到三个信息:

1)这个信号究竟包含哪些频率分量(正余弦函数)

2)每一个频率分量他的幅值是多少(幅度)

3)每一个频率分量的起始点(相位)。

傅里叶级数(Fourier Series)

如果 x ( t ) x(t) x(t) 是一个周期为 T 0 T_0 T0 的周期性连续函数,则 x ( t ) x(t) x(t) 可展开成傅里叶级数:
x ( t ) = ∑ k = − ∞ ∞ X ( j k Ω 0 ) e j k Ω 0 t X ( j k Ω 0 ) = 1 T 0 ∫ − T 0 / 2 T 0 / 2 x ( t ) e − j k Ω 0 t d t x(t)=sum_{k=-infty}^{infty}X(jkOmega_0)e^{jkOmega_0t} \ X(jkOmega_0)=frac1{T_0}int_{-T_0/2}^{T_0/2}x(t)e^{-jkOmega_0t}dt x(t)=k=X(jkΩ0)ejkΩ0tX(jkΩ0)=T01T0/2T0/2x(t)ejkΩ0tdt
解读: Ω 0 = 2 π F = 2 π T 0 Omega_0=2pi{F}=frac{2pi}{T_0} Ω0=2πF=T02π 傅里叶级数系数的计算,实质上是通过内积的方式,“抽取”对应频率分量的系数。例如,对于给定信号 x ( t ) x(t) x(t),是以 T 0 T_0 T0 为周期的周期型函数,则 x ( t ) x(t) x(t) 和标准正交基 e − j k Ω 0 t e^{-jkOmega_0t} ejkΩ0t 做内积:
x ( t ) e − j k Ω 0 t = { A k , x ( t ) 中包含  k Ω 0 分 量 0 , x ( t ) 中不包含  k Ω 0 分 量 x(t)e^{-jkOmega_0t}= begin{cases} A_k, &x(t)text{中包含 }kOmega_0 分量 \ 0, &x(t)text{中不包含 }kOmega_0 分量 end{cases} x(t)ejkΩ0t={Ak,0,x(t)中包含 kΩ0x(t)中不包含 kΩ0
所以可以理解为对于频率分量 k Ω 0 kOmega_0 kΩ0,在给定信号 x ( t ) x(t) x(t) 中,究竟有没有与 k Ω 0 kOmega_0 kΩ0 这个频率分量相关的分量,通过这种方式把这些频率分量在原始信号中的比重提取出来。

连续傅里叶变换(Fourier Transform)

对于连续非周期信号 x ( t ) x(t) x(t) ,可以看做是一个周期为无穷大的周期性信号,同样傅里叶变换可以表示为:
X ( j Ω ) = ∫ − ∞ ∞ x ( t ) e − j Ω t d t x ( t ) = 1 2 π ∫ − ∞ ∞ X ( j Ω ) e j Ω t d Ω X(jOmega)=int_{-infty}^{infty}x(t)e^{-j{Omega}t}dt \ x(t)=frac1{2pi}int_{-infty}^{infty}X(jOmega)e^{j{Omega}t}dOmega X(jΩ)=x(t)ejΩtdtx(t)=2π1X(jΩ)ejΩtdΩ
同样可以理解为通过内积的方式,提取原始信号中 Ω Omega Ω 分量的比重。

与傅里叶级数不同的是,由于时域信号非周期,因此频域信号中是连续谱。

离散时间傅里叶变换(Discrete Time Fourier Transform)

一个域离散 <=> 另一个域周期

离散非周期信号 x ( n ) x(n) x(n) 的 DTFT 可以表示为:
X ( e j ω ) = ∑ n = − ∞ ∞ x ( n ) e − j ω n x ( n ) = 1 2 π ∫ − π π X ( e j ω ) e j ω n d ω X(e^{jomega})=sum_{n=-infty}^{infty}x(n)e^{-j{omega}n} \ x(n)=frac1{2pi}int_{-pi}^{pi}X(e^{jomega})e^{j{omega}n}domega X(ejω)=n=x(n)ejωnx(n)=2π1ππX(ejω)ejωndω
同样可以理解为通过内积的方式,提取原始信号中 ω omega ω 分量的比重。

一般使用 Ω Omega Ω 表示真实的模拟频率,而使用 ω omega ω 来表示被采样频率 F S F_S FS 归一化后的离散频率与数字频率。

ω = Ω F S omega = frac{Omega}{F_S} ω=FSΩ

解读:DTFT 与傅里叶级数互为正反变换。

离散傅里叶变换(Discrete Fourier Transform)

快速傅里叶变换(FFT)就是离散傅里叶变换的一个快速算法。

离散周期信号 x ( n ) x(n) x(n) 的 DFT 可以表示为:
X ( k ) = ∑ n = 0 N − 1 x ( n ) e − j 2 π N n k = ∑ n = 0 N − 1 x ( n ) W N n k x ( n ) = 1 N ∑ k = 0 N − 1 X ( k ) e j 2 π N n k = 1 N ∑ k = 0 N − 1 X ( k ) W n − n k W N = e − j 2 π N X(k)=sum_{n=0}^{N-1}x(n)e^{-j{frac{2pi}N}nk}=sum_{n=0}^{N-1}x(n)W_N^{nk} \ x(n)=frac1Nsum_{k=0}^{N-1}X(k)e^{j{frac{2pi}N}nk}=frac1Nsum_{k=0}^{N-1}X(k)W_n^{-nk} \ W_N=e^{-j{frac{2pi}N}} X(k)=n=0N1x(n)ejN2πnk=n=0N1x(n)WNnkx(n)=N1k=0N1X(k)ejN2πnk=N1k=0N1X(k)WnnkWN=ejN2π
解读:DFT 只针对有限长序列或周期序列。

DFT 相当于对 DTFT 中的正变换加以采样,造成时域信号的周期性,因此时域信号应限制在一个周期内。凡是用到离散傅里叶变换的时候,有限长序列都是作为周期序列的一个周期来表示的,都隐含有周期性意义。

离散傅里叶变换的矩阵形式

Fourier 矩阵:

Fourier矩阵 $$ X(k)=Fx(n) \ X(n)=F^{-1}X(k) $$ Fourier 矩阵性质: $$ F^HF=FF^H=NI=>F^{-1}=frac1NF^H $$
傅里叶变换的四种形式
傅里叶变换总结

总结:

  • 无论是哪一种傅里叶变换,都可以用抽取的思想理解,也就是通过内积的方式,把每一个频率分量对应的比重抽取出来。

  • 一个域离散 <=> 另一个域周期


离散傅里叶变换的几个问题

频谱泄漏

频谱泄漏是指由于信号截断造成的原始信号频谱扩散现象。

产生频谱泄漏的原因是对信号的截断。信号的截断相当于在原始信号 x ( n ) x(n) x(n) 与一个窗函数 ω ( n ) omega(n) ω(n) 相乘,在频域中相当于各自频谱的卷积过程。卷积的结果造成原始信号频谱的“扩散”(或拖尾、变宽),这就是频谱泄漏。

栅栏效应

因为 DFT 计算频谱只限制在离散点上的频谱,也就是 F 0 F_0 F0 的整数倍处的谱,而无法看到连续频谱函数,这就像通过一个“栅栏”观看景象一样,只能在离散点的地方看到真实场景。这种现象称为“栅栏效应”。

减小栅栏效应的方法就是要频域抽样更密,即增加频域抽样点数,就好像距离“栅栏”的距离边远一些。在不改变时域信号的情况下,必然是在时域信号末端补零。补零后的时域数据,在频谱中的谱线更密,原来看不到的谱分量就有可能看到了。

语音信号 DFT 的共轭对称性

时域中的语音信号,经过离散傅里叶变换 DFT 后的频谱是共轭对称的。

最后

以上就是爱笑人生为你收集整理的【语音信号处理】时频分析与傅里叶变换的全部内容,希望文章能够帮你解决【语音信号处理】时频分析与傅里叶变换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部