基于MATLAB算法的数字变声器

基于MATLAB算法的数字变声器
基于MATLAB算法的数字变声器

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

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

1引言

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

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

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

2.1基本原理

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

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

接近于女声、男声或童声,实现声音的变换。

图1 人群基频与共振峰的关系

2.2实现过程及算法

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

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

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

对语言信号进行低通滤波,然后进行自相关计算。在低通滤波时,采用巴特沃斯滤波器。

根据人的说话特征设定相应指标参数,对本段语音设计算出巴特沃斯模拟滤波器的阶数N为5,3dB截止频率,,算出为0.175,归一化低通原型系统函数为:

其中

将带人中,得到低通滤波器,

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

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

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

图3 原始信号低通滤波

图2 制作流程

其中k 为信号延迟点数:

为语音信号;N 为语音帧长度。经过低通滤波之后,

取160个样点数,帧长取10ms ,对每帧语音求短时自相关,取得自相关最大点

数,自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是基音周期。

2.2.3 LPC 倒谱法提取共振峰

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

其冲击响应为h(n),为预测系数。然后求h(n)的倒谱h ?

(n),首先根据同态分析方

法,有H

?(z)=logH(z),因为H (z )是最小相位的,即在单位圆内是解析的,所以H ?(z)可以展开成级数形式,即H ?(z)=,也就是说H

?(z)的逆变换h ?

(n)是存在的,设h

?(n)=0,将等式两端分别对求导,得到: =

有(1-)

=

, 令式左右两边Z 的各次幂前系数分别

相等得到:

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

h

?(n)= n>p

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

得倒谱h

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

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

y

?(n )=

y

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

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

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

上式表明采用最佳预测系数时,预测误差与过去的样点值正交。由于语音信号的短时平稳性,要分帧处理,对于每一个样点值记为(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 界面设计

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

1按钮组:设计中使用了两个按钮组,把打开、原声、男变女、女变男、童声三项功能放在一组;另一个把语音的图像即4个axes放在了一组。

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

3 轴:用于显示图像。

3.2回调函数

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

(1)打开

function dakai_Callback(hObject, eventdata, handles)

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

if isequal([filename pathname],[0,0])

return;

end

str=[pathname filename];

[temp,Fs]=audioread(str);

减小基音周期

提取共振峰

合成激励合成语音

图4 界面设计

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)

title(handles.axes1,'时域图');

ysize=size(handles.y1);

y1=fft(handles.y,length(handles.y1));

ysize=size(y1);

plot(handles.axes2,abs(y1));

xlabel(handles.axes2,'频率');

ylabel(handles.axes2,'幅度');

title(handles.axes2,'频率特性');

(3)男变女

function nanbiannv_Callback(hObject, eventdata, handles) FL = 80 ; % 帧移

WL = 240 ; % 窗长

P = 10 ; %预测系数个数

s = handles.y;

fs = handles.Fs;

% 定义常数

s = s/max(s); % 归一化

L = length(s); % 读入语音长度

FN = floor(L/FL)-2; % 计算帧长,floor;向负无穷方向

% 预测和重建滤波器

exc = zeros(L,1); % 激励信号,double类零矩阵L行1列

zi_pre = zeros(P,1); % 预测滤波器状态

s_rec = zeros(L,1); % 重建语音

zi_rec = zeros(P,1);

% 变调滤波器

exc_syn_t = zeros(L,1); % 合成的激励信号,创建一个L行1列的0脉冲s_syn_t = zeros(L,1); % 合成语音

last_syn_t = 0; % 存储上一个段的最后一个脉冲的下标

zi_syn_t = zeros(P,1); % 合成滤波器

hw = hamming(WL); %汉明窗

%滤波器

% 依次处理每帧语音

for n = 3:FN %从第三个子数组开始

% 计算预测系数

s_w = s(n*FL-WL+1:n*FL).*hw; %汉明窗加权

[A,E]=lpc(s_w,P); %线性预测计算预测系数

% A是预测系数,E会被用来计算合成激励的能量

s_f=s((n-1)*FL+1:n*FL); % 本帧语音

%利用filter函数重建语音

[exc1,zi_pre] = filter(A,1,s_f,zi_pre);

exc((n-1)*FL+1:n*FL) = exc1; %计算激励

%利用filter函数重建语音

[s_rec1,zi_rec] = filter(1,A,exc1,zi_rec);

s_rec((n-1)*FL+1:n*FL) = s_rec1; %重建语音

% 下面只有得到exc后才可以

s_Pitch = exc(n*FL-222:n*FL);

PT(n) = findpitch(s_Pitch); %计算基音周期pt

G = sqrt(E*PT(n)); %计算合成激励的能量G

% tempn_syn = 1:n*FL-last_syn;

% exc_syn1 = zeros(length(tempn_syn),1);

% exc_syn1(mod(tempn_syn,PT)==0) = G; %某一段算出的脉冲

% exc_syn1 = exc_syn1((n-1)*FL-last_syn+1:n*FL-last_syn); % [s_syn1,zi_syn] = filter(1,A,exc_syn1,zi_syn);

% exc_syn((n-1)*FL+1:n*FL)=exc_syn1; %计算得到合成激励% s_syn((n-1)*FL+1:n*FL) = s_syn1; %计算得到合成语音% last_syn = last_syn+PT*floor((n*FL-last_syn)/PT);

PT1 =floor(PT(n)/2); %减小基音周期

poles = roots(A);

deltaOMG =100*2*pi/fs;

for p=1:10 %增加共振峰

if imag(poles(p))>0

poles(p) = poles(p)*exp(1j*deltaOMG);

elseif imag(poles(p))<0

poles(p) = poles(p)*exp(-1j*deltaOMG);

end

end

end

A1=poly(poles);

tempn_syn_t=(1:n*FL-last_syn_t);

exc_syn1_t = zeros(length(tempn_syn_t),1);

exc_syn1_t(mod(tempn_syn_t,PT1)==0) = G;

exc_syn1_t = exc_syn1_t((n-1)*FL-last_syn_t+1:n*FL-last_syn_t);

[s_syn1_t,zi_syn_t] = filter(1,A1,exc_syn1_t,zi_syn_t);

exc_syn_t((n-1)*FL+1:n*FL) = exc_syn1_t; %合成激励

s_syn_t((n-1)*FL+1:n*FL) = s_syn1_t; %合成语音

last_syn_t = last_syn_t+PT1*floor((n*FL-last_syn_t)/PT1);

end

%绘图

plot(handles.axes4,exc_syn_t)

xlabel(handles.axes4,'时域图');

ylabel(handles.axes4,'频率');

title(handles.axes4,'幅度');

handles.y=s_syn_t;

guidata(hObject,handles);

plot(handles.axes3,s_syn_t);

%y1size=size(s_syn_t);

plot(handles.axes3,s_syn_t);

title(handles.axes3,'频率特性');

sound(handles.y,8000);

%findpitch函数

function PT=findpitch(s)

[B,A]=butter(5,700/4000);

s=filter(B,A,s);

R=zeros(143,1);

for k=1:143

R(k)=s(144:223)'*s(144-k:223-k);

end

[R1,T1]=max(R(80:143));

