数字变声器原理与算法

更新时间:2023-11-19 08:00:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于MATLAB算法的数字变声器

【摘要】变声器的原理是通过改变输入声音频率,进行改变声音的音色、音调,使输出声音在感官上与原声音不同。变声器是借助对声音音色和音调的双重复合改变,实现输出声音的改变。通过自己发声,共振峰频率的改变是基于重采样实现的。同时用LPC倒谱分析法分析共振峰的范围,通过MATLAB编写程序并构置GUI界面。实验中通过MATLAB软件对采集来的语言信号进行频谱分析,讨论不同人之间的噪音源参数和共振峰参数,通过对不同人语言信号频率和幅度的改变来实现不同人之间的语音转换。

【关键词】短时自相关法; LPC倒谱; 语音信号; matlab GUI; 1引言

随着生活水平的提高,科技的不断进步,很多人为了娱乐,从而希望改变自己的声音;还有如今的许多的访问节目为了保护被访问者,都对声音进行了相应的处理。本设计通过编写matlab程序,借助对声音音色和音调的双重复合改变,实现输出声音的改变。共振峰频率的改变是基于重采样实现的,从重采样原理知道,这也同时印发了基频的变化,为保证基频变化和共振峰频率变化的独立、互不相关,在基频移动时必须考虑抵消重采样带来的偏移,理论上只要基频检测足够精确,确实可以保证基频改变和共振峰频率改变间的互不相关。保证变声效果的自然度主要是没有采用基因检测将基因移动和共振峰变化彻底隔离的缘故。

本次课程设计就是运用我们所学到的理论知识,用MATLAB软件来实现对语音信号的变声处理,理论联系实际,从而更好地掌握以及运用所学习的知识。

2数字变声器的原理与算法 2.1基本原理

语音科学家将人类发声过程视作一个由声门源输送的气流经以声道、口、鼻腔组成的滤波器调制而成的。人类语音可分为有声语音和无声语音,前者是由声带振动激励的脉冲信号经声腔调制变成不同的音,它是人类语言中元音的基础,声带振动的频率称为基频。无声语音则是声带保持开启状态,禁止振动引发的。一般来说,由声门振动决定的基频跟说话人的性别特征有关,如下表,而无声语音则没有体现这个特征。说话人的个性化音色和语音的另外一个声学参数——共振峰频率的分布有关。儿童由于声道短,其共振峰频率高于成年人,成年女性的声道一般短于成年男性,所以女性的共振峰频率一般高于男性。

在进行性别变声时,主要考虑基音周期、基频和共振峰频率的变化。其中男生、女生和童声的基频、共振峰的关系如图1所示;基音周期改变时,基频、共振峰同时变化,若伸展既有男变女、女变童,反之亦可。本实验是基于打开一种声音进行相关参数提取,修改 接近于女声、男声或童声,实现声音的变换。

图1 人群基频与共振峰的关系 2.2实现过程及算法

采用线性预测参数合成法。线性预测参数合成法利用LPC语音分析方法,通过分析自然

1

语音样本,计算出LPC系数,就可以建立信号产生模型,从而合成出语音。大致流程如图2所示。

图2 制作流程

2.2.1基于短时自相关法的基音周期估值

对语言信号进行低通滤波,然后进行自相关计算。在低通滤波时,采用巴特沃斯滤波器。 根据人的说话特征设定相应指标参数,对本段语音设计算出巴特沃斯模拟滤波器的阶数N为5,3dB截止频率? , ? ,算出? 为0.175,归一化低通原型系统函数为:

( )

其中 将 ? 带人 ( )中,得到低通滤波器,

根据设定的滤波器编写matlab程序,当信号经过低通滤波器后,对原始信号滤波产生结果如下图2所示,低通滤波后,保留基音频率,然后再用8kHz采样频率进行采样,采样序列为x(n),然后进行下一步的自相关计算。

图3 原始信号低通滤波

2.2.2语音信号的短时自相关函数

定义语音信号自相关函数如下:

