语音信号处理入门系列(2)——信号处理中的几个关键概念

数字信号

  信号是信息的物理载体,信息是信号的具体内容。

连续时间信号:在连续时间范围内定义的信号,信号的幅度可以是连续的(模拟信号),也可以是离散的

离散时间信号时间为离散变量的信号,即独立变量时间被量化了,而幅度仍是连续变化的

数字信号时间离散而幅度量化的信号

从模拟信号到数字信号

我们经常处理语音的时候会发现两个常用的格式:“pcm”和“wav”,这两种格式其实本质上是一样的,pam是脉冲编码调制(pulse code modulation)的一个缩写,pcm的实质就是这三个步骤:采样量化编码。

数字信号基本运算

移位:设某一序列x(n),当m>0 时,x(n-m) 表示序列x(n) 逐项依次延时(右移)m 位。(左加右减)

翻褶:设某一序列x(n),则x(-n) 是以n=0 的纵轴为对称轴将x(n) 加以翻褶。

:$z(n)=x(n)+y(n)$

:$z(n)=x(n)·y(n)$

累加:$y(n)=sum_{k=-infty}^{n}x(k)$

差分 (一阶):$y(n)=x(n)-x(n-1)$

尺度变换:对于序列$x(n)$, 形如x(mn)或者x(frac{n}{m})(m为正整数)的序列为$x(n)$的尺度变换序列。

以$x(2n)$为例,是以低一倍的抽样频率从x(n)中每隔两点取一点,这种运算称为抽取,常用于语音信号的下采样,通常在抽取之前要加入一个防混叠的滤波器。

类似的,$x(frac{n}{2})$ 称为插值,在语音信号每两个点之间插入一个值,因为我们不知道这个插入的值是多少,一般插0,本身信息并没有增加,通常在插值之后我们还需要一个平滑,也就是在插入这些零点之后,后接一个平滑滤波器,利用相邻采样点之间的取值,把插入的值算出来,常用于语音升采样。

线性卷积 (linear convolution) : $y(n)=sum_{m=-infty}^{infty} x(m) h(n-m)=x(n) * h(n)$

由卷积的定义可知,卷积在图形表示上可分为四步:翻褶、移位、相乘、相加。

$x_n$的长度为$N_1$,$h(n)$的长度为$N_2$,卷积之后信号$y(n)$的长度为$N_1+N_2-1$

线性卷积的应用:模拟远场数据

  近讲纯净语音信号卷积一个房间冲击响应(RIR)=远场语音信号(带有混响)