T1=T1+79;

R1=R1/(norm(s(144-T1:223-T1))+1);

[R2,T2]=max(R(40:79));

T2=T2+39;

R2=R2/(norm(s(144-T2:223-T2))+1);

[R3,T3]=max(R(20:39));

T3=T3+19;

R3=R3/(norm(s(144-T3:223-T3))+1);

Top=T1;

Rop=R1;

if R2>=0.85*Rop

Rop=R2;

Top=T2;

end

if R3>0.85*Rop

Rop=R3;

Top=T3;

end

PT=Top;

return

(3)女变男

function nvbiannan_Callback(hObject, eventdata, handles)

FL = 80 ; % 帧移

WL = 240 ; % 窗长

P = 10 ; %预测系数个数

s = handles.y;

fs = handles.Fs;

% 定义常数

s = s/max(s); % 归一化

L = length(s); % 读入语音长度

FN = floor(L/FL)-2; % 计算帧长,floor;向负无穷方向

% 预测和重建滤波器

exc = zeros(L,1); % 激励信号,double类零矩阵L行1列

zi_pre = zeros(P,1); % 预测滤波器状态

s_rec = zeros(L,1); % 重建语音

zi_rec = zeros(P,1);

% 变调滤波器

exc_syn_t = zeros(L,1); % 合成的激励信号,创建一个L行1列的0脉冲s_syn_t = zeros(L,1); % 合成语音

last_syn_t = 0; % 存储上一个段的最后一个脉冲的下标

zi_syn_t = zeros(P,1); % 合成滤波器

hw = hamming(WL); %汉明窗

%滤波器

% 依次处理每帧语音

for n = 3:FN %从第三个子数组开始

% 计算预测系数

s_w = s(n*FL-WL+1:n*FL).*hw; %汉明窗加权

[A,E]=lpc(s_w,P); %线性预测计算预测系数

% A是预测系数,E会被用来计算合成激励的能量

s_f=s((n-1)*FL+1:n*FL); % 本帧语音

%利用filter函数重建语音

[exc1,zi_pre] = filter(A,1,s_f,zi_pre);

exc((n-1)*FL+1:n*FL) = exc1; %计算激励

%利用filter函数重建语音

[s_rec1,zi_rec] = filter(1,A,exc1,zi_rec);

s_rec((n-1)*FL+1:n*FL) = s_rec1; %重建语音

% 下面只有得到exc后才可以

s_Pitch = exc(n*FL-222:n*FL);

PT(n) = findpitch(s_Pitch); %计算基音周期pt

G = sqrt(E*PT(n)); %计算合成激励的能量G

% tempn_syn = 1:n*FL-last_syn;

% exc_syn1 = zeros(length(tempn_syn),1);

% exc_syn1(mod(tempn_syn,PT)==0) = G; %某一段算出的脉冲

% exc_syn1 = exc_syn1((n-1)*FL-last_syn+1:n*FL-last_syn);

% [s_syn1,zi_syn] = filter(1,A,exc_syn1,zi_syn);

% exc_syn((n-1)*FL+1:n*FL)=exc_syn1; %计算得到合成激励

% s_syn((n-1)*FL+1:n*FL) = s_syn1; %计算得到合成语音

% last_syn = last_syn+PT*floor((n*FL-last_syn)/PT);

PT1 =floor(PT(n)/2); %减小基音周期

poles = roots(A);

deltaOMG =100*2*pi/fs;

for p=1:10 %增加共振峰

if imag(poles(p))>0

poles(p) = poles(p)*exp(1j*deltaOMG);

elseif imag(poles(p))<0

poles(p) = poles(p)*exp(-1j*deltaOMG);

end

end

end

A1=poly(poles);

tempn_syn_t=(1:n*FL-last_syn_t);

exc_syn1_t = zeros(length(tempn_syn_t),1);

exc_syn1_t(mod(tempn_syn_t,PT1)==0) = G;

exc_syn1_t = exc_syn1_t((n-1)*FL-last_syn_t+1:n*FL-last_syn_t); [s_syn1_t,zi_syn_t] = filter(1,A1,exc_syn1_t,zi_syn_t);

exc_syn_t((n-1)*FL+1:n*FL) = exc_syn1_t; %合成激励

s_syn_t((n-1)*FL+1:n*FL) = s_syn1_t; %合成语音

last_syn_t = last_syn_t+PT1*floor((n*FL-last_syn_t)/PT1);

end

%绘图

handles.y=s_syn_t;

guidata(hObject,handles);

%绘图

plot(handles.axes4,exc_syn_t)

xlabel(handles.axes4,'时域图');

ylabel(handles.axes4,'频率');

title(handles.axes4,'幅度');

handles.y=s_syn_t;

guidata(hObject,handles);

plot(handles.axes3,s_syn_t);

%y1size=size(s_syn_t);

plot(handles.axes3,s_syn_t);

title(handles.axes3,'频率特性');

(4)变童声

function tongsheng_Callback(hObject, eventdata, handles) FL = 80 ; % 帧移

WL = 240 ; % 窗长

P = 10 ; %预测系数个数

s = handles.y;

fs = handles.Fs;

% 定义常数

s = s/max(s); % 归一化

L = length(s); % 读入语音长度

FN = floor(L/FL)-2; % 计算帧长,floor;向负无穷方向

% 预测和重建滤波器

exc = zeros(L,1); % 激励信号,double类零矩阵L行1列

zi_pre = zeros(P,1); % 预测滤波器状态

s_rec = zeros(L,1); % 重建语音

zi_rec = zeros(P,1);

% 变调滤波器

exc_syn_t = zeros(L,1); % 合成的激励信号,创建一个L行1列的0脉冲s_syn_t = zeros(L,1); % 合成语音

last_syn_t = 0; % 存储上一个段的最后一个脉冲的下标

zi_syn_t = zeros(P,1); % 合成滤波器

hw = hamming(WL); %汉明窗

%滤波器

% 依次处理每帧语音

for n = 3:FN %从第三个子数组开始

% 计算预测系数

s_w = s(n*FL-WL+1:n*FL).*hw; %汉明窗加权

[A,E]=lpc(s_w,P); %线性预测计算预测系数

% A是预测系数,E会被用来计算合成激励的能量

s_f=s((n-1)*FL+1:n*FL); % 本帧语音

%利用filter函数重建语音

[exc1,zi_pre] = filter(A,1,s_f,zi_pre);

exc((n-1)*FL+1:n*FL) = exc1; %计算激励

%利用filter函数重建语音

[s_rec1,zi_rec] = filter(1,A,exc1,zi_rec);

s_rec((n-1)*FL+1:n*FL) = s_rec1; %重建语音

% 下面只有得到exc后才可以

s_Pitch = exc(n*FL-222:n*FL);

PT(n) = findpitch(s_Pitch); %计算基音周期pt

G = sqrt(E*PT(n)); %计算合成激励的能量G

% tempn_syn = 1:n*FL-last_syn;

% exc_syn1 = zeros(length(tempn_syn),1);

% exc_syn1(mod(tempn_syn,PT)==0) = G; %某一段算出的脉冲

