admin管理员组文章数量:1531450
2024年6月28日发(作者:)
MATLAB变声器的设计
前言
随着生活水平的提高,科技的不断进步,很多人为了娱乐,从而希望改变自己的声音;
还有如今的许多的访问节目为了保护被访问者,都对声音进行了相应的处理。本设计通过编
写MATLAB程序,修改相关声音参数,使其频率发生相应的变化,在输出时达到变声。
1 变声原理
在进行性别变声时,主要考虑基音周期、基频和共振峰频率的变化.其中男生、女生和和童声
的基频、共振峰的关系如图1所示;基音周期改变时,基频、共振峰同时变化,若伸展既有
男变女、女变童,反之亦可。本实验是基于男生录制的声音进行相关参数提取,修改接近于
女声,实现男声到女声的变换。
人群 基频分布(Hz)
[50 , 180]
共振峰频率分布
偏低
男声
女声
童声
[160 , 380] 中
[400 , 1000] 偏高
图1
2 提取参数
基于短时自相关法的基音周期估值进行自相关的计算,通过MATLAB编程采用自相关算法可
以实现基音周期的估值,即对语音信号进行低通滤波,然后进行自相关计算。在低通滤波时,
采用巴特沃斯滤波器。
2。1.1 构建巴特沃斯低通滤波器
根据人的说话特征设定相应指标参数,对本段语音设计算出巴特沃斯模拟滤波器的阶数N
为5,3dB截止频率
函数为
,算出0。175,归一化低通原型系统
其中
将
将
,,
.
带人中,得到低通滤波器,
根据设定的滤波器编写MATLAB程序,当信号经过低通滤波器后,对原始信号滤
波产生结果如图2所示,低通滤波后,保留基音频率,然后再用2kHz采样频率
进行采样,采样序列为x(n),后进行下一步的自相关计算。
图2
2.1.2语音信号的短时自相关函数
定义语音信号的自相关函数如下:
其中k为信号延迟点数;为语音信号;N为语音帧长度。经过低通滤波之后,
取160个样点数,帧长取10ms,对每帧语音求短时自相关,取得自相关最大点
数,自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是
基音周期,从而估计出基音周期,但是由于图中存在野点,编写MATLAB程序除去
野点算出对应基音周期如图3所示,设基音周期值为PT,调动PT,接近女
声,设新的为PT1;
图3
2。2 LPC倒谱法提取共振峰
通过线性预测分析得到合成滤波器的系统函数为:
H(z)=
其中h(n)为冲击响应,为预测系数。
下面求h(n)的倒谱(n),首先根据同态分析方法有
是最小相位的,即在单位圆内是解析的,所以说
,因为H(z)
可以展开成级数形式,即
,就是说
时对求导,得到:
的逆变换(n)是存在的,设(0)=0,将式两端同
有()(
系数分别相等得到:
)=,令式左右两边Z的各次幂前
在本实验中,取预测阶数为10,语音的样点数为160,按照上式可直接从预测系
数{}求得倒谱,这个倒谱是根据线性预测模型得到,即称为LPC倒谱。编
写MATLAB程序,实现如图4所示,谱的峰值基本上对应于共振峰频率,用GT
表示共振峰;修改共振峰,使共振峰接近女声范围,新的为GT1;
图4
3 线性预测语音信号的合成
根据线性预测的基本思想,用过去M个样点值来预测现在或未来的样点值:
为预测信号,为预测系数,y(n)为取样信号,预测误差:
这样就可以通过在某个准则下使预测误差
一组线性预测参数 (i=1,2,⋯,M)
达到最小值的方法来决定唯一的
把语音信号的某一帧内的短时均方预测误差定义为:
E{
为使E{
}=E{}
}最小,对求偏导,并令其为零,有:
E{[])}=0 j=1,。.。,M
与过去的样点值正交。由于语音信上式表明采用最佳预测系数时,预测误差
号的短时平稳性,要分帧处理,对于每一个样点值记为y(n),。 。 。,y(n+N—
1),这段语音记为Yn.
对于语音段Yn,并记
关函数为:
, 对于语音段Yn,它的自相
j=1, 。 . .,M
根据Yule—walker方程,可以解出样值,用这种方法定期地改变激励参数u(n)
和预测系数,并使用修改过后的基因周期和共振峰参数,就能合成出语音,合成
语音样本如下:
S(n)=
为预测系数,G为模型增益,u(n)为激励,合成样本s(n),p为预测器阶数;
编写MATLAB程序,如下图:
4 GUI界面设计
在MATLAB新建GUI ,添加各部件。
打开一段男生录制的声音,进行仿真实
验,效果如下图所示。
版权声明:本文标题:变声器设计方案 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1719536155a783777.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论