MATLAB变声器设计
序言
伴随生活水平提升,科技不停进步,很多人为了娱乐,从而期望改变自己声音;还有现在很多访问节目为了保护被访问者,都对声音进行了对应处理。本设计经过编写MATLAB程序,修改相关声音参数,使其频率发生对应改变,在输出时达成变声。
1变声原理
在进行性别变声时,关键考虑基音周期、基频和共振峰频率改变。其中男生、女生和和童声基频、共振峰关系如图1所表示;基音周期改变时,基频、共振峰同时改变,若伸展现有男变女、女变童,反之亦可。本试验是基于男生录制声音进行相关参数提取,修改靠近于女声,实现男声到女声变换。
人群
基频分布(Hz)
共振峰频率分布
男声
[50,180]
偏低
女声
[160,380]
中
童声
[400,1000]
偏高
图1
2提取参数
基于短时自相关法基音周期估值进行自相关计算,经过MATLAB编程采取自相关算法能够实现基音周期估值,即对语音信号进行低通滤波,然后进行自相关计算。在低通滤波时,采取巴特沃斯滤波器。
2.1.1构建巴特沃斯低通滤波器
依据人说话特征设定对应指标参数,对本段语音设计算出巴特沃斯模拟滤波器阶数N为5,3dB截止频率Ωc,Ωc=Ωp(100.1αp
Ga
其中b0=1.0000,b1
将将p=s/c带人G
H
依据设定滤波器编写MATLAB程序,当信号经过低通滤波器后,对原始信号滤波产生结果如图2所表示,低通滤波后,保留基音频率,然后再用2kHz采样频率进行采样,采样序列为x(n),后进行下一步自相关计算。
图2
2.1.2语音信号短时自相关函数
定义语音信号自相关函数以下:
R
其中k为信号延迟点数;xn(n)为语音信号;N为语音帧长度。经过低通滤波以后,取160个样点数,帧长取10ms,对每帧语音求短时自相关,取得自相关最大点数,自相关函数在基音周期处表现为峰值,这些峰值点之间间隔平均值就是基音周期,从而估量出基音周期,不过因为图中存在野点,编写MATLAB程序除去野点算出对应基音周期如图
声,设新为PT1;
图3
2.2LPC倒谱法提取共振峰
经过线性估计分析得到合成滤波器系统函数为:
H(z)=1
其中h(n)为冲击响应,ai
下面求h(n)倒谱h(n),首先依据同态分析方法有Hn=logH(z),因为H(z)是最小相位,即在单位圆内是解析,所以说H(z)能够展开成级数形式,即Hz=1∞
n=1
有(1-i=1paiz-i)(n=1∞
h
在本试验中,取估计阶数为10,语音样点数为160,根据上式可直接从估计系数{ai}求得倒谱hn,这个倒谱是依据线性估计模型得到,即称为LPC倒谱。编写
图4
3线性估计语音信号合成
依据线性估计基础思想,用过去M个样点值来估计现在或未来样点值:
y
yn为估计信号,ai为估计系数,y(n)为取样信号,估计误差
ε
这么就能够经过在某个准则下使估计误差εn达成最小值方法来决定唯一一组线性估计参数ai(i=1,2,?
把语音信号某一帧内短时均方估计误差定义为:
E{ε2(n)}=E{
为使E{ε2(n)}最小,对
E{[yn-i=1
上式表明采取最好估计系数时,估计误差ε(n)与过去样点值正交。因为语音信号短时平稳性,要分帧处理,对于每一个样点值记为y(n),...,y(n+N-1),这段语音记为Yn。
对于语音段Yn,并记?nj,i=E{y
Rn
依据Yule—walker方程,能够解出样值,用这种方法定时地改变激励参数u(n)和估计系数ai,并使用修改过后基因周期和共振峰参数,就能合成出语音,合成语音样本
S(n)=i=1
ai
4GUI界面设计
在MATLAB新建GUI,添加各部件。
打开一段男生录制声音,进行仿真实
验,效果以下图所表示。