⑴ 关于matlab的语音信号处理,怎么将语音分段
clear
%语音信号
[x1,fs,nbits]=wavread('Ding-48k.wav');
N=length(x1);
sound(x1,fs,nbits);
n=0.04*fs; %根据fs选择帧长
n1=floor(0.5*n); %根据fs选择帧帧移
num=floor((N-n)/(n-n1)); %分帧数量
%分帧加窗处理
Y=[];
for i=1:num
y1=x1((i-1)*(n-n1)+1:(i-1)*(n-n1)+n).*hamming(n); %对每段分帧进行加窗处理
s1=fft(y1,n);
end
⑵ 语音信号处理中怎么理解分帧,为什么
语音信号处理常常要达到的一个目标,就是弄清楚语音中各个频率成分的分布。做这件事情的数学工具是傅里叶变换。傅里叶变换要求输入信号是平稳的,当然不平稳的信号你想硬做也可以,但得到的结果就没有什么意义了。而语音在宏观上来看是不平稳的——你的嘴巴一动,信号的特征就变了。但是从微观上来看,在比较短的时间内,嘴巴动得是没有那么快的,语音信号就可以看成平稳的,就可以截取出来做傅里叶变换了。这就是为什么语音信号要分帧处理,截取出来的一小段信号就叫一“帧”。如下图:这段语音的前三分之一和后三分之二明显不一样,所以整体来看语音信号不平稳。红框框出来的部分是一帧,在这一帧内部的信号可以看成平稳的。
那么一帧有多长呢?帧长要满足两个条件:从宏观上看,它必须足够短来保证帧内信号是平稳的。前面说过,口型的变化是导致信号不平稳的原因,所以在一帧的期间内口型不能有明显变化,即一帧的长度应当小于一个音素的长度。正常语速下,音素的持续时间大约是 50~200 毫秒,所以帧长一般取为小于 50 毫秒。从微观上来看,它又必须包括足够多的振动周期,因为傅里叶变换是要分析频率的,只有重复足够多次才能分析频率。语音的基频,男声在 100 赫兹左右,女声在 200 赫兹左右,换算成周期就是 10 毫秒和 5 毫秒。既然一帧要包含多个周期,所以一般取至少 20 毫秒。这样,我们就知道了帧长一般取为 20 ~ 50 毫秒,20、25、30、40、50 都是比较常用的数值,甚至还有人用 32(在程序猿眼里,这是一个比较“整”的数字)。
加窗的目的是让一帧信号的幅度在两端渐变到 0。渐变对傅里叶变换有好处,可以提高变换结果(即频谱)的分辨率,具体的数学就不讲了。加窗的代价是一帧信号两端的部分被削弱了,没有像中央的部分那样得到重视。弥补的办法是,帧不要背靠背地截取,而是相互重叠一部分。相邻两帧的起始位置的时间差叫做帧移,常见的取法是取为帧长的一半,或者固定取为 10 毫秒。
频谱上就能看出这帧语音在 480 和 580 赫兹附近的能量比较强。语音的频谱,常常呈现出“精细结构”和“包络”两种模式。“精细结构”就是蓝线上的一个个小峰,它们在横轴上的间距就是基频,它体现了语音的音高——峰越稀疏,基频越高,音高也越高。“包络”则是连接这些小峰峰顶的平滑曲线(红线),它代表了口型,即发的是哪个音。包络上的峰叫共振峰,图中能看出四个,分别在 500、1700、2450、3800 赫兹附近。有经验的人,根据共振峰的位置,就能看出发的是什么音。对每一帧信号都做这样的傅里叶变换,就可以知道音高和口型随时间的变化情况,也就能识别出一句话说的是什么了。
⑶ 语音信号分帧是很么意思
语音信号因为是准稳态信号,在处理时常把信号分帧,每帧长度约20ms-30ms,在这一区间内把语音信号看作为稳态信号。只有稳态的信息才能进行信号处理,所以要先分帧。
“语音信号分帧进行小波变换”,就是把语音信号分帧后,对每一帧进行小波变换和处理。在语音工具箱中有分帧的函数,例enframe,如果要自行分的话,可这样进行:设语音信号x,长为N,分成每帧长L,每两帧之间重叠M,则有共可分成K帧,S是分帧后的数据。
一般性的时频分析:短时傅里叶分析,小波分析
针对人的听觉特性的:Mel频率倒谱系数分析(MFCC),属于倒谱域的分析,
其它的属于时域分析。
⑸ 关于语音识别特征提取该如何入门
1. Take the Fourier transform of (a windowed excerpt of) a signal.这一步其实说了两件事:一是把语音信号分帧,二是对每帧做傅里叶变换。要分帧是因为语音信号是快速变化的,而傅里叶变换适用于分析平稳的信号。在语音识别中,一般把帧长取为20~50ms,这样一帧内既有足够多的周期,又不会变化太剧烈。每帧信号通常要与一个平滑的窗函数相乘,让帧两端平滑地衰减到零,这样可以降低傅里叶变换后旁瓣的强度,取得更高质量的频谱。帧和帧之间的时间差(称为“帧移”)常常取为10ms,这样帧与帧之间会有重叠,否则,由于帧与帧连接处的信号会因为加窗而被弱化,这部分的信息就丢失了。傅里叶变换是逐帧进行的,为的是取得每一帧的频谱。一般只保留幅度谱,丢弃相位谱。
2. Map the powers of the spectrum obtained above onto the mel scale, using triangular overlapping windows.这一步做的事情,是把频谱与下图中每个三角形相乘并积分,求出频谱在每一个三角形下的能量:这一步有如下几个效果:
1) 傅里叶变换得到的序列很长(一般为几百到几千个点),把它变换成每个三角形下的能量,可以减少数据量(一般取40个三角形);
2) 频谱有包络和精细结构,分别对应音色与音高。对于语音识别来讲,音色是主要的有用信息,音高一般没有用。在每个三角形内积分,就可以消除精细结构,只保留音色的信息。当然,对于有声调的语言来说,音高也是有用的,所以在MFCC特征之外,还会使用其它特征刻画音高。
3) 三角形是低频密、高频疏的,这可以模仿人耳在低频处分辨率高的特性。
3. Take the logs of the powers at each of the mel frequencies.这一步就是取上一步结果的对数。简单点理解,它是对纵轴的放缩,可以放大低能量处的能量差异;更深层次地,这是在模仿倒谱(cepstrum)的计算步骤。倒谱又是另一个话题,此处不展开讲了。
4. Take the discrete cosine transform of the list of mel log powers, as if it were a signal.求倒谱时这一步仍然用的是傅里叶变换。计算MFCC时使用的离散余弦变换(discrete cosine transform,DCT)是傅里叶变换的一个变种,好处是结果是实数,没有虚部。DCT还有一个特点是,对于一般的语音信号,这一步的结果的前几个系数特别大,后面的系数比较小,可以忽略。上面说了一般取40个三角形,所以DCT的结果也是40个点;实际中,一般仅保留前12~20个,这就进一步压缩了数据。上面整个过程的结果,就把一帧语音信号用一个12~20维向量简洁地表示了出来;一整段语音信号,就被表示为这种向量的一个序列。语音识别中下面要做的事情,就是对这些向量及它们的序列进行建模了。
⑹ 语音信号加窗分帧是起什么作用
加窗和分帧都是语音信号提取特征的预处理阶段,先分帧,后加窗,再做快速傅里叶变换。
分帧:
简而言之,语音信号整体上不稳定,但局部上可以看作是稳定的,在以后的语音处理中,需要输入一个稳定的信号,所以需要对整个语音信号进行帧处理,即将其分割成多个片段。
在10-30ms范围内,可以认为信号是稳定的。一般以不少于20毫秒为帧,约1/2的时间作为帧移位帧,帧移位是指相邻两帧之间的重叠区域,以避免相邻两帧的变化。
加窗:
按上述方法加窗后,每一帧的开始和结束都会出现间断,因此分割的帧越多,与原始信号的误差就越大,加窗就是为了解决这个问题,使成帧后的信号变得连续,并且每一帧都会表现出周期函数的特性,在语音信号处理中,通常会增加汉明窗。
(6)语音信号分帧的常用方法是什么扩展阅读
语音信号模型
一、激励模型
1、浊音激励
气流在通过绷紧声带时,冲激声带产生振动,使声门处形成周期性的脉冲串,并用它去激励声道。由于脉冲串类似于斜三角形的脉冲,故以基音周期为周期的单位取样序列串作为激励。
2、清音激励
声带松弛而不振动,气流通过声门直接进入声道。由于发清音时,声道被阻碍形成湍流,可将激励模拟成随机白噪声。
二、声道模型
1、声管模型
将声道视为由多个不同截面积的管子串联而成的系统。
2、共振峰模型
声道视为一个谐振腔,共振峰就是这个腔体的谐振频率。
三、辐射模型
在发音腔道内形成的气流经由嘴唇端辐射出来到达听者耳朵的这段过程,声音信号会衰减,而且有高通滤波的特性常用一个一阶的数字高通滤波器来模拟。
⑺ 第三章 语音信号特征分析
语音合成音质的好坏,语音识别率的高低,都取决于对语音信号分析的准确度和精度。例如,利用线性预测分析来进行语音合成,其先决条件是要用线性预测方法分析语音库,如果线性预测分析获得的语音参数较好,则用此参数和成的语音音质就较好。例如,利用带通滤波器组法来进行语音识别,其先决条件是要弄清楚语音共振峰的幅值,个数,频率范围及其分布情况。
语音信号特征的分析可以分为时域,频域和倒谱域。
时域分析简单直观,清晰易懂,物理意义明确。
更多有效的分析是围绕频域进行的,因为语音中最重要的感知特性反应在其功率谱中,其相位变化只起着很小的作用。
常用频域分析有带通滤波器组,傅里叶变换法和线性预测分析法。频谱具有很明显的声学特性,利用频域分析获得的特征具有实际的物理意义,如共振峰参数,基音参数周期等。
倒谱域是对对数功率谱进行傅里叶反变换得到的,可以将声道特性和激励特性有效的分开,更好的揭示语音信号的本质特征。
可以将语音信号分析分为模型分析法和非模型分析法两种。模型分析法是指依据语音信号产生的数学模型,来分析和提取表征这些模型的特征参数;共振峰模型分析法和线性预测都术语这种方法。凡不进行模型化分析的其他方法都属于非模型分析法,包括上面提到的时域分析法,频域分析法及同态分析法。
贯穿语音信号分析全过程的是“短时分析技术”。短时间内特性基本保持不变,相对稳定,准稳态过程。10~30ms内保持相对平稳。
实际信号常有一些低能量的信号分量超过采样频率的一半,如浊音的频谱超过4khz的分量至少比峰值低40db,而清音,超过8khz,频率分量也没有显着下降,因此语音信号所占的频率范围可以达到10khz以上,但对语音清晰度的有明显影响部分的最高频率为5.7kHZ左右。
电话系统为8kHZ,而时间中,采样频率为8-10kHZ,而语音合成或者语音识别,获得更高的质量,采样频率一般为15——20kHZ。
在一般的识别系统中,采样率最高为16kHZ,当继续增加采样率是,识别率几乎没有增加。
量化: 有三种方式,零记忆量化,分组量化和序列量化。
假设语音信号在10~30ms内是平稳的,后面所有的分析都是在这个假设下进行的。
为了得到短时的语音信号,要对语音信号进行加窗的操作,窗函数平滑的在语音信号上滑动,将语音信号分成帧。分帧可以连续,也可以采用交叠分段,交叠部分称为帧移,一般为窗长的一般。
加窗时,不同窗口将影响到语音信号分析的结果
窗的长度对能否反映语音信号的幅度变化起决定性作用。如果N特别大,即等于几个基因周期量级,则窗函数等效于很窄的低通滤波器,此时信号短时信息将缓慢的变化,因而不能充分反映波形变化的细节。如果N特别小,即等于或小于一个基因周期的量级,则信号的能量将按照信号波形的细微状况而很快的启发,但如果N太小,滤波器的通带变宽,则不能获得平滑的短时信息,因此窗口的长度要选择合适。窗的衰减基本与窗的持续时间无关,因此当改变宽度N时,会使带宽发生变化。
窗口长度是相对于语音信号的汲引周期而言,通常认为一个语音帧内,应含有1~7个基音周期,然而不同人的基音周期变化范围很大,基音周期的持续时间会从高音的约20个采样点变化到低音调250个采样点,这意味着可能需要多个不同的N值,所以N的选择比较困难,通常在采样频率10kHZ的情况,N选择100~200量级(10~20ms)持续时间是比较合适的。
有声(V)无声(S)清音(U)判决。
能够实现这些判决的依据再于,不同性质的语音各种短时参数具有不同的概率密度函数,以及相邻的若干帧具有一致的语音特性,不会再S , U, V之间快速变化。
每个语音的输入起点和重点,利用短时平均幅度参数M和短时过零率可以做到这一点。
浊音情况下短时平均幅度参数的概率密度函数P(M|V)确定一个阈值参数M_H.根据M_H可以确定前后两个点A_1和A_2 后肯定是语音段,但精确起点,还要仔细查找。
为此,再设定一个较低的阈值参数M_L, 然后确定B_1 和 B_2, 从这两个点之后用短时过零率搜索。 清音的过零率高于无声段,但是能量低。
但是在研究结果中表明,利用短时平均过零率区分无声和清音在有些情况下不是很可靠,由于清音的强度会比无声段高一下,将门限提高一些对清音的影响不大,但在没有背景噪声的情况下,无声段将不会穿越这一提高的电平,因为可以正确区分清音和无声段。
因此采用这种过零率,具有抗干扰能力
滤波器可以是宽带带通滤波器,具有平摊的特性,粗略求语音的频谱,频率分辨率低,可以是窄带滤波器,频率分辨率较高。
现在一般都在用数字滤波器,其中如何将模拟滤波器数字化,涉及到零点极点的内容,需要参考DSP的内容。极点波峰,零点波谷。
为窗口函数。
两种方式来理解物理意义
在实际计算时,一般用离散傅里叶变换代替连续傅里叶变换,则需要对信号进行周期延拓。(非周期->连续谱,周期->离散谱),这时候得到的是功率谱 。 如果窗长度为 , 那么 的长度为 , 如果对 以 进行周期拓展,则自相关就会出现混叠现象,即这个周期的循环相关函数在一个周期中的值就与线性相关 的值不同,这样得到的功率谱就是一组前采样,若想得到全部的 个值,可以补充L个零,扩展成2L的信号,并做离散傅里叶变换,这时的循环相关与现行相关是等价的。( 后面这句话对我来说暂时是天书 )
在对窗函数的分析中,我们知道对于任何一个窗函数都存在旁瓣效应,这时候有谐波效应。
语谱图的时间分辨率和频率分辨率是由所采用的窗函数决定的。假设时间固定,对信号乘以窗函数相当于在频域用窗函数的频率响应与信号频谱的卷积。如果窗函数的频率响应 的通带宽度为 ,那么语谱图中的频率分辨率的宽度即为 。即卷积的作用将使任何两个相隔间隔频率小于 的谱峰合并为一个单峰。对于窗函数而言,通带宽度与窗长成反比,如果希望频率分辨率高,则窗长应该尽量长一些。
对于时间分辨率,假设频率固定,相当于对时间序列 做低通滤波,输出信号的带宽就是 的带宽b,根据采样定理,只需要以 的采样率就可以反映出信号的所有频率成分,这时候所具有的时间分辨率的宽度为 . 因此如果希望时间分辨率高,则窗长应该短一些。因此时间分辨率和频率分辨率是相互矛盾的,这也是短时傅里叶变换本身固有的缺点。
点评:
1.26新增理解:
这类线性主要有短时傅里叶变换与Gabor变换和小波变换,其中STFT和Gabor变换是一种加窗的傅里叶变换,使用固定大小的时频网格,时频网格在时频变换只限于时间平移和频率平移,窗函数固定的,只适用于分析带宽固定的非平稳信号,实际应用中,希望对低频分析,频率分辨率高,高频时间分辨率高,要求窗函数宽度能随之频率变化而变化。小波分析的视频分析网格变化除了时间平移外,还有时间和频率轴比例尺度的改变。适用于分析具有固定比例带宽的非平稳信号。
这类时频由能量谱或功率谱演化而来,其特点是变换为二次的。双线性关系可以表示为
其中 为能量谱,而 表示取共轭操作。
点评: 好像没见过,先跳过。。。。。
在信号分析与信号处理中,信号的“时间中心”及“时间宽度”以及频率中心与频率宽度是非常重要的概念,分别说明信号在时域和频域中心位置在两个域的扩展情况。
信号再这两个物理量的测量上有一个重要的约束原则,就是着名的“不确定性原理”。它的意义是,信号波形在频率轴上的扩张和时间轴上的扩张不可能同时小于某一界限,即若函数 和 构成一堆傅里叶变换,则不可能同时是短宽度的,即
等号成立的充分必要条件是 为高斯函数,即 . 证明,用Cauchy-Schwarts不等式可得。
窗函数为高斯函数的短时傅里叶变换称为Gabor变换。
是大于0的固定常数。由于 , 因此 . 这表明,信号 的gabor 变换 是对任何 在时间 附近对 傅里叶变换的局部化(在说什么??),达到了对 的精确分解。
Gabor变换是具有最小时频窗的短时傅里叶变换。但进一步研究发现,这两种变换都没有离散的正交基, 所以没有像离散傅里叶变换FFT那种快速算法。而且窗函数固定不变,不能随着所分析信号的成分是高频还是低频做相应的变化。所以这时候有小波变换,能够自动调节窗口长度。
小波理论采用多分辨率的分析的思想,非均匀地划分时频空间,为非平稳信号的分析提供了新途径。
定义: 小波是函数空间 中满足下述条件的一个函数或者信号
其中 表示全体非零实数, 为 的频域表示形式。 称为小波母函数。对于任意实数对,称如下形式的函数为右小波母函数生成的依赖于参数(a,b)的连续小波函数,称为小波,其中a必须为非零实数。
的作用是把基本小波 做伸缩, 的作用是确定对 分析的时间位置,也即是实践中心。 在 的附近存在明显的波动,而且波动范围的大小完全依赖于尺度因子 的变化。 时,一致, 时,范围比原来小波函数 范围大些,小波的波形变得矮宽,变化越来越缓慢,当 时, 在 附近波动范围药效,小波波形尖锐而消瘦。
给定平方可积的信号 ,即 , 则 的小波变换定义为
与傅里叶变换不同,小波变换是一个二元函数。另外,因为母函数 只在原点附近才会有明显偏离水平轴的移动,远离原点,迅速衰减为0.
假设小波函数 及傅里叶变换 都满足窗口函数的要求,他们的窗口中心和半径分别记为 和 和 和 , 可以证明对于任意任意参数对,连续小波变换和其傅里叶变换都满足窗口函数的要求,他们的窗口中心和宽度分别为
则时频窗是平面一个可变的矩形,面积为 . 这个面积只与小波的母函数 有关,与 无关,但形状随着a变换。
如果按照线性模型理论,语音信号是由激励信号和声道响应卷积产生。解卷就是将各卷积分量分开。解卷算法分为两大类,一类称为“参数解卷”,即线性预测分析,另一类算法称为“非参数解卷”,即同态解卷积,对语音信号进行同态分析后,将得到语音信号的倒谱参数,此时同态分析也称为 倒谱分析或者同态处理。
同态处理是一种较好的解卷积方法,它可以较好的将语音信号中的激励信号和声道响应分离,并且只需要用十几个倒谱系数就能相当好的描述语音信号的声道特性,因此占很重要的位置。
通常的加性信号可以用线性系统处理,满足线性叠加原理。然后很多信号是由乘性信号或者卷积信号组合的信号。这样的信号不能用线性系统处理,得用非线性系统处理。但是非线性系统分析起来困难,同态语音辛哈就是将非线性问题转换为线性问题处理。语音信号可以看做是声门激励信号与声道响应的卷积结果,所以下面仅讨论卷积同态信号的处理问题。
同态语音信号处理的一个通用的系统如图3-23所示,其符号 表示由卷积组合规则组合起来的空间,即该系统的输入和输出都是卷积性信号。同态系统的一个最主要理论结果是同态系统理论分解,分解的目的是用两个特征系统和一个线性系统来代替非线性的同态系统。分解的情形如下面所示。
分别对应声门激励信号(excitation 和 vocal tract),特征信号 是将卷积信号转化为加性信号,这时候进行Z变换,将卷积信号转化为乘积信号(疑问1),这时候得到的就是频谱,然后通过对数运算,变成加性信号,但是这个时候是对数频谱,使用不便。最后再变换回时域信号。
是在倒谱域对信号处理,常见处理方式是将语音声源信号与声道信号分离。 在倒谱域,总可以找到一个 ,当 时,声道滤波器的倒谱为0,当 时,激励的倒谱接近于0.
如果想再恢复语音信号,用d所示的逆特征系统运算即可。
MFCC (Mel Frequency cepstrum coefficient),MFCC是将人耳的听觉感知特性和语音产生机制相结合,因此目前大多数语音识别系统广泛使用这种特征。
耳蜗的滤波作用是在对数频率尺度进行的,在1000Hz以下为线性,在1000Hz以上为对数,这就使得人耳对低频比高频更敏感
对频率轴不均匀划分是MFCC特征区别于前面普通倒谱特征的最重要的特点,变换到Mel域后,Mel带通滤波器组的中心频率是按照Mel刻度均匀排列的,实际应用中,MFCC计算过程如下
MFCC有效利用的听觉特性,因此改变了识别系统的性能,如果倒谱位数增加,对识别性能影响不大。但采用动态特征,误识率有20%的下降。
点评2019.01.30:第三四次囫囵吞枣的看完MFCC,即使知道了倒谱,但最后按个离散余弦变换还是比较不能联系上,反正感觉乱乱的吧,包括差分之类的,想被打回哪门语音信号处理课上回炉了,Mark一下,始终有一天会懂其中的深意的。
⑻ 语音的帧长、帧移与帧数
接着前面的文章,关于语音分帧问题,在前期将语音静音删除后,需要将语音裁剪成长度相同的长度或者分帧,保证数据集的统一。长度不同的音频文件不容易建模分析,需要先分帧,切成长度相同的,另外切成一小段固定长度时,段和段之间适当重叠部分。
经过一上午的学习实践,参考librosa文档和知乎等资料,终于搞定懂了。
语音信号是一个非稳态的、时变的信号。但在短时间范围内可以认为语音信号是稳态的、时不变的,这个短时间一般取 10-30ms。进行语音信号处理时,为减少语音信号整体的非稳态、时变的影响,从而对语音信号进行分段处理,其中每一段称为一帧,帧长一般取 25ms。为了使帧与帧之间平滑过渡,保持其连续性,分帧一般采用交叠分段的方法,保证相邻两帧相互重叠一部分,末尾不足部分用零填充。相邻两帧的起始位置的时间差称为帧移,我们一般在使用中帧移取值为 10ms。
那么对于一个 22050Hz 采样的音频来说,帧长有 22050 * 0.025 = 551.25 个点,帧移有 22050 * 0.01 = 220.5 个点。根据上一篇文章- jupyter notebook完成wav文件探索 ,计算点数方法是采样率 * 时长,那么wav文件就有5.89569 * 22050 = 130000,和librosa.load返回的数据是一致的。num_samples、frame_len、frame_shift 分别代表音频的数据点数、帧长和帧移,那么i 帧的数据需要的点数:(i-1) * frame_shift + frame_len,n 个点的音频的帧数:ceil(n- / frame_shift) 。
那么在librosa.load语音文件后,需要自己来分帧吗?NO,librosa已经帮你实现了!librosa.feature.mfcc函数提取MFCCs特征时,MFCC一般默认帧长为2048,帧移为512,即默认1/4关系。查看参考librosa文档:hop_length = win_length / 4,win_length = n_fft。n_fft=2048, hop_length=512。
那么笔者再次在jupyter notebook中添加计算,发现和mfcc函数提取的帧数是一致的。那么在提取特征时就不需要自动来保证帧移的分帧。jupyter 真是太好用了,可以查看、修改历史过程,不用从头开始导入数据、分析数据了。
⑼ 语音识别技术中提取的声音特征的参数具体指什么
语音信号是受外界干扰的随机信号,在进行语音信号处理(语音编码、语音合成、语音识别)时,必须经过特征提取车里才能有效的降低信号的冗余度。现在说一下语音特征参数有能量、基因频谱、共振峰值、短时过零率等,相比之下比较常用的是线性预测倒谱:lpcc与mel倒谱系数,这是因为MFCC和LPCC在实际应用中最为成熟,特别是在真实信道噪声和频谱是真的情况下,也就是在噪声干扰比较强状态下,特征参数MFCC相对于LPCC语音特征系数,能更好的反映人耳的听觉感知情况,所以应用的比较多。