% exc_syn1 = exc_syn1((n-1)*FL-last_syn+1:n*FL-last_syn);

% [s_syn1,zi_syn] = filter(1,A,exc_syn1,zi_syn);

% exc_syn((n-1)*FL+1:n*FL)=exc_syn1; %计算得到合成激励

% s_syn((n-1)*FL+1:n*FL) = s_syn1; %计算得到合成语音

% last_syn = last_syn+PT*floor((n*FL-last_syn)/PT);

PT1 =floor(PT/2);

poles = roots(A);

deltaOMG = 700*2*pi/8000;

for p=1:10

if imag(poles(p))>0 ;

poles(p) = poles(p)*exp(1i*deltaOMG);

else

if imag(poles(p))<0 ;

poles(p) = poles(p)*exp(-1i*deltaOMG);

end

end

end

A1=poly(poles);

tempn_syn_t = [1:n*FL-last_syn_t]';

exc_syn1_t = zeros(length(tempn_syn_t),1);

exc_syn1_t(mod(tempn_syn_t,PT1)==0) = G;

exc_syn1_t = exc_syn1_t((n-1)*FL-last_syn_t+1:n*FL-last_syn_t); [s_syn1_t,zi_syn_t] = filter(1,A1,exc_syn1_t,zi_syn_t);

exc_syn_t((n-1)*FL+1:n*FL) = exc_syn1_t;

s_syn_t((n-1)*FL+1:n*FL) = s_syn1_t;

last_syn_t = last_syn_t+PT1*floor((n*FL-last_syn_t)/PT1);

end

plot(handles.axes4,exc_syn_t)

xlabel(handles.axes4,'时域图');

ylabel(handles.axes4,

'频率');

title(handles.axes4,'幅度');

handles.y=s_syn_t;

guidata(hObject,handles);

plot(handles.axes3,s_syn_t);

%y1size=size(s_syn_t);

plot(handles.axes3,s_syn_t);

title(handles.axes3,'频率特性');

sound(handles.y,8000)

3.2.1仿真结果

(1)男声变女声前后图形对

(2)女生变男生前后图形对比

(3)男声变童声图形对比

图5男声变女声前后图形对比

图6女声变男声前后图形对比

图6男声变童声前后图形对比

4 结束语

在开始制作时毫无头绪,但经过老师和同学的讲解,及自己所找到的各种文献及例子一点一点的探索,最终一点点做出来了。但还是有一点瑕疵,正努力找资料修改。在制作中遇到了很多比较棘手的问题如在滤波器参数的选取上,代码的更改问题,经常运行报错等。但最终经过同学和我自己的共同努力终于成功了。另外,在设计滤波器的过程中我们采用的是窗函数法,事实上,采用双线性变换法也可以进行,因此,不管对于多么简单的课题,其实也是有很多东西可以发掘的,这需要我们在平时多积累,多思考,只有这样,才能取得更大的进步,才能学有所用,学有所长。

参考文献

[1] 高西全、丁玉美编著.数字信号处理.西安.西安电子科技大学出版社,2008.

[2] 刘树棠译.数字信号处理——使用MATLAB.西安:西安交通大学出版社,2002.

[3] 胡广书编著.数字信号处理——理论、算法与实现.北京:清华大学出版社,2002.

[4] 梁虹等编.信号与线性系统分析————基于MATLAB的方法与实现.北京:高等教育出版社,2006.

[5] 郑阿奇.MATLAB实用教程。北京:电子工业出版社,2007.8

[6]蔡莲红,黄德智,蔡锐.现代语音技术基础与应用.北京:清华大学出版社,2003.

[7]张雄伟,陈亮,杨吉斌.现代语音处理技术及应用.北京:机械工业出版社,2003.

变声器的原理分类实现及应用

变声器的原理、分类、实现及应用 2009130309 徐佩 变声器的原理:变声器是通过改变输入声音频率,进而改变声音的音色、音调,使输出声音在感官上与原声音不同。变声器是借助对声音音色和音调的双重复合改变, 实现输出声音的改变的。通过自己发音,共振峰频率的改变是基本重采样实 现的,从重采样原理知道,这也同时引发了基频的变化,为保证基频变化和 共振频率变化的独立、互不相关,在基频移动是必须考虑抵消重采样带来的 偏移,理论上只要基频检测足够精确,确保可以保证基频改变和共振峰频率 改变间的互不相关,通过搬移和改变基频、语速,实现变声。 变声器的分类:根据变声器材质不同,变声器分为变声器硬件和变声器软件。变声器硬件,即通过硬件实现变声的工具变声原理。无论是硬件变声器,还是软件变声 器,其原理都是,通过改变输入声音频率,进而改变声音的音色、音调, 使输出声音在感官上与原声音不同。我们每个人的声音不同,源于我们 的每个人的音色和音调不同,我们所说的男中音、男高音,就是音调的 不同,而即便音调一致,我们依然能区分出两个不同人的声音,或不同 乐器的声音,这就是音色的不同。变声器,正是借助对声音音色和音调 的双重复合改变,实现输出声音的改变。其功能要点如下: 1.无限制式多格式录音:可以对来自麦克风、系统等众多设备的声音进 行实时的录制,支持多设备选择性录音,录音不需要临时文件,并可一 次性保存为WAV/WMA/MP3等众多流行格式。在录音过程中还允许对声音 进行男女变声处理! 2.音乐重混音录制功能:允许您选择一首歌曲(音频或视频),然后对 其进行各种特效处理,比如保持原唱的同时进行节奏快慢处理,或者进 行男女声变换处理。在混录过程中也允许您随时调节各特效参数,就像 一个专业混音师那样!通过这些混录功能,您可以制作出和原音乐风格 不同的轻快歌曲或类似迪斯科类型的快速歌曲,也可以是更轻柔的背景 歌曲!然后您新创作的歌曲将可以保存为新的音频文件。 3.文件混音功能:支持对一首歌曲(音频或视频)进行裁剪并对结尾部分施 加淡出效果,或增大原音乐音量,同时还允许将其和其他音乐进行混音处理, 并允许保存为WAV/WMA/MP3等众多流行格式。 变声器的实现:插值以后重新抽样。基本过程是这样的:已知当前帧帧长FL (采样)点,采样频率Fs ,目标变换帧频率Fs’ ,则目标变换帧帧长FL’=FL*Fs’/Fs 。 记R ate = Fs’/Fs ,那么FL’=FL * Rate ,其中Rate 为基频变化率。变换 开始时,先求得FL 和FL’ 的最小公倍数AL ,再将原音频帧插值为AL 点,最后将插值后的语音段重新抽样,得到长FL’ 点的变声后的数据。 专用变音集成电路 1、特点:宽电压范围3.0-5.0V*无需外部存储器*低功耗*使用可变电阻 或者开关来调整声音效果*可选择高音低音放大音机器人声音可以应用于玩 具变声,电话系统或其他声音领域*有静音功能 2、概述:RTS0072B是一种单片CMOS大规模集成电路设计的语音转换IC, 它可以将声音移调或转变成另外一个声音,通过将输入的正常速率的声音信

数字滤波算法

