MATLAB课设打印Word文档下载推荐.docx
《MATLAB课设打印Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB课设打印Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
I:
\zjk.wav'
);
%读声音文件
N=length(y);
t=0:
1/fs:
(length(y)-1)/fs;
%求出语音信号的长度
Y=fft(y,N);
%快速傅里叶变换
AM=abs(Y)/(N/2);
AM(1,:
)=AM(1,:
)/2;
ff=(0:
N-1)/N*fs;
subplot(2,1,1);
plot(t,y);
%语音信号时域图
subplot(2,1,2);
plot(ff,AM)%语音信号频谱图;
运行如下:
图
(1)时域、频谱图
2、语音信号时域分析
(1)语音信号音量放大
[f1,fs]=audioread('
sound(2*f1,fs)%“2”>
1,所以放大
(2)语音信号音量变小
sound(0.5*f1,fs)%0.5<
1,所以变小
(3)语音信号倒放
[x,fs]=audioread('
y0=flipud(x);
&
flipud实现矩阵上下翻转,从而实现语音倒放
sound(y0,fs);
(4)混音音效
[Y1,fs1]=audioread('
\xqq.wav'
[Y2,fs2]=audioread('
%读取两段不同的音频
y1=Y1(:
1);
y2=Y2(:
%取单声道
T=0.1;
iflength(y1)<
length(y2)
y1=[y1;
zeros((length(y2)-length(y1)),1)];
elseiflength(y1)>
y2=[y2;
zeros((length(y1)-length(y2)),1)];
%比较两段音频的长度,使两个音频长度相等
end
y1=[zeros(T*fs2,1);
y1];
y2=[y2;
zeros(T*fs2,1)];
y3=y1+y2;
%声音合成
sound(y3,fs2);
(5)回音效果
n1=0:
2000;
b=x(:
%产生单声道信号
N=3;
yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[b'
zeros(1,40000)]);
%三次回声滤波器
sound(yy2,fs);
(6)男女变声
定义voice函数功能:
functionY=voice(x,f)%更改采样率使基频改变f>
1降低;
f<
1升高
f=round(f*1000);
d=resample(x,f,1000);
%时长整合使语音文件恢复原来时长
W=400;
Wov=W/2;
Kmax=W*2;
Wsim=Wov;
xdecim=8;
kdecim=2;
X=d'
;
F=f/1000;
Ss=W-Wov;
xpts=size(X,2);
ypts=round(xpts/F);
Y=zeros(1,ypts);
xfwin=(1:
Wov)/(Wov+1);
ovix=(1-Wov):
0;
newix=1:
(W-Wov);
simix=(1:
xdecim:
Wsim)-Wsim;
padX=[zeros(1,Wsim),X,zeros(1,Kmax+W-Wov)];
Y(1:
Wsim)=X(1:
Wsim);
lastxpos=0;
km=0;
forypos=Wsim:
Ss:
(ypts-W)
xpos=round(F*ypos);
kmpred=km+(xpos-lastxpos);
lastxpos=xpos;
if(kmpred<
=Kmax)
km=kmpred;
else
ysim=Y(ypos+simix);
rxy=zeros(1,Kmax+1);
rxx=zeros(1,Kmax+1);
Kmin=0;
fork=Kmin:
kdecim:
Kmax
xsim=padX(Wsim+xpos+k+simix);
rxx(k+1)=norm(xsim);
rxy(k+1)=(ysim*xsim'
end
Rxy=(rxx~=0).*rxy./(rxx+(rxx==0));
km=min(find(Rxy==max(Rxy))-1);
xabs=xpos+km;
Y(ypos+ovix)=((1-xfwin).*Y(ypos+ovix))+(xfwin.*padX(Wsim+xabs+ovix));
Y(ypos+newix)=padX(Wsim+xabs+newix);
调用voice函数实现变声:
%读取声音文件
x=y(:
%读入的y矩阵有两列,取第1列
sound(voice(x,1.4),fs);
%调整voice()第2个参数转换音调,>
1降调,为男声;
<
1升调为女声
3、傅里叶变换性质
(1)尺度变换
%读声音文件
Y=fft(2*y,N);
%快速傅里叶变换
plot(t,2*y);
plot(ff,AM);
尺度变换图如下:
图
(2)尺度变换
(2)抽取
y1=y(:
y2=downsample(y1,1);
%从第一项开始,等间隔1,对y1采样,得到的序列为y2
y1p=fft(y1);
y2p=fft(y2);
n1=length(y1);
w1=fs/n1*(0:
n1-1);
t1=(0:
n1-1)/fs;
n2=length(y2);
w2=fs/n2*(0:
n2-1);
t2=10*(0:
n2-1)/fs;
plot(w2,abs(y2p));
ylabel('
幅值'
xlabel('
频率(hz)'
title('
抽值后频谱'
plot(w1,abs(y1p));
原始频谱'
图形如下:
图(3)抽取图形
(3)插值
y2=dyadup(y1,1);
%从y1中第一个元素开始采样
插值后频谱'
图(4)插值图形
(4)调制与解调
figure
(1);
N=length(f1);
(N-1)/fs;
plot(t,f1);
信息信号的时域波形'
fy1=fft(f1);
w1=0:
fs/(N-1):
fs;
plot(w1,abs(fy1));
信息信号的频谱'
f2=sin(22000*pi*t);
%高频正弦载波
figure
(2);
subplot(3,1,1);
fy2=fft(f2);
N2=length(f2);
w2=fs/N*[0:
N-1];
plot(w2,abs(abs(fy2)));
载波信号的频谱'
f1=f1(:
f3=f1'
.*f2;
%两段波形相乘
subplot(3,1,2);
fy3=fft(f3);
plot(w1,abs(abs(fy3)));
已调信号的频谱'
f4=f3.*f2;
subplot(3,1,3);
fy4=fft(f4);
plot(w1,abs(abs(fy4)));
解调信号的频谱'
解调后波形失真,用滤波器对其进行过滤:
fp1=0;
fs1=5000;
As1=100;
wp1=2*pi*fp1/fs;
ws1=2*pi*fs1/fs;
BF1=ws1-wp1;
wc1=(wp1+ws1)/2;
M1=ceil((As1-7.95)/(2.286*BF1))+1;
N1=M1+1;
beta1=0.1102*(As1-8.7);
Window=(kaiser(N1,