信号的采集与处理.docx

上传人:b****0 文档编号:12817667 上传时间:2023-04-22 格式:DOCX 页数:19 大小:675.11KB
下载 相关 举报
信号的采集与处理.docx_第1页
第1页 / 共19页
信号的采集与处理.docx_第2页
第2页 / 共19页
信号的采集与处理.docx_第3页
第3页 / 共19页
信号的采集与处理.docx_第4页
第4页 / 共19页
信号的采集与处理.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

信号的采集与处理.docx

《信号的采集与处理.docx》由会员分享,可在线阅读,更多相关《信号的采集与处理.docx(19页珍藏版)》请在冰豆网上搜索。

信号的采集与处理.docx

信号的采集与处理

MATLAB与信息处理课程设计

 

课设题目:

语音信号采集与处理

学院:

电气学院

班级:

电科1202

姓名:

沈丹婷

学号:

3120504033

指导老师:

许波

 

2014年7月4日

基于MATLAB的语音信号的采集与处理

电科1202沈丹婷3120504033

一.引言

  随着信息时代和数字世界的到来,数字信号处理已成为今一门极其重要的学科和技术领域。

数字信号处理在通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。

二.MATLAB工具简介

  1.MATLAB是矩阵实验室(Matrix Laboratory)之意,现已发展成为适合多学科,多种工作平台的功能强大的大型软件,已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;

  2.MATLAB的语言特点

  

