语音知识回顾和总结----语音信号的预处理

      回顾上两次的内容:上次主要说了音频文件的读取(主要是matlab和c语言)。感觉有几个概念有点混淆:语音、音频、音乐。语音英文是speech,音频是audio,音乐是music。据我的理解是音频包括语音和音乐。(不知道这么理解对不?)。此外,读取音频其实可以理解D/A转化吗?有待确定。希望基础知识可以更加牢固点。接下来,我们进入正题。

     这次,说语音信号的预处理。其实预处理是很重要的,它会影响我们最后的结果。比如,当遇到一堆数据要处理时,我们首先看看是不是需要归一化?这对于我们后面的聚类和预测的结果影响很大。说完重要性,就具体说怎么去预处理我们的语音信号。预处理包括预加重和加窗分帧。

     预加重,其目的是为了对语音的高频部分进行加重,去除口唇辐射的影响,增加语音的高频分辨率。一般是通过传递函数是一阶FIR高通数字滤波器来实现。设第n时刻的语音采样值为x(n),经过预加重处理后的结果是y(n)=x(n)-ax(n-1),其中a为预加重系数,一般是0.9~1.0之间,通常取0.98。

     预加重的实现:

                            matlab:y=filter([1 -1],[1 -0.98],x);

                             c语言:用个循环还是可以解决的。这里就不赘述了。

     剩下就是加窗分帧。语音信号是一种随时间而变化的信号,主要分为浊音和清音两大类。浊音的基因周期、清浊音信号幅度和声道参数等都随时间而缓慢变化。可以近似认为在一小段时间里语音信号近似不变,即语音信号具有短时平稳性。(这是个很重要的性质哦!)。之所以具有短时平稳性,我们就可以把语音信号分成一些短段来进行处理。一般每秒的帧数是33~100帧。一般帧之间都有重叠,大多数是50%。帧长一般是10ms到30ms。

       下面来介绍下常见的窗函数。主要有矩形窗、汉明窗(hamming)、汉宁窗(hanning)等。下面来说下这三个窗函数:

语音知识回顾和总结----语音信号的预处理_第1张图片

       具体matlab有这些函数。大家可以去查询下。

       当我们确定窗函数后,就要对语音进行分帧处理了。有个函数是enframe就是实现这个功能。当然你需要去下载个工具箱 voicebox。大家可以在这个网址里下载: http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html  。

     需要说明的是,窗函数的选择是有技巧的。一般选择汉明窗或者汉宁窗。具体的可以根据三个窗的时域性质和辐频特征来看。

     至此,音频的预处理介绍就结束了。欢迎大家指正和批评。

你可能感兴趣的:(语音知识回顾和总结----语音信号的预处理)