基于MATLAB的语音信号处理 图像处理相关设计

基于MATLAB的语音信号处理

本文转载自龙行天下《基于MATLAB的语音信号处理》

程序1:用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱

fs=8000;%语音信号采样频率为8000

x1=wavread('pb8k.wav');

t=(0:length(x1)-1)/8000;

y1=fft(x1,2048);%对信号做2048点FFT变换

f=fs*(0:1023)/2048;

figure(1)

plot(t,x1)%做原始语音信号的时域图形

grid on;axis tight;

title('原始语音信号');

xlabel('time(s)');

ylabel('幅度');

figure(2)

plot(f,abs(y1(1:1024)))%做原始语音信号的FFT频谱图

grid on;axis tight;

title('原始语音信号FFT频谱')

xlabel('Hz');

ylabel('幅度');

**************************************************************************************************************************

程序2:给原始的语音信号加上一个高频余弦噪声,频率为3.8kHz。画出加噪后的语音信号时域和频谱

图,与原始信号对比,可以很明显的看出区别。

clear all;

clc;

fs=8000;

x1=wavread('pb8k.wav');

t=(0:length(x1)-1)/8000;

f=fs*(0:1023)/2048;

Au=0.05;

d=[Au*cos(2*pi*3800*t)]';%噪声为3.8kHz的余弦信号

x2=x1+d;

y1=fft(x1,2048);

y2=fft(x2,2048);

figure(1)

plot(t,x2)

grid on;axis tight;

title('加噪后的信号');

xlabel('time(s)');

ylabel('幅度');

figure(2)

subplot(2,1,1);

plot(f,abs(y1(1:1024)));grid on;axistight;

title('原始语音信号频谱');

xlabel('Hz');ylabel('幅度');

subplot(2,1,2);

plot(f,abs(y2(1:1024)));grid on;axistight;

title('加噪语音信号频谱');

xlabel('Hz');ylabel('幅度');

**********************************************************************************************************************

程序3:双线性变换法设计Butterworth滤波器

clear all;

clc;

fs=8000;

x1=wavread('pb8k.wav');

t=(0:length(x1)-1)/8000;

f=fs*(0:1023)/2048;

A1=0.05;A2=0.10;

d=[A1*cos(2*pi*3800*t)+A2*sin(2*pi*3600*t)]';

x2=x1+d;

wp=0.8*pi;

ws=0.85*pi;

Rp=1;

Rs=15;

Fs=8000;

Ts=1/Fs;

wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标

ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数

[Z,P,K]=buttap(N);%创建butterworth模拟滤波器

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn);