(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。

MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

  

(2)运算符丰富。

由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。

  (3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

  (4)程序限制不严格,程序设计自由度大。

例如,在MATLAB里,用户无需对矩阵预定义就可使用。

  (5)程序的可移植性很好,基本上不做修改就可在各种型号的计算机和操作系统上运行。

  (6)MATLAB的图形功能强大。

在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。

MATLAB还具有较强的编辑图形界面的能力。

  (7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。

由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

  (8)功能强大的工具箱是MATLAB的另一特色。

MATLAB包含两个部分:

核心部分和各种可选的工具箱。

核心部分中有数百个核心内部函数。

其工具箱又分为两类:

功能性工具箱和学科性工具箱。

功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。

功能性工具箱用于多种学科。

而学科性工具箱是专业性比较强的。

  (9)源程序的开放性。

开放性也许是MATLAB最受人们欢迎的特点。

除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

三、内容要求

1.语音信号的采集及频谱分析

  要求利用Windows下的录音机,录制一段自己的话音,时间在5s内,存为*.WAV的文件。

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。

(五位同学、简单音乐、和弦音乐)

 要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,分析基频。

(1)采集信号代码:

[x,fs,Nbits]=wavread('E:

\shendanting\沈丹婷\SDT')

[x,fs,Nbits]=wavread('E:

\shendanting\沈丹婷\JDYY');

[x,fs,Nbits]=wavread('E:

\shendanting\沈丹婷\HX');

采样频率和采样点数均为

(2)频谱分析代码:

fs=22050;

[x,fs,Nbits]=wavread('E:

\shendanting\沈丹婷\SDT');

t=0:

1/22050:

(length(x)-1)/22050;

sound(x,fs);%对加载的语音信号进行回放

figure

(1)

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

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

xlabel('timen');

ylabel('fuzhin');

figure

(2)

freqz(x)%绘制原始语音信号的频率响应图

title('频率响应图')

n=length(x);%求出语音信号的长度

y1=fft(x,n);%傅里叶变换

y2=fftshift(y1);%对频谱图进行平移

f=0:

fs/n:

fs*(n-1)/n;%得出频点

figure(3)

subplot(2,1,1);

plot(abs(y2))%做原始语音信号的FFT频谱图

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

subplot(2,1,2);

plot(f,abs(y2));%绘制原始语音信号的频谱图

简单音乐及和弦的频谱分析如下:

(简单音乐)

2.理解傅里叶变换的性质

(1)回放

sound(x,fs);

(2)快慢放

w=0.5;M=w*fs;

sound(x,M);

w=2;M=w*fs;(M>1快放,M<1慢放)

sound(x,M);

3.信号的调制解调

代码如下:

clear;

dt=1/44100;

fs=44100;

[f1,fs,nbits]=wavread('E:

\shendanting\沈丹婷\HX');

figure

(1);

subplot(3,2,1);

N=length(f1);

t=0:

1/fs:

(N-1)/fs;

plot(t,f1);

title('信息信号的时域波形');

fy1=fft(f1);

w1=0:

fs/(N-1):

fs;

figure

(2);

subplot(3,2,2);

plot(w1,abs(fy1));

title('信息信号的频谱');

f2=cos(22000*pi*t);

figure(3);

subplot(3,2,3);

fy2=fft(f2);

N2=length(f2);

w2=fs/N*[0:

N-1];

plot(w2,abs(abs(fy2)));

f1=f1(:

1);

f3=f1'.*f2;

figure(4);

subplot(3,2,4);

fy3=fft(f3);

plot(w1,abs(abs(fy3)));

title('已调信号的频谱');

sound(f3,fs,nbits);

f4=f3.*f2;

figure(5);

subplot(3,2,5);

fy4=fft(f4);

plot(w1,abs(abs(fy4)));

sound(f4,fs,nbits);

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,beta1));

b1=fir1(M1,wc1/pi,Window);

figure(6);

freqz(b1,1,512);

title('FIR低通滤波器的频率响应');

f4_low=filter(b1,1,f4);

plot(t,f4_low);

sound(f4_low,fs,nbits);

f5=fft(f4_low);

figure(7);

plot(w1,abs(f5));

4、低通滤波

代码如下:

[x1,Fs,bits]=wavread('E:

\shendanting\沈丹婷\HX');

derta_Fs=Fs/length(x1);%设置频谱的间隔,分辨率,这里保证了x轴的点数必须和y轴点数一致

fs=Fs;

fp1=1000;

fs1=1200;

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,beta1));%求凯泽窗窗函数

b1=fir1(M1,wc1/pi,Window);%wc1/pi为归一化,窗函数法设计函数

figure

(2);

freqz(b1,1,512);%[H,w]=freqz(B,A,N),

(1)中B和A分别为离散系统的系统函数分子、分母多项式的系数向量,返回量H则包含了离散系统频响在0~pi范围内N个频率等分点的值(其中N为正整数),w则包含了范围内N个频率等分点。

调用默认的N时,其值是512。

title('FIR低通滤波器的频率响应');

x1_low=filter(b1,1,x1);%对信号进行低通滤波,Y=filter(B,A,X),输入X为滤波前序列,Y为滤波结果序列,B/A提供滤波器系数,B为分子,A为分母

sound(x1_low,Fs,bits);

figure(3);

subplot(2,1,1);

plot(x1_low);

title('信号经过FIR低通滤波器(时域)');

subplot(2,1,2);

plot([-Fs/2:

derta_Fs:

Fs/2-derta_Fs],abs(fftshift(fft(x1_low))));

title('信号经过FIR低通滤波器(频域)');

5.提高部分

(1)声音信号的放大和衰减

放大:

[y,fs]=wavread('E:

\shendanting\沈丹婷\HX');sound(2*y,fs);

缩小:

[y,fs]=wavread('E:

\shendanting\沈丹婷\HX');sound(0.5*y,fs);

(2)倒放

[y,fs]=wavread('E:

\shendanting\沈丹婷\HX');wavplay(flipud(y),fs,'sync');

(3)混音

%##下面是将两个音频叠加在一块

closeall

clearall

[y,fs]=wavread('G:

\jsdx\jsdx');%打开音频文件(格式为wav的音频文件),所得y为采样数据,fs为采样率

time=(1:

length(y))/fs;%时间轴的向量【(length(y))/fs即为音频文件播放的时间长度】

subplot(3,1,1);

plot(time,y);%画出时间轴上的波形

title('郭振宇的声音');

%sound(y,fs)

[y6,fs6]=wavread('G:

\jsdx\cui');%打开音频文件(格式为wav的音频文件),所得y为采样数据,fs为采样率

time6=(1:

length(y6))/fs6;%时间轴的向量【(length(y))/fs即为音频文件播放的时间长度】

subplot(3,1,2);

plot(time6,y6);%画出时间轴上的波形

title('崔舒扬的声音');%sound(y6,fs6)

%下面将两个音频叠加在一块

[m,n]=size(y);%查看y的大小,【此处y是m行,n列的数据】

[m6,n6]=size(y6);%查看y6的大小,【此处y6是m6行,n6列的数据】

z=zeros(max(m,m6)-min(m,m6),n);%生成0矩阵,用于加在时间较短的那么音频的后面

iflength(y)

y1=[y;z];

y8=y1+y6;

sound(y8,fs)

elsey1=[y6;z];

y8=y1+y;

sound(y8,fs)

end;%%%%wavwrite(y8,fs,'111');%保存合成的音频信号,文件夹在matlab--bin

(4)回声

[x,fs,bits]=wavread('G:

\jsdx\jsdx',[140000]);%读取语音信号

n1=0:

2000;

b=x(:

1);%产生单声道信号

N=3;

yy2=filter(1,[1,zeros(1,80000/(N+1)),0.7],[b',zeros(1,40000)]);%IIR滤波器进行滤波

figure(3)

subplot(2,1,1);plot(yy2);%三次回声滤波器时域波形

title('三次回声滤波器时域波形');

YY2=fft(yy2);%对三次回声信号做FFT变换

subplot(2,1,2);plot(n1(1:

1000),YY2(1:

1000));%三次回声滤波器频谱图

title('三次回声滤波器频谱图?

');

figure(4)

subplot(2,1,1);plot(abs(YY2));%经傅里叶变换之后的信号的幅值?

title('幅值');

subplot(2,1,2);plot(angle(YY2));%经傅里叶变换之后的信号的相位?

title('相位');

sound(2*yy2,fs,bits);%经三次回声滤波器后的语音信号,乘以5是为了加强信号

(5)页面设计

心得体会

我们之前并没有接触过这门课程,可能是教学安排上有些小瑕疵,一开始会觉得根本无从下手,没有一点思路,甚至第一天连如何运用这个软件都不知道,但之后的学习过程中,老师也放低了要求,我们也就没有了那么多压力。

XX,请教老师,小组成员互相讨论,一点一滴的慢慢积累,深深地感受到了这款软件的强大威力。

在电视里,特别是动画片中,唐老鸭的声音,或者其他尖锐,低沉的声音,原来都是可以用MATLAB制作出来的,改变频率,幅值,一个小小的变化都会产生极大的效果。

当听见自己的声音就跟用复读机快放一样的时候,心里还是很得意的,短短的几句代码,竟然有如此大的威力,真的得感叹一句科技真伟大。

最有意思的并不是基础部分的程序设计,反而是后面的提高部分,回声,混音,增强,衰减,特别是最后还有个页面设计,我们组的小伙伴特别给力,做出来的效果特别逗,很有喜感。

可惜,男女变声还来不及修改完成,不过如果时间还能充裕一点,我们有信心能把它搞定!

再说说我这次主要完成的版块吧。

我负责的是信号采集和频谱的分析,参与了调制解调,快慢放以及声音信号的放大和衰减。

说实话,一开始当组长交代任务,根本无从下手,只能XXXX,信号的采集和频谱分析网上版本各种各样,最初我们借鉴的那个版本有噪声方面的处理,而且维数也不对,最后我们一起讨论,删减,才得到了最后的终极版。

快慢放还有放大和衰减就相对比较简单,都是短短几句话,通过改变频率,幅值,就可以实现。

我们发现,改变频率会达到快慢放,同时声音也会变尖锐,一开始误以为这就是男女声转换呢。

总之,过程远远比结果精彩,自己从啥也不会,到现在能对MATLAB有所了解,这都是非常令人高兴的事

MATLAB不在于学习本身,在于你对实际问题的理解分析能力和建模能力。

MATLAB作为一种数学工具,广泛用于各个工程领域。

工程技术人员通过MATLAB提供的工具箱和丰富的调用函数,可以完成复杂工程问题的数值求解.并能够将计算结果形象直观地显示出来。

随着应用研究不的不断深入,MATLAB也处在不断发展和完善的过程中。

学习MATLAB可以完全很多实际性的工作,比如说画二维,三维图。

MALAB具有强大的数值计算功能,而MALTAB中带的系统仿真成为大型科研中最得力的助手。

本次课程设计要求我们学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟悉,时间虽短,受益颇深。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1