第一次实验:短时时域分析
摘要
语音信号处理第一次实验
仅供参考
一、 实验内容概述:
本次实验实验前语音数据准备以及语音实验内容两个部分。
实验前语音数据准备要求录制并加载语音数据文件WHUT_10k,绘制完整波形图找出并移除前后噪声段,确保录音数据质量。
语音实验内容围绕语音信号处理基础,涵盖了绘制分帧加窗图、计算语音短时能量、语音短时幅度、语音短时过零率以及计算语音短时自相关。
二、 编程思路及步骤
实验前语音数据准备部分,利用Lectrue1_Demo_speech_recorder.m代码加载语音数据文件,通过绘制完整波形图找出前后噪声段,进行处理,使用代码截取无噪声段区间以获得纯净音频,并保存处理后的语音数据及对应图像。
语音实验内容中的分帧加窗图绘制,先读取语音文件,确定帧长20ms和帧移50%,进行分帧操作,确保列存储。提取第 45 帧后,分别生成矩形窗和 Hamming 窗函数,对第 45 帧数据加窗处理。最后绘制原始信号与加窗后信号的对比图。
计算每帧信号的平方和,得到短时能量。逐帧计算信号的绝对值之和,绘制短时幅度随时间的变化曲线。按照公式$ZCR(t)=\frac{1}{N}\sum_{n=0}^{N-1}\frac{1}{2}|\mathrm{sign}(x(t+n))-\mathrm{sign}(x(t+n-1))|$统计每帧内信号符号变化的次数。逐帧计算信号的自相关函数,绘制短时自相关随延迟时间的变化曲线。
三、 指定内容的输出结果
一、 实验前语音数据准备
利用Lectrue1_Demo_speech_recorder.m文件代码录制音频“武汉理工大学”,并截取无噪声段区间,获得纯净音频。
1 | fs = 10000; % set sampling rate |

1 | 上述图像前后各有一段近似为0的波形,该区域即为不含语音信息的噪声。3706-18181为有效音频段,以外为噪声段。波形在-1~+1之间,幅度合适。 |

1 | 上述图像前后不含噪声波形,已经截取为含有“武汉理工大学”语音信号波形,图像更加紧凑。 |
二、语音实验内容:
首先画出Ah 第20帧时域波形图,10k采样,与实验要求给出的图像进行对比:

1. 分帧加窗图:画出oh语音第45帧单帧语音时域图,同时加矩形窗和hamming窗(oh语音,第45帧)
1 | %% 分帧加窗对比图(oh语音第45帧) |

1 | 蓝色曲线是原始信号,粉色曲线是经过 Hamming 窗处理后的信号。对于 Hamming 窗处理后的信号,其波形在帧的起始和结束处被衰减。 |

1 | 蓝色曲线是原始信号,红色曲线是经过矩形窗处理后的信号。矩形窗处理后的信号与原始信号在时域波形上基本一致。因为矩形窗函数在整个窗口范围内值都为 1,相当于没有对信号进行加权处理,只是简单地截取了一段信号作为一帧。 |
2. 语音短时能量(武汉理工大学语音)
1 | % 1. 加载语音文件 |

1 | 短时能量曲线呈现出两个明显的高能量峰值区段,分别位于大约 0.25-0.5 秒和 0.95-1.2 秒附近,表明在这两个时间段内语音能量较强,对应着语音中的较强发音或音节。根据图中标注的语音内容为“武汉理工大学”,可以推测这两个高能量区段分别对应着“武汉”和“理工大学”这两个主要的词汇部分。 |
3. 语音短时幅度 (武汉理工大学语音)
1 | % 短时幅度 (加窗后) |

1 | 曲线中有两个主要的高幅度区段,分别位于大约 0.25-0.5 秒 和 0.95-1.2 秒,这两个区段的幅度显著高于其他部分。0-0.25 秒幅度较低,变化较为平缓,可能对应语音的起始部分或弱音。0.5-0.95 秒幅度较低且变化较小,可能对应语音中的停顿或静音段。1.2-1.4 秒幅度再次上升后逐渐下降,可能对应语音的结束部分。 |
4. 语音短时过零率 (武汉理工大学语音)
1 | % 短时过零率 (加窗后) |

1 | 曲线中有多个高峰和低谷,表明语音信号在某些时间段内过零次数较高,而在其他时间段内过零次数较低。0.2秒到0.4秒之间:过零率出现多个高峰,过零次数在60到80之间波动。这表明在这一时间段内,语音信号的过零次数较高,可能对应清音部分。1.0秒到1.2秒之间:过零率出现一个显著的高峰,过零次数超过120。这是图中过零率最高的区域,表明这一时间段内的语音信号变化非常剧烈,可能是连续的清音或语音的突变部分。 |
5. 语音短时自相关 (oh语音,第45帧)
1 | %% 短时自相关分析(第45帧) |

1 | 在延迟为0的位置,自相关值达到最大值1,这是自相关函数的典型特征,因为信号与自身的完全重合时相关性最强。随着延迟的增加或减少,自相关值呈现出周期性的波动。在延迟约为±50样本的位置,自相关值形成了明显的峰值。右图中在延迟为0的位置,自相关值为1。随着延迟的增加,自相关值呈现出周期性的波动。在延迟约为50样本的位置,自相关值形成了一个明显的峰值,这与左图中标注的基音周期一致。 |
四、 编程中遇到的问题、解决方法及存在的疑问
- 在计算语音信号的短时能量、短时幅度、短时过零率和短时自相关等特征时,因为公式的理解不准确、计算过程中的数值精度问题或边界处理不当等原因,导致计算结果与预期不符。
解决方法:
仔细研读相关公式,确保对每个特征的定义和计算方法有准确的理解。例如,在计算短时过零率时,要注意符号变化的判断条件以及如何处理连续的零值等情况。
在编程实现特征计算时,要注意数值精度的问题。可以采用合适的数值类型(如双精度浮点数)来存储和计算数据,以减少舍入误差等对结果的影响。
对于分帧后的语音信号,在计算每帧的特征值时,要注意边界处理。例如,在计算最后一帧时,可能会出现数据不足的情况,可以通过补零或舍弃不完整的帧等方法来解决。
编写代码后,可以使用一些已知结果的测试数据来验证所编写代码的正确性。例如,可以构造一个简单的正弦信号,计算其短时能量和短时自相关等特征,并与理论结果进行比较,以检查代码是否存在错误。
1 | 声明 |
参考文章:
参考链接