几种简单的数字滤波 假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限副滤波 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值*/ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值滤波法 /* N值可根据实际情况调整 排序采用冒泡法*/ #define N 11 char filter() { char value_buf[N]; char count,i,j,temp; for ( count=0;countvalue_buf[i+1] ) { temp = value_buf[i]; value_buf[i] = value_buf[i+1]; value_buf[i+1] = temp; } } }

return value_buf[(N-1)/2]; } 3、算术平均滤波法 /* */ #define N 12 char filter() { int sum = 0; for ( count=0;count

基于MATLAB的数字滤波器的设计程序

IIR 低通滤波器的设计程序为: Ft=8000; Fp=1000; Fs=1200; As=100 ; Ap=1; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Fp*tan(wp/2); fs=2*Fs*tan(ws/2); [n11,wn11]=buttord(wp,ws,1,50,'s'); [b11,a11]=butter(n11,wn11,'s'); [num11,den11]=bilinear(b11,a11,0.5); [h,w]=freqz(num11,den11); axes(handles.axes1); plot(w*8000*0.5/pi,abs(h)); xlabel('Frequency/Hz'); ylabel('Magnitude'); title('巴特沃斯数字低通滤波器'); 巴特沃斯带通滤波器设计程序为: Ft=8000; Fp1=1200; Fp2=3000; Fs1=1000; Fs2=3200; As=100; Ap=1; wp1=tan(pi*Fp1/Ft); wp2=tan(pi*Fp2/Ft); ws1=tan(pi*Fs1/Ft); ws2=tan(pi*Fs2/Ft); w=wp1*wp2/ws2;

bw=wp2-wp1; wp=1; ws=(wp1*wp2-w.^2)/(bw*w); [n12,wn12]=buttord(wp,ws,1,50,'s'); [b12,a12]=butter(n12,wn12,'s'); [num2,den2]=lp2bp(b12,a12,sqrt(wp1*wp2),bw); [num12,den12]=bilinear(num2,den2,0.5); [h,w]=freqz(num12,den12); plot(w*8000*0.5/pi,abs(h)); axis([0 4000 0 1.5]); xlabel('Frequency/Hz'); ylabel('Magnitude'); title('巴特沃斯数字带通滤波器'); IIR 高通滤波器的设计程序为: Ft=8000; Fp=4000; Fs=3500; wp1=tan(pi*Fp/Ft); ws1=tan(pi*Fs/Ft); wp=1; ws=wp1*wp/ws1; [n13,wn13]=cheb1ord(wp,ws,1,50,'s'); [b13,a13]=cheby1(n13,1,wn13,'s'); [num,den]=lp2hp(b13,a13,wn13); [num13,den13]=bilinear(num,den,0.5); [h,w]=freqz(num13,den13); axes(handles.axes1); plot(w*21000*0.5/pi,abs(h)); xlabel('Frequency/Hz'); ylabel('Magnitude'); title('切比雪夫Ⅰ型数字高通滤波器');

matlab中关于数字滤波器的函数介绍

MATLAB下的数字信号处理实现示例 一信号、系统和系统响应 1、理想采样信号序列 (1)首先产生信号x(n),0<=n<=50 n=0:50; %定义序列的长度是50 A=444.128; %设置信号有关的参数 a=50*sqrt(2.0)*pi; T=0.001; %采样率 w0=50*sqrt(2.0)*pi; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); (2)绘制信号x(n)的幅度谱和相位谱 k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)(3)改变参数为:1,0734.2,4.0,10==Ω==TAα n=0:50; %定义序列的长度是50 A=1; %设置信号有关的参数 a=0.4; T=1; %采样率 w0=2.0734; x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形 subplot(3,1,1);stem(x); %绘制x(n)的图形 title(‘理想采样信号序列’); k=-25:25; W=(pi/12.5)*k; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱 subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’); angX=angle(X); %绘制x(n)的相位谱 subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’) 2、单位脉冲序列 在MatLab中,这一函数可以用zeros函数实现: n=1:50; %定义序列的长度是50 x=zeros(1,50); %注意:MATLAB中数组下标从1开始

基于matlab的图像识别与匹配

基于matlab的图像识别与匹配 摘要 图像的识别与匹配是立体视觉的一个重要分支,该项技术被广泛应用在航空测绘,星球探测机器人导航以及三维重建等领域。 本文意在熟练运用图像的识别与匹配的方法,为此本文使用一个包装袋并对上面的数字进行识别与匹配。首先在包装袋上提取出来要用的数字,然后提取出该数字与包装袋上的特征点,用SIFT方法对两幅图进行识别与匹配,最终得到对应匹配数字的匹配点。仿真结果表明,该方法能够把给定数字与包装袋上的相同数字进行识别与匹配,得到了良好的实验结果,基本完成了识别与匹配的任务。

1 研究内容 图像识别中的模式识别是一种从大量信息和数据出发,利用计算机和数学推理的方法对形状、模式、曲线、数字、字符格式和图形自动完成识别、评价的过程。 图形辨别是图像识别技术的一个重要分支,图形辨别指通过对图形的图像采用特定算法,从而辨别图形或者数字,通过特征点检测,精确定位特征点,通过将模板与图形或数字匹配,根据匹配结果进行辨别。 2 研究意义 数字图像处理在各个领域都有着非常重要的应用,随着数字时代的到来,视频领域的数字化也必将到来,视频图像处理技术也将会发生日新月异的变化。在多媒体技术的各个领域中,视频处理技术占有非常重要的地位,被广泛的使用于农业,智能交通,汽车电子,网络多媒体通信,实时监控系统等诸多方面。因此,现今对技术领域的研究已日趋活跃和繁荣。而图像识别也同样有着更重要的作用。 3 设计原理 3.1 算法选择 Harris 角点检测器对于图像尺度变化非常敏感,这在很大程度上限制了它的应用范围。对于仅存在平移、旋转以及很小尺度变换的图像,基于Harris 特征点的方法都可以得到准确的配准结果,但是对于存在大尺度变换的图像,这一类方法将无法保证正确的配准和拼接。后来,研究人员相继提出了具有尺度不变性的特征点检测方法,具有仿射不变性的特征点检测方法,局部不变性的特征检测方法等大量的基于不变量技术的特征检测方法。 David.Lowe 于2004年在上述算法的基础上,总结了现有的基于不变量技术的特征检测方法,正式提出了一种基于尺度空间的,对图像平移、旋转、缩放、甚至仿射变换保持不变性的图像局部特征,以及基于该特征的描述符。并将这种方法命名为尺度不变特征变换(Scale Invariant Feature Transform),以下简称SIFT 算法。SIFT 算法首先在尺度空间进行特征检测,并确定特征点的位置和特征点所处的尺度,然后使用特征点邻域梯度的主方向作为该特征点的方向特征,以实现算子对尺度和方向的无关性。利用SIFT 算法从图像中提取出的特征可用于同一个物体或场景的可靠匹配,对图像尺度和旋转具有不变性,对光照变化、

MATLAB变声器

MATLAB变声器 电子工程学院 摘要 语音信号处理中的变声处理已经有了比较成熟的算法,本文阐述了变声算法的基础原理,利用数字滤波器,自相关法,LPC,LPC系数求根法等方法在MATLAB上改变语音信号的基频和共振峰以实现变声,并总结了现有变声算法的缺陷,对用不同的变换域能否改进变声算法做了粗略分析。 关键词:变声算法,LPC,变换域

