语音倒谱分析汇编
- 格式:pdf
- 大小:563.34 KB
- 文档页数:35
基于MATLAB的语音倒谱分析语音倒谱分析是一种通过对语音信号进行倒谱变换来提取语音特征的方法。
MATLAB作为一种常用的科学计算软件,具有丰富的信号处理工具箱,可以用于实现语音倒谱分析。
语音倒谱分析的基本原理是将语音信号分解为一系列频率低通滤波器的输出,然后对滤波器输出进行离散傅立叶变换(DFT),得到倒谱系数。
倒谱系数反映了语音信号的频谱特征,可用于语音识别、语音合成、语音增强等应用。
在MATLAB中进行语音倒谱分析的步骤如下:1. 读取语音信号:使用`audioread`函数读取语音文件,得到语音信号的波形数据和采样率。
例如:```matlab[x, fs] = audioread('speech.wav');```2. 预处理语音信号:通常需要对语音信号进行预处理,例如去除噪声、端点检测等。
这可以使用MATLAB的信号处理工具箱实现。
例如,使用`medfilt1`函数对语音信号进行中值滤波去噪:```matlabx = medfilt1(x, 3); % 使用中值滤波去噪```3. 分帧:将语音信号分为若干帧,每帧包含N个采样点。
通常选择帧长为20-40毫秒左右,帧移为10-20毫秒。
可以使用`buffer`函数实现:```matlabframeLength = round(fs * 0.025); % 帧长为25msframeShift = round(fs * 0.01); % 帧移为10msframes = buffer(x, frameLength, frameLength-frameShift,'nodelay');```4. 加窗:对每一帧的数据应用窗函数,以减小频谱泄漏效应。
常用的窗函数有汉明窗(hamming window)和黑曼窗(hanning window)。
可以使用`hamming`或`hanning`函数实现:```matlabwindow = hamming(frameLength); % 汉明窗```5. 计算功率谱:对窗函数加权的每一帧信号进行离散傅立叶变换(DFT),得到每帧的功率谱。
实验四 语音信号的LPC 倒谱参数的提取1 实验目的通过Matlab 编程掌握语音信号的LPC 倒谱参数的求解方法。
2 实验原理线性预测分析的基本思想是:用过去P 个样点的值来预测现在或未来的样点值:预测误差为:理论上通常采用预测系数{a k }的取值使均方误差E[e 2(n)](是{a k }的函数)最小的准则。
]))()([()]([122∑=--=pk k k n x a n x E n e E 0)]([2=∂∂k a n e E p k ≤≤1)]()([0)]()([2)]([2=-=--=∂∂j n x n e E k n x n e E a n e E k 预测误差与过去的样点不相关[]0)()()()()]()([)(])()([0)()(111=--=⎭⎬⎫⎩⎨⎧⎥⎦⎤⎢⎣⎡-⋅---=⎭⎬⎫⎩⎨⎧-⋅--⇒=-∑∑∑===p k k p k k pk kk j R a j R j n x k n x a j n x n x E j n x k n x a n x E j n x n e E j=1…P求解以上P 个方程组则可得到预测系数a k 。
方程组的求解方法有自相关的算法,有协方差的方法,本实验采用Durbin 算法来求解,完整的递推过程如下:(1) )0(0n n R E =(2) 1111)()(--=-∑--=i n i k i k n n i E a k i Ri R k∑=--='-=pk k k n x a n x n x n x n e 1)()()()()((3) i i i k a =(4) ii k i i k i k k a a a 11----= 11-=i k (5) 12)1(--=i n i i n E k E if i<p go to (2)(6) pp p p p p p p a a a a a a a a ====--,,......,112211 3 实验过程[x,fs,bits]=wavread('c:\WINDOWS\Media\chimes.wav'); x=x(:,1);%[x,fs,bits]=wavread('E:\3_1.wav');x=x';len=length(x);N=256;M=128;Fn=fix((len-N)/M+1);y=[];for i=1:Fndown=1+(i-1)*M;up=down+N-1;temp=x(down:up);temp=temp.*hamming(N)';y=[y;temp];endP=12;a=[];k=[];lpc=[];for q=1:Fntemp2=y(q,:);R=corr(temp2,P);for i=1:Pif i==1E(1)=R(1);k(1)=R(2)/R(1);a(1,1)=k(1);E(2)=(1-k(i).^2)*E(1);elsetemp4=0;for s=1:i-1temp4=temp4+a(s,i-1)*R(i-s+1);%×¢ÒâR¼Ó1endk(i)=(R(i+1)-temp4)/E(i);%×¢ÒâÓ¦¸ÃÊÇR(i+1)a(i,i)=k(i);for s=1:i-1a(s,i)=a(s,i-1)-k(i)*a(i-s,i-1);endE(i+1)=(1-k(i).^2)*E(i);endendfor n=1:P;b(n)=a(n,P);endlpc=[lpc;b];end。
《视频语音处理技术》倒谱计算与分析学院名称:计算机与信息工程学院专业名称:计算机科学与技术年级班级:姓名:学号:计算机与信息技术学院综合性、设计性实验报告一、 实验目的:对语音信号进行同态分析可得到语音信号的倒谱参数。
语音的倒谱是将语音的短时谱取对数后再进行IDFT 得到的,所以浊音信号的激励反映在倒谱上是同样周期的冲激,借此,可从倒谱波形中估计出基音周期。
对倒谱进行低时窗选,通过语音倒谱分析的最后一级,进行DFT 后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。
对于倒谱计算与分析的设计实验可作如下训练: 1、复倒谱的几种计算方法: 2、最小相位信号法和递归法; 3、基音检测; 4、共振峰检测。
二、实验仪器或设备:windowsXP 下的Matlab 编程环境 三、总体设计(设计原理、设计方案及流程等)1.复倒谱的几种计算方法:在复倒谱分析中,z 变换后得到的是复数,所以取对数时要进行复对数运算。
这时存在相位的多值性问题,称为“相位卷绕”。
设信号为则其傅里叶变换为对上式取复对数为 则其幅度和相位分别为:)()()(21n x n x n x *=)()()(21ωωωj j j e X e X e X ⋅=)(ln )(ln )(ln 21ωωωj j j e X e X e X +=)(ln )(ln )(ln 21ωωωj j j e X e X e X +=)()()(21ωϕωϕωϕ+=)()()(21ωϕωϕωϕ+=上式中,虽然 , 的范围均在 内,但 的值可能超过范围。
计算机处理时总相位值只能用其主值 表示,然后把这个相位主值“展开”,得到连续相位。
所以存在下面的情况:(K 为整数) 此时即产生了相位卷绕。
下面介绍几种避免相位卷绕求复倒谱的方法。
最小相位信号法这是解决相位卷绕的一种较好的方法。
实验三 语音信号进行倒谱分析一、 实验目的、要求1. 理解倒谱分析的作用2. 掌握倒谱分析求基音周期的方法3. 了解LPC 倒谱分析方法二、实验原理1.倒谱分析原理同态信号处理也称为同态滤波,实现将卷积关系变换为求和关系的分离处理,即解卷。
如 进行如下3步处理对于语音信号进行解卷,可将语音信号的声门激励信息及声道响应信息分离开来,从而求得声道共振特征和基音周期,用于语音编码、合成和识别。
同态信号处理的基本原理(1)第一个子系统D*[](特征系统)完成将卷积信号转化为加性信号的运算。
)(ˆ1n x 和 )(ˆ2n x信号也均是时域序列,但它们所处的离散时域显然不同于x(n)所处的离散时域,故把它称之为复倒频谱域。
)(ˆn x是x(n)的复倒频谱,简称为复倒谱,有时也称为对数复倒谱。
复倒谱具体计算公式其中倒谱计算公式为:2 线性预测原理线性预测分析的基本思想由于语音样点之间存在相关性,所以可以用过去的样点值来预测现在或未来的样点值。
通过使实际语音抽样和线性预测抽样之间的误差在某个准则下达到最小值来决定唯一的一组预测系数,而这组系数就能反映语音信号的特性,可以作为语音信号特征参数来用于语音编码、语音合成和语音识别等应用中去。
线性预测分析的基本原理每个采样值由前面的p 个采样值线性组合所构成。
记为x '(n),有:)(ˆ)(ˆ)(ˆ)](ˆ)(ˆ[)](ˆ[)3()(ˆ)(ˆ)(ˆ)(ln )(ln )(ln )2()()()()]([)1(212111212121n x n x n x z X z X Z z X Z z X z X z Xz X z X z X z X z X z X n x Z =+=+==+=+=⋅==--12()()()x n x n x n =*1ˆ()[ln (())]x n Z Z x n -=[()]()ˆ()ln ()ˆˆ()[()]jw jw jw jw DFT x n X e Xe X e xn IDFT X e ===要提高预测精度,就是要预测系数{k a }的取值使e(n)最小。