课程名称: Matlab课程设计 . 设计名称: 语音信号的采集和处理 . 小组成员:朱玲、 相国俊、张杰、周毅 、胥杰 .
班 级: J电信1301 .
指导教师: 毛彦欣 . 起止日期: 2015 1.11-1.17 .
题目一:基于MATLAB的语音信号的采集和处理
一、实践的目的和要求
本次课程设计的课题为《基于MATLAB的语音信号采集与处理》,学会运用MATLAB的信号处理功能,采集语音信号,并对语音信号进行滤波及变换处理,观察其时域和频域特性,加深对信号处理理论的理解,并为今后熟练使用MATLAB进行系统的分析仿真和设计奠定基础。
此次实习课程主要是为了进一步熟悉对matlab软件的使用,以及学会利用matlab对声音信号这种实际问题进行处理,将理论应用于实际,加深对它的理解。
二.本课题的设计要求及设计方案概
1:使用wavrecord录入自己的语音信号,使用save函数进行保存后使用wavplay 函数进行播放。
2:使用plot再画出该语音信号的时域波形,对原始波形进行用fft函数傅里叶
变换后,使用plot画出其频谱。
3:用窗函数法和双线性法分别设计低通,高通,带通滤波器对原始信号进行滤波。
4: 画出滤波后的信号时域、频域图 三.设计过程
1.使用wavrecord录入自己的语音信号.简单音乐信号和和弦音乐信号。并且分析各自语音信号的时域的不同点并且用fft函数对信号进行快速傅立叶变换并进行频谱分析,实现程序如下:
[x,fs,Nbits] =wavread('h15.wav') ; %读声音文件 n=length(x);
t=0:1/fs:(length(x)-1)/fs; %求出语音信号的长度 y1=fft(x,n) ; %傅里叶变换
y2=fftshift(y1); %对频谱图进行平移
f=0:fs/n:fs*(n-1)/n; %得出频点 subplot(2,1,1); plot(t/2,x) %做原始语音信号的时域图形 title('原始信号时域波形图'); subplot(2,1,2); plot(f,abs(y2));
title('原始信号频谱图')
分别得到我们组各个同学的时域和频域信号波形图:
相国俊 胥杰
张杰 周毅
朱玲
简单音乐信号和和弦音乐信号的对比图:
简单音乐信号 和弦音乐信号
2.语音信号的时域处理
(1)对信号进行时域尺度变换,抽取于插值,实现语音信号的快放,慢放,倒放;在matlab中,可以用sound函数对声音进行回放。实现
程序如下:
[x,fs,Nbits] =wavread('h15.wav') ; t=0:1/fs:(length(x)-1)/fs; a=1
sound(x,a*fs) ; %对加载的语音信号进行回放 pause(3) a=2
sound(x,a*fs) ; %对加载的语音信号进行快放 pause(3) a=0.5
sound(x,a*fs) ; %对加载的语音信号进行慢放 倒放程序实现如下:
[y,fs,nbits]=wavread('h15.wav'); t=0:1/fs:(length(y)-1)/fs; a=flipud(y); sound(a,fs);
(3)实现语音信号的调制与解调,实现程序如: clear; dt=1/44100; fs=44100;
[f1,fs,nbits]=wavread('h15.wav'); figure(1); subplot(1,1,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(1,1,1); plot(w1,abs(fy1));
title('信息信号的频谱');
f2=cos(22000*pi*t); figure(3);
subplot(1,1,1); fy2 = fft(f2); N2=length(f2); w2=fs/N*[0:N-1];
plot(w2,abs(abs(fy2))); title('载波信号的频谱');