目录 研究背景 (3) 变声原理 (3) 语音基本概念 (3) 变声原理 (4) 变声过程 (5) 分帧处理 (5) 计算LPC系数 (5) 计算原始激励 (6) 计算基音周期 (6) 计算激励能量 (7) 合成脉冲序列 (7) 更改声道参数 (7) 合成变声语音 (8) 程序设计 (8) 传统变声算法缺陷 (9) 合成激励与原始激励差别较大 (9) 不能实现定向变声 (10) 实现定向变声的猜想 (11) 小波域是否存在恒定音色参数粗略分析 (12) 统计上的变换是否利于寻找恒定音色参数猜想 (12) 下一步研究计划 (12)

研究背景 语音信号是人们日常生活中十分常见的信号,语音也是人与人之间传递信息的一种十分重要的方式。随着智能终端以及互联网的普及,语音信号大量地以数字形式出现,语音信号处理变得越来越重要,变声处理是语音信号处理的基础之一,所以在这样的大背景下,研究变声算法并改进变声算法是很有意义而且有必要的。 另一方面,传统的变声算法是对发声过程的简单模拟进行语音合成,在模拟过程中改变参数以实现变声,而传统的变声算法存在一些缺陷,若要改进变声算法使其更灵活有效,那么细致的研究传统的变声算法是很有必要的。 变声原理 语音基本概念 1. 声道:声道是很多动物及人类都有的一个腔室,从声源产生的声音经由此处滤出。人的声道包括声道则包括喉腔、咽头、口腔和鼻腔。 2. 基音:一般的声音都是由发音体发出的一系列频率、振幅各不相同的振动复合而成的。这些振动中有一个频率最低的振动,由它发出的音就是基音,其余为泛音。发音体整体振动产生的音,叫做基音,决定音高;发音体部分振动产生的音,叫做泛音,决定音色;基音和泛音结合一起而形成的音,叫做复合音,日常我们所听到的声音多为复合音。 3.共振峰:共振峰是指在声音的频谱中能量相对集中的一些区域,共振峰是语音音质的决定因素,反映了声道(共振腔)的物理特征。声音在经过共振腔时,受到腔体的滤波作用,使得频域中不同频率的能量重新分配,一部分因为共振腔的共振作用得到强化,另一部分则受到衰减,得到强化的那些频率在时频分析的语图上表现为浓重的黑色条纹。由于能量分布不均匀,强的部分犹如山峰一般,故而称之为共振峰。在语音声学中,共振峰决定着元音的音质,在计算机音乐中,共振峰是决定音色和音质的重要参数。 4,短时平稳特性:语音信号是一种随时间而变化的信号,主要分为浊音和清音两大类。浊音的基音周期、清浊音信号幅度和声道参数等都随时间而缓缓变化。由于发生器官的惯性运动,可以认为在一小段时间里(一般为10~30ms)语音信号的频域特性近似不变,即语音信号具有短时平稳性。因而处理语音信号之前要把语

常用的8种数字滤波算法

常用的8种数字滤波算法 摘要:分析了采用数字滤波消除随机干扰的优点,详细论述了微机控制系统中常用的8种数字滤波算法,并讨论了各种数字滤波算法的适用范围。 关键词:数字滤波;控制系统;随机干扰;数字滤波算法 1 引言 在微机控制系统的模拟输入信号中,一般均含有各种噪声和干扰,他们来自被测信号源本身、传感器、外界干扰等。为了进行准确测量和控制,必须消除被测信号中的噪声和干扰。噪声有2大类:一类为周期性的,其典型代表为50 Hz 的工频干扰,对于这类信号,采用积分时间等于20 ms整倍数的双积分A/D转换器,可有效地消除其影响;另一类为非周期的不规则随机信号,对于随机干扰,可以用数字滤波方法予以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少干扰信号在有用信号中的比重,因此他实际上是一个程序滤波。 数字滤波器克服了模拟滤波器的许多不足,他与模拟滤波器相比有以下优点: (1)数字滤波器是用软件实现的,不需要增加硬设备,因而可靠性高、稳定性好,不存在阻抗匹配问题。 (2)模拟滤波器通常是各通道专用,而数字滤波器则可多通道共享,从而降低了成本。 (3)数字滤波器可以对频率很低(如0.01 Hz)的信号进行滤波,而模拟滤波器由于受电容容量的限制,频率不可能太低。 (4)数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。 2 常用数字滤波算法 数字滤波器是将一组输入数字序列进行一定的运算而转换成另一组输出数字序列的装置。设数字滤波器的输入为X(n),输出为Y(n),则输入序列和输出序列之间的关系可用差分方程式表示为: 其中:输入信号X(n)可以是模拟信号经采样和A/D变换后得到的数字序列,也

基于Matlab数字带通滤波设计

《数字信号处理课程设计报告》 课程设计题目:数字带通滤波设计 学院:信息工程学院 专业:通信工程 班级: 学生姓名: 指导老师: 日期:2012年5月4日至17日

目录 1. 课程设计的目的和意义 (3) 1.1课程目的 (3) 1.2实验意义 (3) 2.课程设计题目描述及要求 (4) 3.实验内容 (4) 3.1数字滤波器的简介 (4) 3.2 椭圆数字带通滤波器设计原理 (4) 3.3实验流程框图 (5) 3.4实验步骤 (7) 3.5 程序代码 (8) 3.6实验仿真结果图 (9) 3.7实验结果分析 (10) 4.实验总结 (10) 参考文献 (11)

1.课程设计的目的和意义 1.1课程目的 (1) 学习椭圆模拟带通滤波器的设计。 (2) 使用椭圆模拟带通滤波器逼近数字带通滤波器。 (3) 双线性变换法的应用原理。 (4) 使用matlab对滤波器进行仿真和频谱分析。 1.2实验意义 数字滤波器是个离散时间系统(按预定的算法,将输入离散时间信号换为所要求的输出离散时间信号的特定功能装置)。应用数字滤波器处理模拟信号时,首先须对输入模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的抽样率应大于被处理信号带宽的两倍,其频率响应具有以抽样频率为间隔的周期重复特性,且以折叠频率即1/2抽样频率点呈镜像对称。为得到模拟信号,数字滤波器处理的输出数字信号须经数模转换、平滑。数字滤波器具有高精度、高可靠性、可程控改变特性或复用、便于集成等优点。数字滤波器在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域都得到了广泛应用。 利用Matlab设计滤波器,可以按照设计要求非常方便地调整设计参数,极大地减轻了设计的工作量,有利于滤波器设计的最优化。Matlab因其强大的数据处理功能被广泛应用于工程计算,其丰富的工具箱为工程计算提供了便利,利用Matlab信号处理工具箱可以快速有效地设计各种数字滤波器,设计简单方便。本文介绍了在Matlab环境下滤波器设计的方法和步骤。

matlab滤波器设计

长安大学 数字信号处理综合设 计 专业_______电子信息工程_______ 班级__24030602___________ 姓名_______张舒_______ 学号2403060203 指导教师陈玲 日期_______2008-12-27________