2

其中k为信号延迟点数: 为语音信号;N为语音帧长度。经过低通滤波之后,取160个样点数,帧长取10ms,对每帧语音求短时自相关,取得自相关最大点数,自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是基音周期。

2.2.3 LPC倒谱法提取共振峰

通过线性预测分析得到合成滤波器的系统函数为

其冲击响应为h(n), 为预测系数。然后求h(n)的倒谱h(n),首先根据同态分析方

??(z)=logH(z),因为H(z)是最小相位的,即在单位圆内是解析的,所以H?(z)可法,有H?(n)是存在的,设? ,也就是说H?(z)= h?(z)的逆变换h以展开成级数形式,即H ?(n)=0,将等式两端分别对 求导,得到: h? h

=

? u ?? , 令式左右两边Z的各次幂前系数有(1- ) = u h

分别相等得到:

?(1)=1 h?(n)= + h? 1 h ?(n)= h? n>p h

在本实验中,取预测阶数为10,语音的样点数为160,按照上式可直接从预测系数 求

?(n),这个倒谱是根据线性预测模型得到,即称为LPC倒谱。 得倒谱h2.2.4线性预测语音信号合成

根据线性预测的基本思想,用过去M个样点值来预测现在或未来的样点值:

?(n)= y

?(n)是预测信号, 为预测系数,y(n)为取样信号,预测误差(n): yE{ (n)}=E{ }

为使E{ (n)}最小,对 求偏导,并令其为零,有:

E{[ ]y(n-)}=0 =1,…,M

3

上式表明采用最佳预测系数时,预测误差与过去的样点值正交。由于语音信号的短时平稳性,要分帧处理,对于每一个样点值记为 (n)…, (n+N-1),这段语音记为Yn。

对于语音段Yn,并记 (j,i)=E{ },对于语音段Yn,它的自相关函数为:

n=1,…,M 根据Yule—walker方程,可以解出样值,用这种方法定期地改变激励参数u(n)和预测系数 ,并使用修改过后的基因周期和共振峰参数,就能合成出语音,合成语音样本如下:

S(n)= +Gu(n)

为预测系数;G为模型增益;u(n)为激励;合成样本s(n);p为预测器阶数;

2.2.5流程图

算法 运行

开始 开始 导入语音数据S 打开音频

数据归一化

建立滤波器重建语言 女变男 男变女 合成并加窗

确定帧数 线性预测法预测p个系数

计算

减小基音周期

提取共振峰 合成激励 合成语音

3数字变声器的软件实现及仿真结果 3.1 界面设计

4

变童声

在设计数字变声器的界面时,使用了MATLAB提供的可视化的界面环境Guide。相比通 过编写程序进行GUI的设计,可视化的界面环境更加方便快捷。见图4

1按钮组:设计中使用了两个按钮组,把打开、原声、男变女、女变男、童声三项功

图4 界面设计 能放在一组;另一个把语音的图像 即4个axes放在了一组。

2按钮:最常用的控件,用于相应用户的鼠标单击,按钮上有说明文字说明其作用。设计中使用了五个按钮,分别用于打开、原声、男变女、女变男、童声。

3 轴: 用于显示图像。 3.2回调函数

对控件的Callback属性编程是实现GUI的基本机制,我们下来就要在各函数中编写程序代码,完成各回调函数的功能。 (1)打开

function dakai_Callback(hObject, eventdata, handles)

[filename,pathname]=uigetfile({'*.wav','ALL FILES'},'选择声音'); ifisequal([filename pathname],[0,0]) return; end

str=[pathname filename]; [temp,Fs]=audioread(str); temp1=resample(temp,80,441); handles.y=temp1; handles.y1=temp; handles.Fs=Fs;

guidata(hObject,handles); (2)原声

function yuansheng_Callback(hObject, eventdata, handles) c=handles.Fs;

sound(handles.y1,c);

plot(handles.axes1,handles.y1)

5

本文来源:https://www.bwwdw.com/article/gmxv.html

Top