[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换

[H,W]=freqz(bz,az);%绘制频率响应曲线

figure(1)

plot(W*Fs/(2*pi),abs(H))

grid on;axis tight;

xlabel('频率(Hz)')

ylabel('频率响应')

title('Butterworth')

f1=filter(bz,az,x2);

figure(2)

subplot(2,1,1)

plot(t,x2)%画出滤波前的时域图

grid on;axis tight;

title('滤波前的时域波形');

subplot(2,1,2)

plot(t,f1);%画出滤波后的时域图

grid on;axis tight;

title('滤波后的时域波形');

y3=fft(f1,2048);

figure(3)

y2=fft(x2,2048);

subplot(2,1,1);

plot(f,abs(y2(1:1024)));%画出滤波前的频谱图

grid on;axis tight;

title('滤波前的频谱')

xlabel('Hz');

ylabel('幅度');

subplot(2,1,2)

plot(f,abs(y3(1:1024)));%画出滤波后的频谱图

grid on;axis tight;

title('滤波后的频谱')

xlabel('Hz');

ylabel('幅度');

%sound(x2,8000);

% sound(f1,8000);

********************************************************************************************************************

程序4:窗函数法设计滤波器:

clear all;

clc;

fs=8000;

x1=wavread('pb8k.wav');

t=(0:length(x1)-1)/8000;

f=fs*(0:2047)/4096;

A1=0.05;A2=0.10;

d=[A1*cos(2*pi*3600*t)+A2*sin(2*pi*3800*t)]';

x2=x1+d;

wp=0.8*pi;

ws=0.85*pi;

wdelta=ws-wp;

N=ceil(6.6*pi/wdelta);%取整

wn=(0.8+0.85)*pi/2;

[bz,az]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率

figure(1)

freqz(bz,az);

grid on;axis tight;

f2=filter(bz,az,x2);

figure(2)

subplot(2,1,1)

plot(t,x2);

grid on;axis tight;

title('滤波前的时域波形');

subplot(2,1,2)

plot(t,f2);

grid on;axis tight;

基于MATLAB的语音信号处理 图像处理相关设计

title('滤波后的时域波形');

y3=fft(f2,4096);

f=fs*(0:2047)/4096;

figure(3)

y2=fft(x2,4096);

subplot(2,1,1);

plot(f,abs(y2(1:2048)));

grid on;axis tight;

title('滤波前的频谱')

xlabel('Hz');

ylabel('幅度');

subplot(2,1,2)

plot(f,abs(y3(1:2048)));

grid on;axis tight;

title('滤波后的频谱')

xlabel('Hz');

ylabel('幅度');

% sound(f2,8000);

***********************************************************************************************************************

程序5

clear all;close all;

t=0:0.01:3;

s=sin(2*pi*5*t)+sin(2*pi*15*t);

w=abs(fft(s));

w2=abs(fft(s,602));

figure;

subplot(211);plot(w);grid on; axistight;

subplot(212);plot(w2);grid on; axistight;

*****************************************************************************************************************************

程序6

clear all;close all;

X=[ones(1,51)zeros(1,60) ones(1,50)]; %Frequency response of an ideal low-pass filter

x=ifft(X); % IDFT of X withthe same number of points

Y=fft(x,483); % IDFT of Xafter it is padded with zeros

stem([1:161]/161-0.5,abs(fftshift(X)));% figure 1

axis([-0.5,0.5,0,1.5]);

figure;

stem(real(x)); % figure2

figure;

stem([1:483]/483-0.5,abs(fftshift(Y)));% figure 3

axis([-0.5,0.5,0,1.5]);

figure;

stem([1:161]/161-0.5,abs(fftshift(Y(1:3:481))));% figure 4

axis([-0.5,0.5,0,1.5]);

**********************************************************************************************************************

程序7

clear all;

clc

wp=0.8*pi;

ws=0.85*pi;

wdelta=ws-wp;

N=ceil(6.6*pi/wdelta);

wn=(0.8+0.85)*pi/2;

[bz,az]=fir1(N,wn/pi,hamming(N+1));

w=abs(fft(bz));w2=abs(fft(bz,399));

figure;

subplot(211);plot(w);grid on; axistight;

subplot(212);plot(w2);grid on; axistight;

-------------------------------------------------

h(1:201)=1;h(22:181)=0;

x1=ones(1,17);x2=ones(1,11);

w1=fft(x1,32);w2=fft(x2,32);

w3=w1.*w2; x3=ifft(w3);plot(x3);

  

爱华网本文地址 » http://www.413yy.cn/a/25101011/79078.html

更多阅读

matlab的使用:8 如何画不同类型的三维图像

matlab的使用:[8]如何画不同类型的三维图像——简介这是本系列经验的第八篇,主要介绍用matlab软件画三维图像的一些相关函数,使用这些函数可以很方便的画出想要的图形,非常直观好用。matlab的使用:[8]如何画不同类型的三维图像——工具/

不用的银行卡怎么处理 银行卡怎么注销

不用的银行卡怎么处理——简介我们每个人都有很多的银行卡,到了不同的地区或是工作单位就要更换我们的银行卡。那么多余的银行卡我们该怎么处理呢?不用的银行卡怎么处理——工具/原料银行卡不用的银行卡怎么处理——方法/步骤不用的

耳朵痛可能的原因和处理方法 耳朵里面疼

耳朵是身体五官之一,是我们的身体的听觉器官,平时我们靠它来接收和识别外界发出来的声音。因此耳朵是我们人体非常重要的器官,平时在生活中,我们应该要形成良好的生活习惯,保持耳朵正常的听觉功能。作者10年的时候,就因为非常不好的生活

一般纳税人的账务怎样处理? 一般纳税人账务实操

一般纳税人的账务怎么处理,现在整理出来一般纳税人账务处理大全,希望涉及到的各方面,对大家有所帮助。一般纳税人的账务怎样处理?——步骤/方法一般纳税人的账务怎样处理? 1、一、“进项税额”的帐务处理  1.国内购进货物。企业在国

声明:《基于MATLAB的语音信号处理 图像处理相关设计》为网友脏话诗人分享!如侵犯到您的合法权益请联系我们删除