声音信号是连续的,而计算机处理的是离散的数据。为了让计算机能够处理和分析声音信号,我们需要将连续的声音信号分成一段一段的小片段,每一片段称为一帧。接下来,我们详细讲解分帧和加窗这两个步骤。
分帧:将声音信号分成小片段
分帧是将连续的语音信号按固定的时间长度分成多个小段。这样可以使每一小段信号保持稳定,便于后续处理和分析。
1. 为什么要分帧?
语音信号是动态变化的,直接处理整个连续的语音信号会非常复杂。将其分成小片段后,每一片段可以被视为短时间内相对稳定的信号,这样处理起来更简单、更高效。
2. 如何分帧?
通常,我们会选择一个合适的时间长度,将语音信号分成多个帧。常见的分帧长度为20毫秒到40毫秒。例如,我们可以将声音信号每25毫秒分成一帧,这样可以方便后续处理。
举个例子:想象你在看一部电影。电影是由一帧一帧的画面组成的,每秒钟可能有24帧或更多。每一帧画面都相对稳定,连续播放这些帧就形成了动态的视觉效果。同样的道理,我们将语音信号分成多个帧,每一帧代表短时间内的声音。
加窗:平滑每一帧的边缘
加窗是对每一帧信号进行处理,使得帧的边缘信号逐渐减小到零,从而减少帧与帧之间的跳变。这样可以使每一帧在连接时更加平滑,避免突变带来的噪音。
1. 为什么要加窗?
直接分帧后,每一帧的边缘可能会出现不连续的突变,导致频谱失真。通过加窗处理,可以平滑帧的边缘,使得帧与帧之间过渡更加自然。
2. 如何加窗?
加窗通常通过乘以一个窗口函数来实现。窗口函数是一个在帧的开头和结尾逐渐减小的函数,使得帧的边缘信号逐渐减小到零。常用的窗口函数有汉明窗和汉宁窗。
汉明窗:
汉明窗是一种常用的窗口函数,它的形状类似于一个平滑的波形,在帧的两端逐渐减小到接近零。具体来说,汉明窗的计算公式如下:
w [ n ] = 0.54 − 0.46 cos ( 2 π n N − 1 ) w[n] = 0.54 - 0.46 \cos \left( \frac{2\pi n}{N-1} \right) w[n]=0.54−0.46