黄 祎, 张得生
(1. 重庆电子工程职业学院 通信工程学院,重庆 401331;2. 黄淮学院 信息工程学院, 河南 驻马店 463000)
声源信号优化识别系统仿真研究
黄 祎1, 张得生2
(1. 重庆电子工程职业学院 通信工程学院,重庆 401331;2. 黄淮学院 信息工程学院, 河南 驻马店 463000)
针对现实环境中,大多数声音都存在于背景声源的干扰影响中,为了获得需要的声音,在频谱技术分析现有的声信号的基础上,开发出了基于Matlab GUI界面的混合声信号的可视化频谱分离系统。该系统软件可读取并存储采集到的声信号,然后通过分析,做出采集信号或者读取信号的时域图以及该信号的频谱图,通过对频谱图的分析,选择合适的滤波器,设定合理的频率范围,对混合信号进行分离,最终分离出需要的信号。通过对一段wav格式的音乐进行分析分离处理,验证了该系统的可行性以及正确性。
声信号; 分离技术; 滤波器; Matlab GUI
混合信号分离算法主要包括如下几种技术:正弦模型技术、计算听觉场景分析技术、模式识别技术、频谱滤波技术和非负矩阵分解技术等[1-11]。本文主要采用的则是基于Matlab GUI开发了频谱滤波技术对声卡采集到的声音信号进行信号分离的系统,并且通过本系统对音乐文件进行了测试和分析处理,取得了较好的效果,实现了将音乐原声和伴奏通过双声道相分离,验证了该系统的可行性。
声音信号和音乐信号通常都是具有谐波特性的,其音色也通常是与信号的阵列关系相关的[3]。那么声音信号可以通过滤波器进行重构,从而将其声音分离出来,完成本系统的功能。其频谱分析的算法通常是有两种的,这两种算法分别是:频谱抽取的分离算法,时域滤波的分离算法[2-3]。
1.1 频谱抽取的分离算法
频谱抽取的分离算法往往是针对单声道声音信号的,该算法首先采用STFT分析声音的结构,再使用ICA算法找到声音信号的功率谱和时变谱。由于每段频谱的结构是通过ICA算法得到的,因此,在进行信号分离之前,需要结合被分离声音信号的特征,对其频谱进行重新的构建和反变换,由此求出声音的分离信号[2]。一般情况下,基于频谱抽取的声音分离方法,需要按以下步骤进行:
(1) 混合声音信号的预处理,多基频检测;
(2) 利用选取合适的滤波器,结合待处理信号的高音频段的信息,选取相应的频谱成分进行信号分离;
(3) 逆变换分离后频谱得到分离乐音的时域信号。
1.2 时域滤波的分离算法
采用迭代算法,通过将重构系统信息函数最大化,也可以对重构的误差函数进行最小化处理,自定义重构信号的重构系数,来得到声音信号中各个不同声音源的重构信号。本算法在原理上,与频域滤波器的分离算法是基本相同的,只是在得到信号的结构后,将高斯-牛顿迭代算法加载到需要设计的频域滤波中去,将其转化为需要的时域滤波器,就可以直接对声音信号进行滤波,从而得到声信号的分离信号[3]。
2.1 过程描述[1,14-15]
频谱分析滤波的声信号的分离方法是根据被分离声音信号的波形信息,去寻找合适的滤波器,分离出需要的频谱信息。该算法的核心部分就是滤波器的设计。
图1 频谱分析技术的分离系统框图
本系统主要采用了两种滤波器的设计方法:低通滤波器和带阻滤波器。
2.2 低通滤波器的设计
低通滤波器的设计原理:可以除去信号中的高频噪声,对信号进行有限带宽处理[4,12-13]。其滤波性能可以采用传递函数H(s)表示:
(1)
式中,U1和U2分别为输入电压和输出电压。但是由于实际差异,需要对以上传递函数进行修正,从而制作出接近理想特性的实用滤波器。则式(1)可表示为:
(2)
其中:a、b为常数;m,n=1,2,3(m≤n);分母的多项式的幂n就是滤波器的阶数。若a1,a2,…,am均为0,则该滤波器为全极点滤波器。
而对于二阶的低通滤波器,若其截止频率为ω,则其全极点的传递函数可以表示为:
(3)
式中,B和C都是归一化的常数系数,其中ωt=1,这个函数中K表示增益。
由此,在使用Matlab设计滤波器时,可以采用下列语句来完成:
[b,a]=butter(4,ws,'low');
本系统采用的滤波器幅频特性曲线如图2所示:
图2 低通滤波器的幅频特性图
2.3 带阻滤波器的设计
带阻滤波器(又称陷波器)的作用是抑制某一频率信号而通过其他频率的信号。在Matlab中用[B,A]=Butter(N,Wn,′Stop′,′S′)语句来实现带阻滤波器,其中[B,A]是滤波器传递函数多项式的系数;N为滤波器的阶数;Wn=[Fl*2*PiFu*2*Pi]分别为阻带低端-3 dB和高端-3 dB处的角频率[5]。因此,本系统采用的带阻滤波器的幅频特性如图3所示。
图3 带阻滤波器的幅频特性图
根据本系统需要实现的频谱分析和信号处理功能,本文选择使用Matlab GUI作为声信号频谱分离系统的开发平台。
在Matlab GUI的平台下,可以设置各项菜单和按钮,并对其位置和功能属性进行编辑,同时可以自定义设置人机交互界面[6-8]。在完成人机交互界面的设计之后,需要对各菜单和按钮进行回调函数的编写,用以实现本系统应具备的功能[9-10,12]。
该系统主要由4大模块组成,即声音采集或加载模块、声信号的频谱分析模块、声信号分离模块和图形显示模块。图4介绍了声信号分离系统的运行流程图。
图4 声信号分离软件的运行流程图
3.1 声信号处理流程
先将WAV 格式音频信号经wavread 函数转换成Matlab列数组变量;再用Matlab强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite 转换成WAV 格式文件或用sound、wavplay 等函数直接回放。下面分别介绍Matlab 在声信号的采集或加载模块、声信号的频谱分析模块、声音分离模块、图形显示模块的实现。
3.2 声信号的采集或加载模块
在 “声信号的采集或加载”模块中,通过点击“录音”或“浏览”按钮,实现声卡采集声音并保存和读取现有的声音文件,其文件名显示在文本框中,见图5,同时在图形显示区域,显示出声音信号的时域图,以便为下面的频谱分析步骤做准备。
图5 Matlab GUI的声音频普分离系统界面
Matlab语句表述为:
function pushbutton3_Callback(hObject, eventdata, handles)
%调用声卡采集声音
y=wavrecord(1+str2double(get(handles.edit4,′String′))*Fs, Fs,′double′);
Y2=y;
%对采集到的声音进行保存
[FileName,PathName]=uiputfile(′*.wav′,′存储文件′);
wavwrite(y,Fs,[PathName,FileName]);
%文件的读取
[FileName,PathName]=uigetfile(′*.wav′,′选择播放文件′);
handles.tp=wavread(FileName);
3.3 信号的频谱分析模块
频谱分析模块主要功能有3部分:时域分析、频域分析和画出信号的频谱图。在完成声信号的加载以后,分别点击“时域分析”和“频域分析”后,在时域分析结果板块中会显示出结果,在频域分析结果中会显示出信号的周期和频率,在图形显示区域会显示出信号的幅频特性等信息。 在上述的各个控件中,写入实现其功能的回调函数。
3.4 声音分离模块
根据频谱模块分析的结果,选择点击“低通滤波器”或者“带阻滤波器”,会弹出相应的对话框,按要求写入截止频率,点击“分离并播放”,实现声音信号的分离。
Matlab语句表述为:
%低通滤波
function filter1_Callback(hObject, eventdata, handles)
value=inputdlg(prompt,dlg_title,num_lines,def);
F1=str2num(value{1});
ws=2*F1/40960;
[b,a]=butter(4,ws,'low');
%带阻滤波
function filter2_Callback(hObject, eventdata, handles)
value=inputdlg(prompt,dlg_title,num_lines,def);
F2=str2num(value{1});
F3=str2num(value{2});
ws=[2*F2/40960 2*F3/40960];
[b,a]=butter(4,ws,'stop','s');
若分离效果良好,则结束;若分离效果较差,则返回,根据频谱分析结果,重新选择滤波器和截止频率,进行再次分离,直到达到满意的分离效果为止。
3.5 图形显示模块
为了让该系统的人机交互界面更加直观,便于操作者选择合理的滤波形式,本系统加入了图形显示模块,而图形显示模块本身无需添加回调函数。其功能主要显示原声音信号的时域图、频谱图,同时分离完成后,也将分离结果显示出来。
实验中,对截取的一段音乐“God is a girl.wav”进行测试,时域、频域分析的结果见图6,其时域图、频谱图如图7所示。
图7 原音乐的时域图与频谱图
通过以上得到的对音乐的分析信息,运用频谱分析技术得出,可以采用截止频率为100 Hz的低通滤波器进行声音信号的分离,其分离出的伴奏时域、频谱图如图8所示。同时也可以采用低截止频率200 Hz、高截止频率1.0 kHz的带阻滤波器进行分离,其分离出的伴奏结果如图9所示。
图8 低通滤波器分离出伴奏的时域图与频谱图
通过验证,运用该软件分离出的伴奏达到了预期的效果,音质效果也符合要求。
由上述实验结果可以得以下结论:
(1) 肯定了频谱分析、滤波技术在声音分离处理中的可行性;
(2) 通过实验的验证,肯定了该声信号的频谱分离系统的正确性;
图9 带阻滤波器分离出伴奏的时域图与频谱图
(3) 通过实验测试,分离出了良好的伴奏效果,肯定了该系统软件的可用性。
本文详细介绍了声信号的频谱分离系统的工作原理,并且基于Matlab GUI设计了声信号频谱分离系统软件,提供了很好的人机交互性,通过对一段wav格式的音乐文件进行实际测试,验证了该软件系统的正确性和可行性。
[1] 李素平.混合乐音信号分离方法研究[D].济南:山东大学,2010.
[2] 苏 秦.基于声场景分析的混叠语音信号分离[D].苏州:苏州大学,2004.
[3] 赵 力.语音信号处理[M]. 北京:机械工业出版社,2009.
[4] 晏春海,田蔚风,王俊璞.巴特沃斯低通滤波器的设计[J].弹箭与制导学报,2003,23(S2):106-108.
[5] 王大伟,贾荣丛,王划一.基于Matlab的巴特沃斯滤波器设计[J].现代电子技术,2012,35(21):71-73.
[6] 赵文科,陈章龙,何秋生.汽车计算平台中信息系统的架构[J].计算机应用与软件,2009,26(8):244-246.
[7] 郭洪源,许维胜,余有灵.基于Matlab GUI的汽车外灯控制系统演示模型[J].计算机应用与软件,2012,29(2):187-189.
[8] 李 伟,赵建军,王 超.基于Matlab可视化界面的单缝衍射仿真分析[J].计算机应用与软件,2012,29(7):220-222.
[9] 陈垚光.精通Matlab GUI设计[M].北京:电子工业出版社,2011.
[10] 罗华飞.Matlab GUI设计学习手记[M].北京:北京航空航天大学出版社,2009.
[11] 李昌禄,郭威辰,苏寒松. 基于TDOA的声音定位系统[J].实验室研究与探索,2014,33(6):118-121.
[12] 易昆南,李 慧,赵澍源. 让枯燥无味的数学变得“有趣、有味、有惑”——Matlab中的音乐合成[J].实验室研究与探索,2014,33(6):114-117.
[13] 毛春静,关 永,刘永梅,等. 数字音乐合成器的研究与设计[J].计算机工程与应用,2009,45(6): 89-91.
[14] 谢志强,辛 宇,杨 静,等. 基于信号驱动的多批处理综合调度算法[J].计算机学报,2013,36(4):818-828.
[15] 朱俊敏,张 潇,王旌阳. 小波域音频信号降噪研究[J].计算机工程与应用,2014,33(6):149-154.
Simulation Study of Sound Source Signal Recognition System
HUANGYi1,ZHANGDe-sheng2
(1.School of Communication Engineering,Chongqing College of Electronic Engineering, Chongqing 401331, China;2.School of Information Engineering, Huanghuai University, Zhumadian 463000, China)
In real-world environment, most speech signals are interfered by noises originated from various sources. The authors developed a Matlab GUI-based visualized spectral separation system based on the existing spectral separation method of acoustic signals. The Matlab system first reads and stores the collected sound signals, presents the time- and frequency-domain spectrums, then compares the frequency spectrums, and elects an appropriate band filter to separate the required acoustic signals. The validity and feasibility of the system are verified by error analysis and an example of processing the measured data of a song in WAV format.
acoustic signal; separation technology; filter; Matlab GUI
2015-05-29
黄 祎(1980-),女,四川渠县人,硕士,讲师, 主要研究方向:信号与信息处理。
Tel.:13618297568,023-65926039;E-mail:huangyi8078@126.com
TP 391.9
A
1006-7167(2016)01-0068-04