一、课程设计目的: 1. 进一步理解数字信号处理的基本概念、基本理论和基本方法; 2.熟悉在Windows环境下语音信号采集的方法; 3.学会用MATLAB软件对信号进行分析和处理; 4.综合运用数字信号处理理论知识,掌握用MATLAB软件设计FIR和IIR数字滤波器的方法; 5. 提高依据所学知识及查阅的课外资料来分析问题解决问题的能力。 二、课程设计内容: 1.语音信号的采集 利用windows下的录音机录制一段自己的话音,时间控制在1秒左右;并对语音信号进行采样,理解采样频率、采样位数等概念。 2.语音信号的频谱分析 利用函数fft对采样后语音信号进行快速傅里叶变换,得到信号的频谱特性。 3.设计数字滤波器 采用窗函数法和双线性变换法设计下列要求的三种滤波器,根据语音信号的特点给出有关滤波器的性能指标: 1)低通滤波器性能指标,fp=1000Hz,fc=1200Hz, As=100dB,Ap=1dB; 2)高通滤波器性能指标,fc=4800Hz,fp=5000Hz ,As=100dB,Ap=1dB; 3)带通滤波器性能指标,fp1=1200Hz,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。 4.对语音信号进行滤波 比较用两种方法设计的各滤波器的性能,然后用性能好的滤波器分别对采集的语音信号进行滤波;并比较滤波前后语音信号的波形及频谱,分析信号的变化。 5.回放语音信号,感觉滤波前后的声音变化。 三、实验原理 (一)基于双线性Z变换法的IIR数字滤波器设计 由于的频率映射关系是根据推导的,所以使jΩ轴每隔2π/Ts便映射到单位圆上一周,利用冲激响应不变法设计数字滤波器时可能会导致上述的频域混叠现象。为了克服这一问题,需要找到由s平面到z平面的另外的映射关系,这种关系应保证: 1) s平面的整个jΩ轴仅映射为z平面单位圆上的一周; 2) 若G(s)是稳定的,由G(s)映射得到的H(z)也应该是稳定的; 3) 这种映射是可逆的,既能由G(s)得到H(z),也能由H(z)得到G(s); 4) 如果G(j0)=1,那么。 双线性Z变换满足以上4个条件的映射关系,其变换公式为

基于matlab的数字识别系统设计

数字识别系统 1.绪论 1.1研究背景 1.1.1索书号的简介 索书号是图书馆赋予每一种馆藏图书的号码,这种号码具有一定结构并带有特定的意义。在馆藏系中,每种书的索书号是唯一的,可准确地确定馆藏图书在书架上的排列位置,它是读者查找图书必要的代码信息。 索书号通常是根据中国图书资料分类法编排的【1】——简称《中图法》。《中图法》采拉丁字母和阿拉伯数字相结合的混合标记符号。根据图书的学科主题,以拉丁字母标记并顺序展列出22个基本大类,其中没有L、M和Y开头的——参考附录1中图法简表。由于“T工业技术”的大类范围广泛、内容繁多,故又在该类基础上采用双位拉丁字母标记出16个二级类目,如TK、TL、TM和TN等。字母之后再用阿拉伯数字对大类进行细分。如B表示哲学、宗教一大类;B020则表示宗教理论。有的图书馆如清华大学还在图书分类号码后添加按照图书作者姓名所编排的著者号码,或者是按照图书进馆时间的先后所取用的顺序号码。 不同索书号确定排列先后顺序的步骤是,先比较分类号码:如分类号码相同再比较著者号码 或顺序号码。最后按照字母表和数字大小的顺序排列。 1.1.2书库中图书查找存在的问题 随着电子计算机和网络技术的发展,现代图书馆都已经广泛建立电子数据库图书管理系统, 方便用户查找、阅览书籍。读者借图书的流程如图2所示,一般利用书目查询系统,根据图书的 书名,出版社,作者以及书的内容等在电子数据库中检索自己需要的图书,记录图书相关信息。 最后,根据图书的索书号,快速方便地在书库中找到相应的图书。但是,经常会遇到下列问题:电子数据库系统显示图书状态为“归还”,利用检索到号,却无法在书库找到此书。出现这种情况主要有两个原因:(1)图书错位放置,即图书在书库中摆放的位置与索书号不一致。(2)图书已经丢失,即虽然电子数据库中显示图书状态为“归还”,但实质图书已经丢失,并不在书库中。随着图书馆藏书数目的不断增加,每天借阅的人数增多,而且有的图书馆发展成拥有几个分馆,上述问题越来越严重。这一方面严重降低了图书馆的资源的利用率;另一方面,浪费了读者的时间,造成了很大麻烦。 目前,图书馆主要通过定期的人工检查发现书库中错位和丢失的图书。但是,由丁馆藏图书

实验4 基于MATLAB的FIR数字滤波器设计

