频率进行采样,采样序列为x(n),然后进行下一步的自相关计算。
3.1.2语音信号的短时自相关函数
定义语音信号自相关函数如下:
其中k为信号延迟点数:
为语音信号;N为语音帧长度。经过低通滤波
之后,取160个样点数,帧长取10ms,对每帧语音求短时自相关,取得自相关最大点数,自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是基音周期。但是由于图中存在野点,编写matlab程序除去野点算出对应基音周期如图3所示,设基音周期值为PT,调动PT,接近女声,设新的为PT1。 3.2 LPC倒谱法提取共振峰
通过线性预测分析得到合成滤波器的系统函数为
其冲击响应为h(n),为预测系数。
?(n),首先根据同态分析方法,?(z)=logH(z),因为H然后求h(n)的倒谱h有H?(z)可以展开成级数形式,(z)是最小相位的,即在单位圆内是解析的,所以H?(z)=即H?(n)是存在的,设h?(n)=0,将?(z)的逆变换h,也就是说H等式两端分别对求导,得到:
6 / 24
=
有(1-)=, 令式左右两边Z的各次幂前
系数分别相等得到:
?(1)=1 h
?(n)= h+ 1
?(n)= h n>p
在本实验中,取预测阶数为10,语音的样点数为160,按照上式可直接从预
?(n),这个倒谱是根据线性预测模型得到,即称为LPC倒谱。测系数求得倒谱h谱的峰值基本上对应于共振峰频率,用GT表示共振峰;修改共振峰,使共振峰
接近女声、童声、老人声范围,新的为GT1. 3.3 线性预测语音信号合成
根据线性预测的基本思想,用过去M个样点值来预测现在或未来的样点值:
?(n)=y
?(n)是预测信号,为预测系数,y(n)为取样信号,预测误差(n): yE{(n)}=E{
为使E{(n)}最小,对求偏导,并令其为零,有:
E{[
}
]y(n-)}=0 =1,?,M
上式表明采用最佳预测系数时,预测误差与过去的样点值正交。由于语音信
7 / 24
号的短时平稳性,要分帧处理,对于每一个样点值记为 这段语音记为Yn。
对于语音段Yn,并记它的自相关函数为:
(j,i)=E{
(n)?, (n+N-1),
},对于语音段Yn,
n=1,?,M
根据Yule—walker方程,可以解出样值,用这种方法定期地改变激励参数u(n)和预测系数,并使用修改过后的基因周期和共振峰参数,就能合成出语音,合成语音样本如下:
S(n)=
+Gu(n)
为预测系数;G为模型增益;u(n)为激励;合成样本s(n);p为预测器阶数; 编写matlab程序,合成效果如下图所示:
第4章 GUI界面设计以及仿真图形和程序
在设计数字变声器的界面时,使用了MATLAB提供的可视化的界面环境Guide。相比较通过编写程序进行GUI的设计,可视化的界面环境更加方便快捷。 4.1 界面设计
在matlab新建GUI,添加各部件,完成如下图所示。
8 / 24
当选中“录音”radiobutton的时候,“打开”radiobutton会失效,与之相关的“打开音频文件”pushbutton按钮也会失效,而与录音相关的两个文本框和“保存”按钮会有效,两个文本框分别写入录音时间与录音频率。
接下来的八个变声按钮则分别实现变声的效果,每个变声按钮后跟的两个坐标图分别画出变声后的时域图和频域图。 4.2 仿真图形
选择一段音频文件,显示其仿真图形(左图为时域图,右图为频域图)。
9 / 24
4.2.1 原声
4.2.2 女声
4.2.3 童声
4.2.4 老人声
10 / 24