燕丽红
(西安欧亚学院信息工程学院 西安 710065)
语音信号作为当今生活中最常用的信号被广泛引用[1~2],而语音信号在信息的传输过程中的可靠性、有效性以及其他的一些问题也都不断地出现,不断被学者去攻克,而如今大数据崛起标志新时代的到来,对语音信号的处理更是要求及时、有效,可靠[3~4]。因此,本文首先对语音信号进行分析,并模拟通信信道的噪声进行加噪声音的分析,进而设计合理的滤波器进行语音信号的回复,主要通过Matlab及GUI人机界面进行了语音信号的处理,对于实际语音信号分析具有很重要的指导作用,同时对于学生进行信号处理类课程的学习奠定了一定的基础。
本系统主要通过麦克风、录音软件等形式进行语音信号的采集,并根据采样定理进行语音信号的离散化处理,并模拟具体的通信信道进行加噪语音信号的产生,进行通过数字信号处理系统设计相关理论进行滤波器设计,进而实现原始语音的回复。系统实现框图如图1所示。
图1 典型的语音信号处理框图
audioread函数:读取MP3格式音频。
Freqz函数:计算线性系统的响应频率,包括幅频响应和相频响应。
rand函数:在某一信号中加入随机噪声。
cheb1ord函数:切比雪夫1型滤波器。
Filter函数:一维数字滤波器[5~8]。
首先通过格式工厂将自己的录音通过格式工厂进行转换成MP3,进而使用audioread函数进行调用并实现原始语音的产生。
fs=16000;
[x,fs,bits]=audioread(‘ 这 是 我 的 录 音 。mp3’);
play(x); %话音回放
N=length(x); % 计算信号x的长度
n=0:N-1;
figure(1);
plot(n,x1);%画出原始语音信号的时域波形
图2 原始语音和加噪语音时域、频域图
由于通信信道自带会有噪声,因此模拟信道进行随机噪声的产生[9],进而模拟带噪信号进行设计。
L=length(x);%计算音频信号的长度
n=0.04*randn(L,2);%产生等长度的随机噪声信号
x_z=x+n;%将两个信号叠加成一个新的信号——加噪声处理
sound(x_z);%对加噪后的语音信号进行分析
n=length(x);%选取变换的点数
x_zp=fft(x_z,n);%对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n;%对应点的频率
根据语音信号的特点,设计数字滤波器[10],对加噪后的语音信号进行滤波处理。
wp=0.01;ws=0.06;rp=1;rs=50;
[N4,Wc]=buttord(wp,ws,rp,rs);
[B,A]=butter(N4,Wc);
[Hd,w]=freqz(B,A);
图3 巴特沃斯过滤前后对比图
通过图形可以明显看出,采用巴特沃斯滤波器进行的语音信号处理很好地进行了还原。
结合语音信号处理的框图,通过GUI设计人机交互界面[11~12],方便用户进行原始信号,加噪信号,及滤波器设计等模块的设计,对不同的模块设计其相应的属性进行控件的设置,通过与Matlab产生的信号进行对比和设计,对于用户对信号的分析可以更有效和直观[13~15]。
首先在GUI界面中,构建人机交互界面,包含原始语音、加噪语音、滤波器实现方法(脉冲响应不变法、双线性变换法)及退出模块,通过设置控件属性,调整控件大小,设计的语音信号处理平台如图4所示。
图4 基于GUI的语音信号处理平台框架
function pushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton2(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
y1=fft(x1,512);
f=Fs*(0:511)/512;
Au=0.04;
wav_in=wav_in(:,1);
t=0:1/Fs:(size(x1)-1)/Fs;%将所加噪声信号的点数调整到与原始信号相同
d=[Au*cos(2*pi*5000*t)]';%噪声为 5kHz的余弦信号
x2=10*x1+d;
y2=fft(x2,512);
handles.x1=x2
guidata(hObject,handles);
axes(handles.axes2);
plot(t,x2)
title(‘加噪后的信号’);
图5 基于GUI的加噪语音信号的产生
%---Executes on button press in pushbutton3。
function pushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton3(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
global x1;
global x2;
global Fs;
global bits;
mc(x2,Fs,bits,hObject,handles)
%---Executes on button press in pushbutton4。
function pushbutton4_Callback(hObject,eventdata,handles)
%hObjecthandle to pushbutton4(see GCBO)
%eventdata reserved-to be defined in a future version of Matlab
%handles structure with handles and user data(see GUIDATA)
sx(x2,Fs,bits,hObject,handles)
图6 基于GUI的滤波器设计的原始语音信号的还原
语音信号处理作为信号处理的典型应用之一,如何有效、快捷地进行系统的设计和分析,是满足当今大数据处理时代要求高效、可靠的基本条件,本文通过Matlab进行语音信号的采集和处理,通过通过GUI界面设计了语音信号处理平台,方便用户进行系统有效的分析和处理。而在图形可视化界面设计过程中,还可以将其设计的滤波器系统保存为.txt文件,从而方便在其他平台上的数据处理和分析。这将对用户进行DSP处理器进行系统设计带来很大的便利,也将会是用户在工程应用上的一个有效的数据分析工具。