以下为《《数字信号处理课程设计》报告》的无排版文字预览,完整内容请下载
/
《数字信号处理课程设计》报告
题目:运用MATLAB的男女声分离系统设计
学 院 电子信息***
专 业 通信工程
学生1姓名学号 秦某某P***
学生2姓名学号 周某某P***
指导教师 潘某某
课程编号 SJ35015
课程学分 2
起始日期 2020.12
成绩记录表
课程设计题目
运用MATLAB的男女声分离系统的设计
考核环节
考核内容
学号
姓名
P***
周某某
P***
秦某某
课程设计报告
报告的完整性和规范性(20分)
方案设计合理性(20分)
软件仿真及测试验证
软件仿真设计(30分)
参数设计及测试分析(10分)
答辩
PPT制作(10分)
问题回答(10分)
合计
答辩问题记录:
1、如何解决男女声分离不纯的问题?
我们的设计是将语音信号进行快速傅立叶变换得到频谱图,按照频谱图设计滤波器,从而得到男声和女声部分。只能通过改变滤波器的参数,来逐步修正,如果在某个频段男女声重叠,我们所设计的方案无法解决。最后选择更换样本。2、传统的男女声分离系统解决重叠问题较困难有没有考虑别的办法? 有的。我们通过参考其他资料发现还可以通过算法进行盲源分离。但是由于知识储备不够没有进行深一步研究。
评定意见:
目录
一、引言 1
二、设计目的 1
三、设计要求 1
四、设计及原理 2
4.1总体设计方案 2
五、设计原理 3
5.1 快速傅立叶变换 3
5.2滤波器的设计 3
5.2.1 巴特沃斯低通滤波器的设计——双线性变换法 4
5.2.2 巴特沃斯低通滤波器的设计——冲激响应不变法 5
5.3 用滤波器对信号滤波 6
5.4 演示界面的设计 6
六、软件编程设计与实现 7
6.1程序流程图 7
6.2实验结果 7
6.2.1原始信号时域频域图 7
6.2.2 巴特沃斯低通滤波器的设计——双线性变换法 8
6.2.3 巴特沃斯低通滤波器的设计——冲激响应不变法 9
6.2.4 巴特沃斯带通滤波器的设计 10
6.2.5 经滤波后的男声语音时域频域图 11
6.2.6 经滤波后的女声语音时域频域图 12
6.2.7 经放大后的男声时域频域图 13
6.2.8 男声变调 13
6.2.9 GUI界面的设计 14
6.3 实验结果分析 16
七、遇到的问题及解决方案 16
7.1问题一 16
7.2 问题二 17
7.3 问题三 17
7.4 问题四 18
八、结束语 18
8.1团队分工 18
8.2个人小结 18
参考文献: 20
附录: 20
运用MATLAB的男女声分离系统的设计
一、引言
声音信号的采集和分析处理是信息工程的应用中关键的一步。如何对声音信号进行采集,并对其进行分析处理,是现代信息科研工作者研究的重要课题之一,对我国现代信息科学的发展具有重要意义。
Matlab拥有强大的数据处理能力,编程简单,操作容易,在各种信号的分析处理中广泛使用,简化分析过程,提高了工作效率。在信号处理的过程中,通常使用Matalb读入音频文件中的声音信号,得到其时域、频域图,然后通过合适的滤波器去除不需要的信号,对所得的信号进行进一步分析。
男女说话的声音音调不一样,主要是由于男生与女生声带的长短粗细有差别。男性的声带长而宽,长度一般在20-24毫米,发出的声音音调就粗低;女性的声带短而狭,只有15-18毫米,发出高而细的声音。其反映到频谱上时,男声频谱集中在低频阶段,女声频谱集中在高频阶段。
二、设计目的
利用所学数字信号处理知识,制作男女声分离系统:对一段男女声混合的声音信号或者音乐信号,寻找合适的滤波器进行分离,接着实现男声放大及男声变女声功能。从而达成以下几种方面的提升:
① 掌握滤波器的设计方法。
② 更清晰直观的了解频谱搬移电路。
③ 掌握快速傅立叶变换的应用。
④ 强化Matlab的使用。
三、设计要求
1.选用一段男女声混合的语音/音乐信号,在Matlab软件平台下,利用函数对语音信号进行采样,记录采样频率和采样点数。画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性,分析基频。
2.根据选用的声音信号频谱分析结果,确定合适的滤波器指标,根据指标设计出相应的滤波器,并画出滤波器的频率响应图。
3.用所设计的滤波器对采集的信号进行滤波,得到男声部分和女声部分。在Matlab中, IIR滤波器利用函数filter对信号进行滤波。在一个窗口同时画出滤波前后的波形及频谱,并进行分析。
4.对男声部分进行放大及频谱搬移,实现男声变女声功能。
5.利用sound函数对声音进行回放。分别播放原声、男声部分与女声部分、放大后的男声及男声变女声后的声音。
6.设计一个GUI演示界面。
四、设计及原理
4.1总体设计方案
下载一段男女声混合的音乐信号“qiantui.mp3”,在Matlab软件平台下,利用audioread函数对语音信号进行采样记为Fs_1,同时记录采样率X_1。画出语音信号的时域波形,然后对语音号进行快速傅里叶变换,得到信号的频谱特性,分析基频。
根据选用的声音信号频谱分析结果,选用巴特沃斯低通滤波器,确定合适的滤波器指标设计滤波器并用filter函数进行滤波,画出滤波器的频率响应图。在一个窗口同时画出滤波前后的波形及频谱,并进行分析。将分理出的男声部分进行幅值放大并进行频谱搬移,使男声变女声。
最后利用sound函数对声音进行回放。分别播放原声、男声部分、女声部分、放大后的男声部分以及男声变女声部分并设计GUI界面进行成果演示。总体设计框图如图1所示:
图1 总体设计框图
五、设计原理
5.1 快速傅立叶变换
快速傅里叶变换 (fast Fourier transform), 即利用计算机计算离散傅里叶变换(DFT)的高效、快速计算方法的统称,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅立叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。
5.2滤波器的设计
巴特沃斯(Butterworth)滤波器是一种具有最大平坦幅度响应的低通滤波器,它在通信领域内已有广泛应用,本文根据信号特征选择巴特沃斯低通滤波器对男女混叠信号中的女音进行滤波,选用巴特沃斯带通滤波器对男女混叠信号中的男音进行滤波。Matlab提供了丰富的用于模拟滤波器的设计函数,通过编程实现低通、高通、带通、带阻滤波器,并能画出滤波器的幅频特性曲线,简化了模拟滤波器的设计。
本系统利用Matlab实现巴特沃斯滤波器的设计,在Matlab中给定通带截止频率
f
p
、阻带截止频率
f
s
、通带所允许的最大衰减
r
p
、阻带所允许的最大衰减
r
s
,利用[N_1,wn]=buttord(wap,was,rp,rs,'s');求出巴特沃斯模拟滤波器的阶数。
巴特沃斯低通滤波器的幅度平方函数
H
a
jΩ
2
用下式(1)表示:
??
??
??Ω
2
=
1
1+
Ω
Ω
??
2??
(1)
其中N为滤波器的阶数:
Ω= 0 时,
??
??
??Ω
2
=1 ,无衰减;
Ω=
Ω
??
时,
??
??
??Ω
2
=
1
2
(
Ω
??
是3dB截止频率);
N决定了幅度的下降速度,N越大,通带就越平坦,过渡带也随之变窄,阻带幅度同过渡带下降的速度越迅速,总体频响特性同理想低通滤波器的实际误差越小。
用s代替??Ω,把幅度平方函数
??
??
??Ω
2
变成??的函数:
??
??
??
??
??
???
=
1
1+
s
jΩ
??
2??
(2)
??=??+??Ω,公式(2)说明了幅度的平方函数有2??个极点,极点
??
??
可以用下面的公式来表达:
??
??
=
?1
1
2??
??
Ω
??
=
Ω
??
??
??
1
2
+
2??—1
2??
??
,??=1,2,…,2?? (3)
2??极点等间隔分布在半径为
Ω
??
的圆上,间隔是
??
??
??????。为形成稳定的滤波器,2??个极点中只取??平面左半平面的??个极点构成
??
??
??
,而右半平面的??个极点构成
??
??
??
,而右半平面的??个极点构成
??
??
???
。
??
??
??
=
Ω
??
??
?=1
??
???
??
??
(4)
5.2.1 巴特沃斯低通滤波器的设计——双线性变换法
双线性变换法是使数字滤波器的频率响应与模拟滤波器的频率响应相似的变换,它使得Ω和??之间是单值映射关系,可以避免频率响应的混叠失真。Butterworth低通滤波器的基本思想就是根据一些给出的技术指标,,和得到阶数N和截止频率。
=时,; (5)
=时,; (6)
由上述两个方程求得式:
(7)
因此
或者 (8)
而系统函数为
(9)
所以
(10)
(11)
得到
(12)
据以上分析可以得到一个巴特沃斯型的模拟低通滤波器设计。
双线性变换法将s平面映射到z平面的关系为:
或 (13)
其中T为参数,s和z是双线性的,由下图可以得到:
/
图 2 双线变换的复平面映射图
当时:
,将代入得到
由于幅度为1,所以有
(14)
5.2.2 巴特沃斯低通滤波器的设计——冲激响应不变法
巴特沃斯低通滤波器,其设计步骤如下所述:
设模拟滤波器的系统函数只有单某某,且分母的阶次大于分子的阶次,因此可将展开成部分分式表达式:
(15)
式中,是的单阶极点。
求的拉普拉斯反变换,得到
(16)
式中,表示拉普拉斯反变换,是单位阶跃函数。
对进行等间隔采样,采样间隔为,得到数字滤波器的单位冲激响应
(17)
对进行变换,得到数字滤波器的系统函数
(18)
由分析可知,数字滤波器的频率响应还与采样间隔成反比,如果采样频率很高,即很小,那么滤波器增益会太高,这样不好,因而希望数字滤波器的频率响应不随采样频率而变化,故作以下修正
(19)
5.3 用滤波器对信号滤波
滤波器通常利用分母系数向量和分子系数向量两个参数来控制Matlab中的滤波函数,Matalb软件中主要有fftfilt、filter等几种滤波函数。
本系统声音信号值y1=filter(bz,az,X_1);,在滤波器进行声音过滤时,输入的信号为X_1,其分母系数向量和分子系数向量分别为az,bz,此 Matlab函数 使用由分子和分母系数 b 和 a 定义的有理传递函数 对输入数据 x 进行滤波。
5.4 演示界面的设计
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。?
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。
六、软件编程设计与实现
6.1程序流程图
图3 男女声分离系统总体流程图
6.2实验结果
6.2.1原始信号时域频域图
通过audioread函数得到原始的音频数据并存储到X中,再通过调用sound函数回放原始音频信号。利用length返回音频文件的采样点数n。对X做快速傅里叶变换,由于序列的快速傅里叶变换是关于n/2对称的,选取前一半的点数,绘制原始语音信号采样后的时域波形图与频谱图。其Matlab实现如下:
[X_1,Fs_1] = audioread('qiantui.mp3');
X_1=X_1(:,1);
n_1=length(X_1);
yp_1=fft(X_1,n_1);
f_1=Fs_1*(0:n_1/2-1)/n_1;
axes(handles.axes1)
subplot(2,1,1);
plot(X_1);
title('原始语音信号采样后的时域波形图');
xlabel('采样点数');ylabel('幅值');
subplot(2,1,2);
plot(f_1,abs(yp_1(1:n_1/2)));
axis([0 2500 0 6000]);
title('原始语音信号采样后的频谱图');
xlabel('频率');ylabel('幅值')
原始语音信号采样后的时域波形图与频谱图如图4所示:
图4 原始语音信号采样后的时域以及频域波形图
6.2.2 巴特沃斯低通滤波器的设计——双线性变换法
进行男声分离时,我们采用基于双线性变换法的巴特沃斯低通滤波器进行滤波,其中我们通过观察原始信号的频谱图,设置通带截止频率为259Hz,阻带截止频率为400Hz,通带最大衰减为3dB,阻带最大衰减为30dB,采样频率为44100。
设计代码如下:
fp=259; %通带上截至频率
fs=400; %阻带下截至频率
fst=44100;
rp=3; %通带允许的最大衰减
rs=30; %阻带允许的最大衰减
wp=2*pi*fp/fst;
ws=2*pi*fs/fst;
wap=2*fst*tan(wp/2);
was=2*fst*tan(ws/2);
[N_1,wn]=buttord(wap,was,rp,rs,'s');
[b,a]=butter(N_1,wap,'s');
[bz,az]=bilinear(b,a,fst);
双线性变换法设计的巴特沃斯低通滤波器频响图如下图所示:
图5 双线性变换法设计的巴特沃斯低通滤波器频响图
6.2.3 巴特沃斯低通滤波器的设计——冲激响应不变法
进行男声分离时,我们再采用基于冲激响应不变法的巴特沃斯低通滤波器进行滤波,同样设置通带截止频率为259Hz,阻带截止频率为400Hz,通带最大衰减为3dB,阻带最大衰减为30dB,采样频率为44100,再通过观察原始信号的频谱图,对比冲激响应不变法和双线性变化法哪个设计出的滤波器性能更好。
具体代码如下:
%% 基于冲激响应不变法的巴特沃斯低通滤波器的设计
% wp_1=259*2*pi;
% ws_1=400*2*pi;
% Rp_1=3;
% Rs_1=30;
% Nn_1=512;
% Fs_1=44100;
% [N_1,Wn_1]=buttord(wp_1,ws_1,Rp_1,Rs_1,'s');
% [z,p,k]=buttap(N_1);
% [Bap,Aap]=zp2tf(z,p,k);
% [b,a]=lp2lp(Bap,Aap,Wn_1);
% [bz,az]=impinvar(b,a,Fs_1);
% [H w]=freqz(bz,az,256);
% figure(2);
% plot(w,abs(H),'r');
% title('巴特沃斯低通滤波器');
% 滤波并画出滤波后音频信号的时域频域图
冲激响应不变法设计的巴特沃斯低通滤波器频响图,如下图6所示:
图6 冲激响应不变法设计的巴特沃斯低通滤波器频响图
6.2.4 巴特沃斯带通滤波器的设计
进行女声分离时,我们采用冲激响应不变法,设计巴特沃斯带通滤波器进行滤波,设置了通带左截止频率为1300Hz,通带右截止频率为1330Hz,阻带左截止频率为1000Hz,阻带右截止频率为1900Hz,通带最大衰减为1dB,阻带最大衰减为60dB,采样频率为44100,观察滤波器的频率响应图。
具体代码如下:
fp1=1300;fpu=1330;fs1=1000;fsu=1900;Fs_1=44100;
wp_2=[2*fp1/Fs_1,2*fpu/Fs_1];
ws_2=[2*fs1/Fs_1,2*fsu/Fs_1];
rp=1;
rs=60;
[N_1,wpo]=ellipord(wp_2,ws_2,rp,rs);
[B,A]=ellip(N_1,rp,rs,wpo);
[H,w]=freqz(B,A);
图7 冲激响应不变法设计的巴特沃斯带通滤波器频响图
6.2.5 经滤波后的男声语音时域频域图
调用filter函数来进行滤波,选取一定点数,绘制滤波后的时域波形图与频谱图。进行分离男声时,采用巴特沃斯低通滤波器进行滤波,其具体Matlab代码如下:
y1=filter(bz,az,X_1);
axes(handles.axes2)
subplot(211);
plot(y1);
title('滤除女声后的时某某');
subplot(212);
n1=length 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 n1=length(y2);
Y2=fft(y2,n1);
subplot(2,1,2);
plot(f_1,abs(Y2(1:n1/2)));
title('滤除女声后的频域图');
axis([0 3000 0 3000]);
% 放大男声
y3=y1*10;
axes(handles.axes4)
subplot(2,1,1);
plot(y3);
title('放大男声的时某某');
n1=length(y3);
Y3=fft(y3,n1);
subplot(2,1,2);
plot(f_1,abs(Y3(1:n1/2)));
title('男声放大后的频谱图');
axis([0 1000 0 5000]);
% 男声变调
axes(handles.axes5)
subplot(211);
plot(y1);
title('男声变调后的时某某');
subplot(212);
n1=length(y1);
Y1=fft(y1,n1);
plot(f_1,abs(Y1(1:n1/2)));
title('男声变调后的频域图');
axis([0 1000 0 2000]);
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《《数字信号处理课程设计》报告》的无排版文字预览,完整内容请下载
《数字信号处理课程设计》报告由用户“布鲁克里斯123”分享发布,转载请注明出处