圆周移位 (circular shift) :$x_{m}(n)=x((n+m))_{N} R_{N}(n)$

  其中,$x((n+m))_N$表示$x(n)$经过周期( N )延拓后的序列,再移位$m$,$R_N(n)$为取主值序列$R_{N}(n)=left{egin{array}{ll}1 & 0 leqslant n leqslant N-1 \0 & ext { other } nend{array} ight.$

圆周卷积 (circular convolution)

如果$x_1(n)$和$x_2(n)$都是长度为 N 的有限长序列$0leq nleq N-1$,并且

$left{egin{matrix}D F Tleft[x_{1}(n) ight]=X_{1}(k)\ D F Tleft[x_{2}(n) ight]=X_{2}(k)end{matrix} ight.$==》$Y(k)=X_{1}(k) X_{2}(k)$

则$x_1(n)$和$x_2(n)$的圆周卷积定义为

$$egin{aligned}
y(n)=I D F T[Y(k)] &=left[sum_{m=0}^{N-1} x_{1}(m) x_{2}((n-m))_{N} ight] R_{N}(n) \
&=left[sum_{m=0}^{N-1} x_{2}(m) x_{1}((n-m))_{N} ight] R_{N}(n)
end{aligned}$$

结论:在时域的圆周卷积相当于在频域这两个傅里叶变换的乘积

注意:与线性卷积相比,圆周卷积多了 周期延拓 和 取主值序列 两个步骤。因此必须指定圆周卷积的点数 N 。

圆周卷积和线性卷积的关系

圆周卷积

$$egin{aligned}
y(n)=I D F T[Y(k)] &=left[sum_{m=0}^{N-1} x_{1}(m) x_{2}((n-m))_{N} ight] R_{N}(n) \
&=left[sum_{m=0}^{N-1} x_{2}(m) x_{1}((n-m))_{N} ight] R_{N}(n)
end{aligned}$$

线性卷积

$$y(n)=sum_{m=-infty}^{infty} x(m) h(n-m)=x(n) * h(n)$$

给定两个有限长序列$x_1(n)$和$x_2(n)$,他们的长度分别为:$N_1=5$,$N_2=3$。相应的取值如下图,我们重点研究$0leq nleq N-1$这个区间内,线性卷积和圆周卷积的关系。

 

一般的,如果两个有限长序列的长度为$N_1$和$N_2$,且满足$N_1geq N_2$,则圆周卷积的N_1-N_2+1个点,与线性卷积的结果一致。

线性相关(linear correlation) :$r_{x y}(m)=sum_{n=-infty}^{infty} x(n) y^{*}(n-m)$

圆周相关(circular correlation)

如果:$R_{x y}(k)=X(k) Y^{*}(k)$

则$x(n)$和$y(n)$的圆周相关定义为:

$$r_{x y}(m)=I D F Tleft[R_{x y}(k) ight]=sum_{n=0}^{N-1} y^{*}(n) x((n+m))_{N} R_{N}(m)=sum_{n=0}^{N-1} x(n) y^{*}((n-m))_{N} R_{N}(m)$$

圆周相关和线性相关的关系线:一般的,如果两个有限长序列的长度为$N_1$和$N_2$,且满足$N_1geq N_2$,则有圆周相关的前$N_1-N_2+1$个点,与线性相关的结果一致。

采样定理

模拟信号的采样:

 

采样:利用周期性冲激函数序列,从连续信号$x_a(t)$中抽取一系列的离散值,得到采样信号,即离散时间信号 $hat{x}_a(t)$。

冲激函数序列:$公式2.1:delta_{T}(t)=sum_{m=-infty}^{infty} delta(t-m T)$

则,采样信号:$公式2.2:hat{x}_{a}(t)=x_{a}(t) cdot delta_{T}(t)$

将(2.1)代入(2.2),得:$hat{x}_{a}(t)=sum_{m=-infty}^{infty} x_{a}(t) delta(t-m T)$

由于$delta(t-mT)$只在$t=mT$处于不为零,因此:

$$hat{x}_{a}(t)=sum_{m=-infty}^{infty} x_{a}(m T) delta(t-m T)$$

采样后信号频谱的变化

$$hat{x}_{a}(t)=x_{a}(t) cdot delta_{T}(t)$$

等式两端取DTFT之后

$$hat{X}_{a}(j Omega)=frac{1}{2 pi}left[Delta_{T}(j Omega) * X_{a}(j Omega) ight]=frac{1}{T} sum_{k=-infty}^{infty} X_{a}left(jleft(Omega-k Omega_{s} ight) ight)$$

其中$Delta_{T}(j Omega)=D T F Tleft[delta_{T}(t) ight]$

结论:频谱产生了周期延拓 ,周期为$Omega_s$。因此,只要各延拓分量与原频谱分量不发生频率交叠,则可以恢复原信号。

公式推导

$$hat{X}_{a}(j Omega)=frac{1}{2 pi}left[Delta_{T}(j Omega) * X_{a}(j Omega) ight]=frac{1}{T} sum_{k=-infty}^{infty} X_{a}left(jleft(Omega-k Omega_{s} ight) ight)$$

其中$Delta_{T}(j Omega)=D T F Tleft[delta_{T}(t) ight]$,由于$delta_T(t)$是周期信号(周期为 T ),则可以表示成傅里叶级数

$$delta_{T}(t)=sum_{k=-infty}^{infty} A_{k} e^{j k Omega_{s} t}$$

其中$Omega_{s}=frac{2 pi}{T}$为采样频率,

$$egin{aligned}
A_{k} &=frac{1}{T} int_{T} delta_{T}(t) e^{-j k Omega_{d} t} d t=frac{1}{T} int_{T} sum_{m=-infty}^{infty} delta(t-m T) e^{-j k Omega_{c} t} d t \
&=frac{1}{T} int_{T} delta(t) e^{-j k Omega_{s} t} d t=frac{1}{T}
end{aligned}$$

因为在一个积分区间T$[-frac{T}{2}, frac{T}{2}]$内,只有一个冲激函数。

奈奎斯特采样定理

要想采样后能够无失真的还原出原信号,则采样频率必须大于两倍信号谱的最高频率。

$$f_{s}>2 f_{h}$$

空间“采样定理

  频域 空域
采样 冲激函数序列 麦克风
采样率 $f_s$ $d$
信号的最高频率 $f_h$ $lambda_{min}$
防混叠条件 $f_s>2f_h$ $d<frac{lambda_{min}}{2}$

时频分析与傅里叶变换

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

其中$e_x$和$e_y$构成标准正交基 ,满足如下条件前

$$left{egin{array}{c}
left|mathbf{e}_{x} ight|=left|mathbf{e}_{y} ight|=1 \
leftlanglemathbf{e}_{x}, mathbf{e}_{y} ight angle=0
end{array} ight.$$

前面的系数表示平面中的点在这个基向量方向上有多少个单位长度。

利用正弦波模拟方波

何为“频域”?

傅里叶级数 (Fourier Series)

  如果$x(t)$是一个周期为$T_0$的周期性连续函数,则$x(t)$可展开成傅里叶级数:

$$egin{array}{l}
x(t)=sum_{k=-infty}^{infty} Xleft(j k Omega_{0} ight) e^{j k Omega_{0} t} \
Xleft(j k Omega_{0} ight)=frac{1}{T_{0}} int_{-T_{0} / 2}^{T_{0} / 2} x(t) e^{-j k Omega_{0} t} d t
end{array}$$

解读:$Omega_{0}=2 pi F=frac{2 pi}{T_{0}}$傅里叶级数系数的计算,实质上是通过内积的方式,“抽取”对应频率分量的系数。

连续傅里叶变换 (Fourier Transform)

  连续非周期信号$x(t)$的傅里叶变换可以表示为:

$$egin{array}{l}
X(j Omega)=int_{-infty}^{infty} x(t) e^{-j Omega t} d t \
x(t)=frac{1}{2 pi} int_{-infty}^{infty} X(j Omega) e^{j Omega t} d Omega
end{array}$$

解读:这应该是大家在“信号与系统”里学到的第一个傅里叶变换公式。它仍然是通过内积的方式,“抽取”对应频率分量的系数。与傅里叶级数不同的是,由于时域信号非周期,因此频域中是连续谱。

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

  离散非周期信号 x(n) 的 DTFT 可以表示为:

$$egin{array}{l}
Xleft(e^{j omega} ight)=sum_{n=-infty}^{infty} x(n) e^{-j omega n} \
x(n)=frac{1}{2 pi} int_{-pi}^{pi} Xleft(e^{j omega} ight) e^{j omega n} d omega
end{array}$$

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

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

  离散周期信号 x(n) 的 DFT 可以表示为:

$$egin{array}{l}
X(k)=sum_{n=0}^{N-1} x(n) e^{-j frac{2 pi}{N} n k}=sum_{n=0}^{N-1} x(n) W_{N}^{n k} \
x(n)=frac{1}{N} sum_{k=0}^{N-1} X(k) e^{j frac{2 pi}{N} n k}=frac{1}{N} sum_{k=0}^{N-1} X(k) W_{n}^{-n k}
end{array}$$

其中$W_{N}=e^{-j frac{2 pi}{N}}$

解读:DFT 只针对有限长序列或周期序列。

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

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

定义Fourier 矩阵:

$$mathbf{F}=left[egin{array}{ccccc}
1 & 1 & 1 & ldots & 1 \
1 & W_{N} & W_{N}^{2} & ldots & W_{N}^{N-1} \
vdots & vdots & vdots & vdots & vdots \
1 & W_{N}^{N-1} & W_{N}^{2(N-1)} & ldots & W_{N}^{(N-1)(N-1)}
end{array} ight] quad W_{N=e^{-j frac{2 pi}{N}}}$$

Fourier矩阵的性质:$mathbf{F}^{H} mathbf{F}=mathbf{F} mathbf{F}^{H}=N mathbf{I}$--->$mathbf{F}^{-1}=frac{1}{N} mathbf{F}^{H}$

$$egin{array}{l}
mathbf{X}(k)=mathbf{F x}(n) \
mathbf{x}(n)=mathbf{F}^{-1} mathbf{X}(k)
end{array}$$

傅里叶变换的四种形式

  时间函数 正变换 反变换 频率函数

Fourier
Transform

连续
非周期

$X(j Omega)=int_{-infty}^{infty} x(t) e^{-j Omega} d t$ $x(t)=frac{1}{2 pi} int_{-infty}^{infty} X(j Omega) e^{i Omega t} d Omega$

非周期
连续

Fourier
Series

连续
周期

$Xleft(j k Omega_{0} ight)=frac{1}{T_{0}} int_{-T_{0} / 2}^{T_{0} / 2} x(t) e^{-j k Omega_{0} t} d t$ $x(t)=sum_{k=-infty}^{infty} Xleft(j k Omega_{0} ight) e^{j k Omega_{0} t}$

非周期
离散

DTFT

离散
非周期

$Xleft(e^{j omega} ight)=sum_{n=-infty}^{infty} x(n) e^{-j omega n}$ $x(n)=frac{1}{2 pi} int_{-pi}^{pi} Xleft(e^{j omega} ight) e^{j omega n} d omega$

周期
连续

DFT

离散
周期

$X(k)=sum_{n=0}^{N-1} x(n) W_{N}^{n k}$ $x(n)=frac{1}{N} sum_{k=0}^{N-1} X(k) W_{n}^{-n k}$

周期
离散

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

频谱泄漏

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

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

减少频率泄露的方法:

  • 加窗,选择合适的窗函数
  • 选择更长的窗长

栅栏效应

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

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

语音信号DFT的共轭对称性

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

原文地址:https://www.cnblogs.com/LXP-Never/p/14165699.html