实验4 基于MATLAB 的FIR 数字滤波器设计 实验目的:加深对数字滤波器的常用指标和设计过程的理解。 实验原理:低通滤波器的常用指标: P P P for H Ω≤Ω+≤Ω≤-,1)(1δδ πδ≤Ω≤Ω≤ΩS S for H ,)( 通带边缘频率P Ω,阻带边缘频率S Ω ,通带起伏 P δ, 通带峰值起伏] )[1(log 2010dB p p δα--=, 阻带起伏s δ,最小阻带衰减])[(log 2010dB s S δα-=。 数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。 在MATLAB 中,可以用b=fir1(N,Wn,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。N 代表滤波器阶数;Wn 代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning chebwin, kaiser 产生。 例1 用凯塞窗设计一FIR 低通滤波器,通带边界频率π3.0=Ωp ,阻带边界频率π5.0=Ωs ,阻带衰减 不小于50dB 。 解 首先由过渡带宽和阻带衰减 来决定凯塞窗的N 和 π2.0=Ω-Ω=?Ωp s , , S P P S Passband Stopband Transition band Fig 1 Typical magnitude specification for a digital LPF

数字滤波器matlab的程序

数字滤波器matlab的源代码 function lvbo(Ua,Ub,choise) %参考指令:lvbo(2*pi,10*pi,1/0/-1) U1=min(Ua,Ub); U2=max(Ua,Ub); Us=16*U2; T=2*pi/Us; T_sum=4*max(2*pi/Ua,2*pi/Ub); sum=T_sum/T; t=T:T:T_sum; x=sin(U1*t)+0.8*sin(U2*t); X=DFT(x); figure(1); subplot(221) U=Us/sum:Us/sum:Us; stem(U,abs(X));grid on axis([Us/sum,Us/2,0,1.2*max(abs(X))]) title('原模拟信号采样频谱图') Ucd=U1+(U2-U1)*1/5;Usd=U2-(U2-U1)*1/5; switch choise case 1 Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); case -1 Hz_ejw=IIR_DF_CF(Ucd,1,Usd,30,T,sum); case 0 Hz_ejw=FIR_DF_HM(U1,U2,T,sum); otherwise Hz_ejw=IIR_DF_BW(Ucd,1,Usd,30,T,sum); end Y=X.*Hz_ejw; y=1/sum*conj(DFT(conj(Y))); figure(1); subplot(224) plot(t,real(y)); title('模拟信号滤波后');grid on axis([0,T_sum,-max(real(y))*1.5,max(real(y))*1.5]) subplot(222); plot(t,x); hold on

基于matlab-汽车号牌识别系统设计

汽车号牌识别系统设计 ** 中文摘要:随着二十一世纪到来,经济快速发展和人们生活水平显著提高,汽车逐渐成为家庭的主要交 通工具。汽车的产量快速增多,车辆流动也变得越来越频繁,因此给交通带来了严重问题,如交通堵塞、交通事故等,智能交通系统(Intelligent Transportation System)的产生就是为了从根本上解决交通问题。在智能交通系统中车牌识别技术占有重要位置,车牌识别技术的推广普及必将对加强道路管理、城市交通事故、违章停车、处理车辆被盗案件、保障社会稳定等方面产生重大而深远的影响。 该设计主要研究基于MATLAB 软件的汽车号牌设别系统设计,系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五大核心部分。系统的图像预处理模块是将图像经过图像灰度化、图像增强、边缘提取、二值化等操作,转换成便于车牌定位的二值化图像;利用车牌的边缘、形状等特征,再结合Roberts 算子边缘检测、数字图像、形态学等技术对车牌进行定位;字符的分割采用的方法是将二值化后的车牌部分进行寻找连续有文字的块,若长度大于设定的阈值则切割,从而完成字符的分割;字符识别运用模板匹配算法完成。以上每个功能模块用MATLAB 软件实现,最后识别出车牌,在研究设计的同时对其中出现的问题进行具体分析、处理,并寻求更优的方法。 关键词:MATLAB ,车牌识别系统,字符识别,图像处理 一、总体设计 汽车号牌识别系统技术是从一幅车辆图像中准确定位出车牌区域,然后经过字符切割和字符识别来实现车辆牌照的自动识别。主要流程图如下: 图1.1 二、总体功能模块 基于MA TLAB 车牌识别系统主要包括图像采集、图像预处理、车牌定位、字符分割、字符识别五个关键环节[11],其基本工作如下: (1) 图像采集:使用摄像头、照相机拍摄采集图像。 读取图片 图像预处理 车牌定位 字符分割 模板库 字符识别

基于matlab变声器的设计

基于matlab变声器的设计 【摘要】为了实现由男声变换到女声,在语音信号参数分析过程采用短时自相关法提取语音信号的基音周期,同时用LPC倒谱分析法分析共振峰的范围,通过matlab编写程序修改语音参数并接近于女声的范围,构置GUI界面。在实验中,输入一段语音信号,输出时即实现了由男声到女声的变换效果。因此对于语音信号参数的修改能够实现男女声音之间的变换。 【关键词】短时自相关法;LPC倒谱;语音信号;matlab;GUI 随着生活水平的提高,科技的不断进步,很多人为了娱乐,从而希望改变自己的声音;还有如今的许多的访问节目为了保护被访问者,都对声音进行了相应的处理。本设计通过编写matlab程序,修改相关声音参数,使其频率发生相应的变化,在输出时达到变声。 1.变声原理 在进行性别变声时,主要考虑基音周期、基频和共振峰频率的变化。其中男生、女生和和童声的基频、共振峰的关系如图1所示;基音周期改变时,基频、共振峰同时变化,若伸展既有男变女、女变童,反之亦可。本实验是基于男生录制的声音进行相关参数提取,修改接近于女声,实现男声到女声的变换。 2.提取参数 2.1 基于短时自相关法的基音周期估值 进行自相关的计算可采用两种方法,一种是对语音信号进行低通滤波,另一种是对语音信号进行中心削波处理。本实验采用第一种方法,通过matlab③编程采用自相关算法可以实现基音周期的估值,即对语音信号进行低通滤波,然后进行自相关计算。在低通滤波时,采用巴特沃斯滤波器。 2.1.1 构建巴特沃斯低通滤波器 根据人的说话特征设定相应指标参数,对本段语音设计算出巴特沃斯模拟滤波器的阶数N为5,3dB截止频率,,算出为0.175,归一化低通原型系统函数为: 根据设定的滤波器编写matlab程序,当信号经过低通滤波器后,对原始信号滤波产生结果如图2所示,低通滤波后,保留基音频率,然后再用2kHz采样频率进行采样,采样序列为x(n),后进行下一步的自相关计算。 2.1.2 语音信号的短时自相关函数① 定义语音信号自相关函数如下:

十一种软件数字滤波算法

1 数字滤波 1.1 概述 在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。 采用数字滤波算法克服随机干扰的误差具有以下优点: 1、数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻 抗匹配问题。尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。 2、数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统 开支。 3、只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这 对于滤除低频干扰和随机信号会有较大的效果。 4、在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤 波法、加权平均滤波法、滑动平均滤波等。 1.2 限幅滤波算法 原理:该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则放弃本次值取上次采样值作为本次数据的样本。 优点:能有效克服因偶然因素引起的脉冲干扰。 缺点:无法抑制那种周期性的干扰,平滑度差。 说明:限幅滤波法主要用于处理变化较为缓慢的数据,如温度、物体的位置等。使用时,关键要选取合适的门限制A。通常这可由经验数据获得,必要时可通过实验得到。 1.3 中值滤波算法 原理:该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。

实验11 用MATLAB设计FIR数字滤波器

实验11 用MATLAB 设计FIR 数字滤波器 一、实验目的: 1、加深对窗函数法设计FIR 数字滤波器的基本原理的理解。 2、学习用MA TLAB 语言的窗函数法编写设计FIR 数字滤波器的程序。 3、了解MATLAB 语言有关窗函数法设计FIR 数字滤波器的常用函数用法。 二、实验内容及步骤 2、选择合适的窗函数设计FIR 数字低通滤波器,要求: w p =0.2π,R p =0.05dB ; w s =0.3π,A s =40dB 。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。 分析:根据设计指标要求,并查表11-1,选择汉宁窗。程序清单如下: function hd=ideal_lp(wc,N) wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; tao=(N-1)/2; n=[0:(N-1)]; m=n-tao+eps; hd=sin(wc*m)./(pi*m); function[db,mag,pha,grd,w]=freqz_m(b,a); [H,w]=freqz(b,a,1000,'whole'); H=(H(1:501))';w=(w(1:501))'; mag=abs(H); db=20*log10((mag+eps)/max(mag)); pha=angle(H); grd=grpdelay(b,a,w); wp=0.2*pi;ws=0.3*pi;deltaw=ws-wp; wc=(ws+wp)/2; 课程名称:数字信号处理 实验成绩: 指导教师: 实 验 报 告 院系: 信息工程学院 班级: 电信二班 学号: 姓名: 日期:

基于MATLAB的数字识别

计算机与信息工程学院 本科生毕业论文 基于BP神经网络的手写数字识别算法的设计与实现 班级: 13汉班 学号: 20131102507 姓名:江晓雪 指导教师:李艳玲

2017 年 3 月 31 日 毕业论文目录 1 绪论 (1) 1.1 图像识别的提出 (1) 1.2 图像识别的现状与发展趋势 (1) 2 BP神经网络的概述 (2) 3 手写体数字识别的实现过程 (4) 3.1 整体线路图 (4) 3.2 算法流程 (5) 3.3 图像预处理 (10) 3.4 结果分析 (10) 4 结论 (11) 参考文献 (12) 全文共13 页4834 字

基于BP神经网络的手写数字识别算法的设计与实现计算机与信息工程学院 2013级汉班江晓雪 20131102507 指导教师李艳玲副教授 摘要本文实现了基于MATLAB关于神经网络的手写数字识别算法的设计过程,采用神经网络中反向传播神经网络(即BP神经网络)对手写数字的识别,由MATLAB对图片进行读入、灰度化以及二值化等处理,通过神经网络进行训练和测试。实验证明:该神经网络对手写数字的识别可以达到95.65%。 关键词手写数字识别;BP神经网络;MATLAB语言 1 绪论 1.1 图像识别的提出 图像识别在信息技术发达的今天已经占据了很重要的地位,在我们实际生活中也有很多应用。所谓的图像识别,就是指通过计算机对图像进行相应的处理、分析,来达到识别不同模型的目标和任务的一种技术。对于它的提出,简单的来说,它的发展经历了三个阶段:第一个是文字识别、第二个是数字图像处理与识别、第三个是物体识别。第一种相对来说比较简单,它的研究是从1950年开始的,一般情况是识别字母、符号和数字,无论是印刷体识别还是手写体识别,它的应用都非常广泛,但是也伴随着,这个识别的过程会更加的耗时、费力,无论是人力还是物力,都会有很大的损失;第二种就是我们所说的数字图像处理与识别,在图片的识别过程中,图片识别会有一定的误差,也会带来小小的麻烦;第三就是物体识别,而物体的识别主要指的是:在三维世界中,对于个体、环境的感知和认识进行识别,这不同于二维世界的认知,相对来说是更高级的计算机图像识别,它是以二维世界中对数字图像和模拟图像处理的办法为依据,进行更高一级的,并且结合了现代人工智能技术等学科的研究目标,研究成果已经被广泛的应用在各种工业探测机器人上,为人们的安全提供了很大的帮助。 1.2 图像识别的现状与发展趋势 随着网络的发达、电子的信息化,图像识别的应用已经非常广泛,而主要的

数字变声器的设计

摘要 变声器是通过改变输入音频的音色、音调,并将变声后的音频输出的工具。变声器是通过改变输入音频的音色、音调,并将变声后的音频输出的工具。根据变声器材质不同,变声器分为变声器硬件和变声器软件。变声器硬件,即通过硬件实现变声的工具本次课程设计是数字变声器的设计,整个程序使用MATLAB软件编写的。一个GUI界面实现录入一段10~15秒的语音,同时绘制出该语音的时域波形和频域波形,并实现了对该语音的保存和打开。 关键字:变声器;MATLAB软件;变声基本原理;语音;GUI;

目录 前言 (1) 第1章方案选择 (2) 1.1设计方案 (2) 1.2方案的选择 (2) 第2章变声的基本原理 (3) 2.1 基本概念 (3) 2.2 变声的原理 (4) 2.2.1 生成脉冲序列 (4) 2.2.2 计算预测系数 (5) 2.2.3 声道参数 (5) 第3章程序设计及仿真分析 (7) 3.1程序设计 (7) 3.1.1 分帧处理 (7) 3.1.2 计算预测系数 (7) 3.1.3 计算激励信号 (7) 3.1.4 重建语音 (8) 3.1.5 基音周期 (8) 3.1.6 合成激励的能量 (9) 3.1.7 变声处理 (10) 第4章GUI的设计 (11) 4.1 GUI简介 (11) 4.2 GUI界面设计 (11) 4.3 GUI界面运行流程图 (13) 4.4回调函数 (14) 4.4.1切换按钮 (14) 4.4.2 按钮 (15) 参考文献 (19) 设计总结 (20)

前言 我们每个人的声音不同,源于我们的每个人的音色和音调不同,我们所说的男中音、男高音,就是音调的不同,而即便音调一致,我们依然能区分出两个不同人的声音,或不同乐器的声音,这就是音色的不同。变声器,正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。目前,语音伪装系统(变声器)被广泛应用于社会的各个领域。语音伪装设备经常出现在以下几个方面:为了防止打击报复,保护举报人的人身安全的匿名举报系统;记者采访时对采访对象声音的处理,保护被采访人的安全;应用于电台或电视台,可对热线电话进行声音的处理。独居女士和小孩;可用变声器应付骚扰电话和陌生人来访。另外,在智能手机或者平板电脑等便携式移动终端中利用变声器开发的小游戏等。因此,变声器的应用范围及其广泛。 我们每个人的声音不同,源于我们的每个人的音色和音调不同,我们所说的男中音、男高音,就是音调的不同,而即便音调一致,我们依然能区分出两个不同人的声音,或不同乐器的声音,这就是音色的不同。变声器,正是借助对声音音色和音调的双重复合改变,实现输出声音的改变。 本次课程设计就是运用我们所学到的理论知识,用MATLAB软件来实现对语音信号的变声处理,理论联系实际,从而更好地掌握以及运用所学习的知识。

十种数字滤波方法

1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 自动化科协 C、缺点: 对流量、速度等快速变化的参数不宜 3、算术平均滤波法 A、方法: 连续取N个采样值进行算术平均运算 N值较大时:信号平滑度较高,但灵敏度较低 N值较小时:信号平滑度较低,但灵敏度较高 N值的选取:一般流量,N=12;压力:N=4 B、优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动 C、缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用 比较浪费RAM 4、递推平均滤波法(又称滑动平均滤波法) A、方法: 把连续取N个采样值看成一个队列 队列的长度固定为N 每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进先出原则) 把队列中的N个数据进行算术平均运算,就可获得新的滤波结果

N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4 B、优点: 对周期性干扰有良好的抑制作用,平滑度高 适用于高频振荡的系统 C、缺点: 灵敏度低 对偶然出现的脉冲性干扰的抑制作用较差 不易消除由于脉冲干扰所引起的采样值偏差 不适用于脉冲干扰比较严重的场合 比较浪费RAM 5、中位值平均滤波法(又称防脉冲干扰平均滤波法) A、方法: 相当于“中位值滤波法”+“算术平均滤波法” 连续采样N个数据,去掉一个最大值和一个最小值 然后计算N-2个数据的算术平均值 N值的选取:3~14 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 自动化科协 测量速度较慢,和算术平均滤波法一样 比较浪费RAM 6、限幅平均滤波法 A、方法: 相当于“限幅滤波法”+“递推平均滤波法” 每次采样到的新数据先进行限幅处理, 再送入队列进行递推平均滤波处理 B、优点: 融合了两种滤波法的优点 对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差 C、缺点: 比较浪费RAM 7、一阶滞后滤波法 A、方法: 取a=0~1 本次滤波结果=(1-a)*本次采样值+a*上次滤波结果 B、优点: 对周期性干扰具有良好的抑制作用 适用于波动频率较高的场合 C、缺点:

相关文档
最新文档